디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

형들 산성비 타자게임 C로 만들구있는데 왜안나오는지 이해가 안됨 ㅜㅜ

ㅅㅂㅜㅜ(115.20) 2010.10.28 06:05:49
조회 6617 추천 0 댓글 3




#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

#define ENTER 0x0d  // ENTER 키 코드
#define ESC 0x1b  // ESCAPE 키 코드
#define BEL 0x07  // 벨 코드, putch(BEL)을 수행하면 삑 소리가 난다.
#define UPDATE_TIME 500 // 500 msec

void initialize();  // 변수 및 화면을 초기화 할 함수
void play_game();  // 게임의 진행 상태를 제어하는 함수
int  get_key();  // 키보드가 눌렸는지 검사하여 키 값을 입력하는 함수
void match(int);  // 입력한 키 값이 화면의 영문자와 일치하면 화면에서 지우는 함수
int update_screen(); // 화면을 갱신하는 함수
void clear_screen(); // 화면을 모두 공백으로 채우는 함수
void cursor_off();  // 커서를 없애는 함수
void gotoxy(int, int); // 화면에 출력할 위치를 설정하는 함수

unsigned char scr[25][80];
int game_state;
int update_time;
int score;

void main()
{
 initialize();  // 화면을 초기화 하고
 play_game();  // 게임을 시작한다.
}

// 게임을 진행하는 함수
void play_game()
{
int key;


while (game_state != 10) {
 key = get_key(); 
 
 if (key == ESC) game_state = 10;

 switch(game_state) {  // 게임의 상태에 따라 게임을 제어한다. 
 case 0: // 초기 상태
    if (key == ENTER) {  // ENTER 키가 눌려졌으면,
  game_state = 1;  // 상태를 1로 만들고,
  score = 0;  // 점수를 0으로 만들고
  clear_screen();  // 화면을 지운다.
  update_time = clock() + UPDATE_TIME; // 아래 참조
     }
     break;

 case 1: // 게임 진행 상태
// clock()은 호줄될 때마다 프로그램 수행 시간을 리턴하므로,, 500 msec가 지난 후 
// 조건이 true로 된다.
    if (clock() > update_time) { 
// 화면을 갱신하고, 영문자가 화면의 맨 아랫줄에 도달하면 1을 리턴한다.
  if (update_screen() == 1) { 
      game_state = 2; // 게임의 상태를 2로 만든다. - game over
  }
  // 다음 화면 갱신 시간을 설정한다.
  update_time = clock() + UPDATE_TIME;
     }
     if (key != 0) // 만일 키보드가 눌려졌으면,
  match(key); // 키 값과 화면의 영문자를 비교하여 화면에서 제거한다.
     break;
 case 2:  // 게임 종료
     gotoxy(20, 8); printf("G A M E   O V E R");
     gotoxy(20, 10); printf("당신의 점수는 %d점입니다.", score);
     gotoxy(20, 12); printf("게임을 다시 시작하려면 ENTER를 치세요.");
     game_state = 0; // 게임 상태를 0으로 만들어 다시 시작한다.
     break;
 }
}
}

// 4. 입력된 키 값과 화면의 영문자를 비교하여 제거하는 함수
// 입력 파라미터 k는 입력된 키 값이다.
void match(int k)
{
 int y,x;
 if(k >= 0x61)
 {k = k-0x20;}
 for(y=23;y>=0;y--)
 {
  for(x=0;x<=80;x++)
  {
   if(k==scr[y][x])
   {
    scr[y][x] = 0;
    score++;
   }
   
  }
 }
 
// 일치하는 영문자가 없으면, 삑 소리를 출력한다. - putch(BEL);\\\\\\

}


 


// 3. 화면을 갱신하는 함수
// 화면에 새로운 영문자를 추가하고, 화면의 영문자들을 한 칸씩 아래로 내린다.
// 맨 아랫줄에 영문자가 도달하면, 1을 리턴하여 게임 상태를 변경한다.
int update_screen()
{
 int  q,t,a,x,y,z,ret=0;
 for(y=23;y>=0;y--)
 {
  for(x=0;x<80;x++)
  {
   if(scr[x][y]!=0)
   {
    if(y=23) 
    {
     ret = 1;
     break;
    }
    a=y;
   
    t=scr[x][a];
    scr[x][a-1]=t;
    scr[x][a] = 0;
   }
  }
 }
 q=rand()%80;
 z=rand()%26;

  scr[0][q]=0x41+z;
  ret=0;

  for(y=23;y>=0;y--)
 {
  for(x=0;x<80;x++)
  {
   if(scr[x][y]!=0)
   {
    putch(scr[x][y]);    
   }
  }
 }
  return ret;
}

 // 리턴할 변수의 값을 0으로 만든다.

 //     리턴할 변수의 값을 1로 만든다

 // 마지막으로 리턴 변수를 리턴한다.



