디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅅㅂㅜㅜ(115.20) 2010.10.28 06:05:49
조회 6628 추천 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/07/07 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45412 65
2871218 "네 여자친구 10분이면 꼬셔"..지인 폭행한 20대 징역형 발명도둑잡기(118.216) 22:49 6 0
2871216 이중 갈취로 '홀로캐시'(holocash) 뜯어낸 유대인 파워의 민낯 발명도둑잡기(118.216) 22:42 3 0
2871215 국내에만 29억개…무방비 IoT 기기, 사생활 유출 부른다 발명도둑잡기(118.216) 22:40 6 0
2871214 청혼 도중 폭포 아래로 추락…영상 확산에 누리꾼 '충격' 발명도둑잡기(118.216) 22:28 5 0
2871213 대동아냥덩권⭐ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 22:28 10 0
2871212 역대급 1위 터졌다…‘충격’에 휩싸인 일본 발명도둑잡기(118.216) 22:27 6 0
2871211 나도 코딩 개고수가 되고 싶어 [3] 아스카영원히사랑해갤로그로 이동합니다. 22:17 30 0
2871210 내일 칼럼 하나 쓸깡? 쓸 주제가 뭐 있을까낭? ♥로스트미디어냥덩이♥갤로그로 이동합니다. 22:12 12 0
2871208 주 1회 칼럼 써야하는댕,, ♥로스트미디어냥덩이♥갤로그로 이동합니다. 22:10 8 0
2871207 살 엄청 찌는 백종원피자 알바한 오해원 발명도둑잡기(118.216) 22:09 6 0
2871206 실존하는게 놀라운 지구상의 신비한 생물들 발명도둑잡기(118.216) 22:06 8 0
2871204 월 600 정도만 되어도 만족하겠다 아스카영원히사랑해갤로그로 이동합니다. 21:57 23 0
2871203 이효리, 달라진 예능 환경 언급 "10년 전 방송선 女 가슴 사이즈로 놀 발명도둑잡기(118.216) 21:28 18 0
2871202 친중좌파 2재명 탄핵운동행진⭐+ 가즈아앙 ♥로스트미디어냥덩이♥갤로그로 이동합니다. 21:27 13 0
2871201 [단독] “의리의 한소희”, 뒤늦게 알려진 미담…5천만원 상당 깜짝 선물 발명도둑잡기(118.216) 21:25 9 0
2871200 김충현의 죽음, 그날 그때 무슨 일이... "김충현은 어느 회사 직원이었 발명도둑잡기(118.216) 21:20 6 0
2871199 안녕하세요 선생님들 외주에 대해서 질문이 있습니다. 프갤러(119.192) 21:19 10 0
2871197 불과 한달만에 대한민국을 처참하게 망가뜨리고 잇는 2찢명 ♥로스트미디어냥덩이♥갤로그로 이동합니다. 21:11 9 0
2871195 SSD는 TRIM 동작하면 완전 복구 불가능이지 않나? [2] ㅆㅇㅆ(124.216) 21:09 22 0
2871193 드라마 <우리 영화> 재밌나요? 발명도둑잡기(118.216) 21:01 8 0
2871192 노래유튜버들은 롱런하기 힘든것같구나 [1] 헬마스터갤로그로 이동합니다. 20:52 22 0
2871191 현대차 비방글 올린 사람 아이디 rtOS인데 임베디드랑 관련있을지 모른다 발명도둑잡기(118.216) 20:52 28 0
2871190 오늘도 납골공원에 어르신들 바둑두시는구나 [4] 헬마스터갤로그로 이동합니다. 20:44 35 0
2871189 요즘시대에 스프링만으로는 살아남기 어렵지? [1] ㅇㅇ(118.235) 20:37 26 0
2871186 도로? ♥로스트미디어냥덩이♥갤로그로 이동합니다. 20:11 17 0
2871183 고졸 10년차 연봉 6500 질문받음 [4] 프갤러(14.51) 19:47 47 0
2871182 도로롱!! 이 세상을 구해조! ♥로스트미디어냥덩이♥갤로그로 이동합니다. 19:46 27 0
2871181 참 살기좋은나라 축복받은나라여 ㅋㅋㅋㅋ 뒷.통수한방(1.213) 19:39 16 0
2871180 싱글벙글 AI가 그린 코딩 고수...jpg [3] ㅇㅇ갤로그로 이동합니다. 19:25 51 0
2871179 나님 수학문제 내면 프갤에서 아무도 못맞춤 ㅇㅅㅇ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 19:25 21 0
2871178 지인 우연히 마주쳤는데 돈 얼마나 범?? [2] 프갤러(124.50) 19:23 36 0
2871177 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 19:22 15 0
2871175 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 19:14 14 0
2871173 2재명도 이렇게 되려나 ㅋㅅㅋ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 19:09 19 0
2871171 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥로스트미디어냥덩이♥갤로그로 이동합니다. 19:04 12 0
2871170 esp32용 구형 macos 에뮬레이터 발명도둑잡기(118.235) 19:01 14 0
2871169 지금까지 구직 사이트를 한 번도 써본 적이 없음. [2] 프갤러(211.234) 18:54 55 0
2871167 큰거 온당! ♥로스트미디어냥덩이♥갤로그로 이동합니다. 18:47 31 0
2871166 인물이 싫더라도 공은 공이고 과는 과인데 진짜 미안한데 두창이는 [1] ㅆㅇㅆ(124.216) 18:46 49 2
2871164 가장 간단한 8비트 6502 브레드보드 컴퓨터 [1] 발명도둑잡기(118.235) 18:43 21 0
2871163 전라도 홍어 기생충 [1] ♥로스트미디어냥덩이♥갤로그로 이동합니다. 18:42 24 0
2871162 이번 상법개정안은 이전에 IMF랑 OECD에서 권고했던 사안인데 ㅆㅇㅆ(124.216) 18:42 29 0
2871161 걍 좌우 떠나서 찢<<그나마 뭐 할려고 하는듯 임기초 괜찮아보이는데 ㅆㅇㅆ(124.216) 18:40 39 1
2871160 애플1 브레드보드 구현 [1] 발명도둑잡기(118.235) 18:38 22 0
2871159 '주학년 & 아스카 키라라' 영상 뜸 ㄷㄷㄷ 프갤러(211.58) 18:38 19 0
2871157 앞에 부러운 커플이 있네 [2] 발명도둑잡기(118.235) 18:33 40 0
2871156 '김계란 얼굴 공개했네요ㅋㅋ 프갤러(211.58) 18:29 31 0
2871155 씹덕 학원물 청춘 애니 보고 있는데 [2] 아스카영원히사랑해갤로그로 이동합니다. 18:29 44 0
2871152 근데 확실한 건 윤보다 찢이 낫다는 거임 [3] 아스카영원히사랑해갤로그로 이동합니다. 18:17 65 0
뉴스 밀레나, 오늘(11일) 첫 정규앨범 'Where to Begin' 발매! 전곡 작사·프로듀싱 참여 디시트렌드 07.11
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2