디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅅㅂㅜㅜ(115.20) 2010.10.28 06:05:49
조회 6626 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 현역으로 군대 안 간게 의아한 스타는? 운영자 25/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
348858 복지에 대한 편견. [11] ㅇㅇ(119.203) 13.03.11 107 0
348857 리눅스에서 api나 mfc 공부는 불가능한가? [5] 입에붙는거갤로그로 이동합니다. 13.03.11 98 0
348855 선진국들 복지가 좋은건, [6] ㅇㅇ(119.203) 13.03.11 144 0
348854 요즘같은 핵가족 시대에, 외국 생활이라. [3] ㅇㅇ(119.203) 13.03.11 84 0
348852 이거 공부할까 저거 공부할까 망설여질 땐, [1] ㅇㅇ(119.203) 13.03.11 69 1
348851 니들 갤질할 시간이면 [2] ㅇㅇ(119.203) 13.03.11 72 0
348848 제일 유망한 언어를 알려주마.. [3] ㅇㅇ(119.203) 13.03.11 207 0
348847 자바해봤자. 한국IT시스템의 노예가 될뿐이야.. [3] ㅋㅋㅋ(1.231) 13.03.11 149 0
348843 제가 컴공3년제인데요 [1] 전문대생2(221.154) 13.03.11 144 0
348841 실무에서 static 전역변수 자주쓰임? [4] 12(59.18) 13.03.11 130 0
348840 춥고 손시렵다 에어로홍갤로그로 이동합니다. 13.03.11 32 0
348839 nodejs 공부할 가치있냐? [2] ㅋㅋㅋ(1.231) 13.03.11 130 0
348838 "북한이…" 정몽준의 무서운 경고 에어로홍갤로그로 이동합니다. 13.03.11 70 0
348837 애들아 형 큰일났다. [3] ㅇㅇ(115.92) 13.03.11 107 0
348836 전문대 1학년인데요 [1] 전문대생(221.154) 13.03.11 83 0
348831 오피녀 예약 관리 프로그램 만들었는데 [3] ㅁㅇㄴㅇㅁㄴ(59.11) 13.03.11 150 0
348829 딸바보가 될 수 밖에 없는 이유 (19금 아청법 경고) 멍청닭(182.211) 13.03.11 99 0
348828 시스템엔지니어 vs 네트워크 엔지니어 vs jsp 개발 [4] dd(210.205) 13.03.11 329 0
348827 비쥬얼 스튜디오 2010 C++ 익스프레션 키등록도 했는데 [1] 미샤(211.104) 13.03.11 51 0
348825 MFC 코드흐름 하고있는데 [5] 미샤(211.104) 13.03.11 85 0
348821 판문점 닫았다는데? [1] 이모군(175.114) 13.03.11 62 0
348820 좃문대 나와도 공부 열심히 하면 짱짱맨 될수있나요? [4] 좃문대생(221.154) 13.03.11 113 0
348819 게임 개발 관련 커뮤니티 질문 [1] ㄴㄴ(39.7) 13.03.11 60 0
348816 공룡책 삿다 질문받는다 [1] (39.7) 13.03.11 84 0
348815 매일 근무일지 쓰는 분 있나요? [1] 에어로홍갤로그로 이동합니다. 13.03.11 103 0
348814 친구가 계속 지네 회사 오라고 하는데 짜증 폭발 [1] 멍청닭(182.211) 13.03.11 151 0
348813 정보처리기사 13개나 틀렸네 dot(113.30) 13.03.11 78 0
348812 이클립스 도움좀 부탁함 [1] 이지 포우갤로그로 이동합니다. 13.03.11 72 0
348811 피곤 [1] 루비•‿•갤로그로 이동합니다. 13.03.11 58 0
348810 주운 산삼 6뿌리 '꿀꺽'…50대 경찰 신세 에어로홍갤로그로 이동합니다. 13.03.11 74 0
348806 귀찮 백이(112.155) 13.03.11 23 0
348805 야 MFC+소켓으로 짤만한거 뭐있냐? [2] asdasd(112.172) 13.03.11 81 0
348804 IT노조 성명 "무임금 초과근로 강력 대응할 것" [12] 에어로홍갤로그로 이동합니다. 13.03.11 276 0
348803 전쟁이다 전쟁!! [4] MEECL(218.232) 13.03.11 156 0
348802 게임메모리진짜 개골치아프당..좀 잘되있는책없나 [9] 흐밍..(211.237) 13.03.11 158 0
348800 자라 [1] 루비•‿•갤로그로 이동합니다. 13.03.11 72 0
348799 우분투에서 gedit 쓸때.. 입에붙는거갤로그로 이동합니다. 13.03.11 68 0
348798 야 얘들아 웹디지망 게이다 어떠냐? 1234(211.189) 13.03.11 42 0
348795 횽들 백스페이스가 wb(원 표시를 써도 표시가 안되네) 아니야? 김삼디(110.9) 13.03.11 50 0
348788 퇴갤함 [1] 백이(112.155) 13.03.11 37 0
348787 정석보라는게 무슨말인가요? [5] Savior(182.210) 13.03.11 91 0
348785 호구프로그래머는 취직률 백프로임 [2] LastCorona갤로그로 이동합니다. 13.03.11 199 0
348784 C#시작한지 1시간도안된 씹창쓰레기 구원좀요 [9] (112.171) 13.03.11 178 0
348783 야 이번 한미 합동훈련에. 미국이 핵추진 항공모함 참여할 수도 있데 MEECL(218.232) 13.03.11 46 0
348782 형들 뉴비 인사드려요. [5] Savior(182.210) 13.03.11 65 0
348781 가성 음역대로만 뽑은 대한민국 가수들 MEECL(218.232) 13.03.11 52 0
348780 한미 연합군이 북한 선제공격해서 [2] 에어로홍갤로그로 이동합니다. 13.03.11 115 0
348779 이것도 들어라 [7] MEECL(218.232) 13.03.11 104 0
348778 누가 나 취직좀 시켜주라 [6] nra(221.144) 13.03.11 194 0
348777 월요일이다 [1] 루비•‿•갤로그로 이동합니다. 13.03.11 55 0
뉴스 A2O MAY, 美 ‘미디어베이스 TOP 40 차트’ 35위…연속 차트 진입 ‘신기록’ 디시트렌드 07.01
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2