void clear_screen()
{
 
 int x,y;
 for(y=0;y<24;y++)
 {
  for(x=0;x<80;x++)
  {
   gotoxy(x,y); printf(" ");
  }
 }
}


void initialize()
{
 srand(time(NULL));
 cursor_off();
    game_state = 0; 
    
gotoxy(24, 10); printf("====== 타 자 연 습 ======");
gotoxy(20, 12); printf("게임을 시작하려면 ENTER를 치세요.");
}


int get_key()
{
int key; //  local 변수

key = 0; // 일단 key 값을 0으로 만든다.
if ( _kbhit() ) 
{  // 만일 키보드가 눌려졌으면,
 gotoxy(25, 40);
 key = _getch();  // 키 코드를 읽는다.
 if (key == 0xe0)
 {  // function key가 눌려졌다면
     key = _getch(); // 키 코드를 다시 읽는다.
     key = 0x1000 + key; // 0x1000을 더하여, function key가 눌려졌음을 표시한다.
 }
 

return key;    
}

void gotoxy(int x, int y)
{
 COORD Pos = { x, y };
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

void cursor_off()
{
 CONSOLE_CURSOR_INFO Coff = { 100, 0 };
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &Coff); 
}

이게 소슨데 뭔가 부족한걸 느끼는데 어딘지 모르겠어 ㅜㅜ

능력자형들 부탁해 ㅜㅜ

조공짤올림

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
221338 Limit 2:13 [2] 캐꼬꼬닭(112.216) 10.11.30 50 0
221337 Gromit횽 소환!!! [5] 은행강도갤로그로 이동합니다. 10.11.30 54 0
221336 c열혈강의 책 따라하다가 질문 드립니다 ㅠ [16] c개초보(180.230) 10.11.30 180 0
221334 횽들 c++ char형 끼리 비교 하려면 연산자 뭐써야되??? [13] 하하하(165.246) 10.11.30 1050 0
221333 현재 중2인데요 C언어 마스터하고 C++들가는데여 [8] (220.72) 10.11.30 177 0
221332 넷빈즈 씨바 [3] 고칼로리갤로그로 이동합니다. 10.11.30 88 0
221330 인셉션 재밌따. [5] Gromit갤로그로 이동합니다. 10.11.30 84 0
221329 unset( $Vita500 ); [3] 캐꼬꼬닭(112.216) 10.11.30 64 0
221328 삼성싹다쓰 rapidant [3] 다람쥐v갤로그로 이동합니다. 10.11.30 430 0
221327 캐꼬꼬닭 상담기록 뿌림 [2] Vita500갤로그로 이동합니다. 10.11.30 87 0
221326 반도의 평범한 덕후 [4] ㅇㅇㅃ갤로그로 이동합니다. 10.11.30 98 0
221325 해일리 인증샷 뿌림 [1] 캐꼬꼬닭(112.216) 10.11.30 132 0
221324 모르는 횽들을 위해 하나 말해줄게 [2] 해일리갤로그로 이동합니다. 10.11.30 78 0
221323 모르는 횽들을 위해 하나 말해줄게 [3] elwlwlwk갤로그로 이동합니다. 10.11.30 74 0
221320 아쒸. 금요일날 주문한 책이 왜 아직 안오지? [6] 한강구조견(59.6) 10.11.30 93 0
221319 배열 이름이 포인터랑 같다는데 므슨말이야? [6] C늅늅E(218.154) 10.11.30 88 0
221318 플밍 언어중에 가장 돈을 많이 벌어다주는 언어는 php 예요. [4] 캐꼬꼬닭(112.216) 10.11.30 136 0
221317 사수랑 같은 커뮤니티라니... [1] 아주아슬갤로그로 이동합니다. 10.11.30 97 0
221314 c 안배운다음 넘어가고 오브젝트c 배우면 안되냐 [4] ㅇㅇ(115.140) 10.11.30 76 0
221313 C에서 getch()로 입력받으면 자꾸 문자형으로 입력받아짐. [16] C늅늅E(218.154) 10.11.30 144 0
221312 노래 한곡 듣고 갑시다.. [2] 캐꼬꼬닭(112.216) 10.11.30 64 0
221311 MW2할사람? [3] elwlwlwk갤로그로 이동합니다. 10.11.30 42 0
221309 사수랑 같은 커뮤니티하면 웃긴듯 ㅋㅋㅋㅋㅋ [15] 해일리갤로그로 이동합니다. 10.11.30 186 0
221308 프갤 횽들 API에서 랜덤하게 움직이게 어떻게 하나요?? [3] 랜징징갤로그로 이동합니다. 10.11.30 91 0
221306 dict 파일이랑 idx 화일의 데이터 읽어내는 법 좀 알려주세요. gcc짜장짱(119.202) 10.11.30 271 0
221305 스티브잡스가 프로그래머가 아니라는데 [4] elwlwlwk갤로그로 이동합니다. 10.11.30 222 0
221304 40만원짜리 AVR보드 득템했다 ㅋㅋ [2] .3(124.137) 10.11.30 149 0
221303 09 [1] rntjr갤로그로 이동합니다. 10.11.30 86 0
221302 바다 뭐 교육있어?, [1] 초밥술사갤로그로 이동합니다. 10.11.30 65 0
221299 애플아 너의 패턴은 모두 간파했당 [2] 분당살람갤로그로 이동합니다. 10.11.30 93 0
221297 프로젝트가 미쳐간다 [8] 땡칠도사갤로그로 이동합니다. 10.11.30 189 0
221295 삭니 음모론 [3] 캐꼬꼬닭(112.216) 10.11.30 113 0
221293 껐다 키기가 귀찮아 [2] JasonHan갤로그로 이동합니다. 10.11.30 52 0
221292 VS C# 환경에서 사용하는 컴퓨터의 사양을 불러올수도 있습니까? [1] 폭행차단갤로그로 이동합니다. 10.11.30 270 0
221291 디시는 왜 고정닉 이딴걸 만들어ㅕㅆ냐 [5] 김늅늅(61.40) 10.11.30 104 0
221290 아이패드는 허세 머신으로도 실패임 [5] 분당살람갤로그로 이동합니다. 10.11.30 146 0
221288 아이패드 64g 잠깐 써보고 느낀 생각 [4] 분당살람갤로그로 이동합니다. 10.11.30 255 0
221287 자바 String 질문좀 ㅠㅠ(쪼금 난이도있는거같아요) [11] 자바고수형들(220.68) 10.11.30 134 0
221283 엡스토어 하면서 느낀건데.. 적이되고싶은가갤로그로 이동합니다. 10.11.30 62 0
221282 어제 택시기사 ㅈㄹ 불친절... [3] 한강구조견(59.6) 10.11.30 134 0
221280 흠... 삼성 바다플랫폼 어플만들어주면 돈좀 만지려나. [2] 한강구조견(59.6) 10.11.30 149 0
221279 형들 안녕 [3] 양파밭갤로그로 이동합니다. 10.11.30 68 0
221278 횽들 안녕? win7의 programs files에대한 궁금한게 생성됐어. [10] Gromit갤로그로 이동합니다. 10.11.30 140 0
221276 구석횽 긴급 소환... [3] 물속의다이아갤로그로 이동합니다. 10.11.30 69 0
221274 내일 모레... [3] 에필로스갤로그로 이동합니다. 10.11.30 92 0
221273 배고프다. [1] 머그컵갤로그로 이동합니다. 10.11.30 33 0
221272 블루스크린 stop 0x0000000ea ㅠㅠ [10] da(125.191) 10.11.30 233 0
221271 정열의 나라 브라질 상파울로 이쁜 여자 이야기 [3] 물속의다이아갤로그로 이동합니다. 10.11.30 329 0
221270 아틀란타 거지 적선 + 관광 이야기 [2] 물속의다이아갤로그로 이동합니다. 10.11.30 174 0
221268 미쿡 시골 호텔에서 프론트 여자가 운 이야기 [2] 물속의다이아갤로그로 이동합니다. 10.11.30 129 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2