디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅅㅂㅜㅜ(115.20) 2010.10.28 06:05:49
조회 6624 추천 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/09/23 - -
공지 프로그래밍 갤러리 이용 안내 [73] 운영자 20.09.28 38062 62
2753884 하 시발 퇴근하고싶다 프갤러(118.235) 08:49 5 0
2753883 좆소충인데 퇴직금 못받게 생겼다 프갤러(211.234) 08:47 14 0
2753882 정처기 없으면 인간 말종이니 짤라야 된다 ㅇㅇ(118.235) 08:26 11 0
2753881 ㅈ소 거르는법좀 [3] ㅇㅇ(14.45) 08:12 26 0
2753880 학교 다니고 싶다 주아갤로그로 이동합니다. 07:54 9 0
2753879 서탈 알림오는거 [2] ㅇㅇ(14.45) 07:52 18 0
2753878 사회생활은 왜케 코드와 달리 불규칙하냐 프갤러(223.39) 07:18 21 0
2753873 프로그래머스 데브코스 왜 떨어짐 [1] 프갤러(39.115) 06:38 21 0
2753866 닌텐도처럼 기술특허잡아서 좀스럽게 힘 휘두르는거 프갤러(106.241) 06:15 14 0
2753857 이제 추워서 아침러닝 못 하겟오양.. ♥다이어트1일차냥덩♥갤로그로 이동합니다. 05:46 19 0
2753849 도대체 왜 경력 DBA공고에서 코딩테스트를 보는가... ㅇㅇ(125.176) 05:10 24 0
2753844 인생좆망한 고딩인데요 [5] 프갤러(1.249) 04:51 57 3
2753824 시간 많고 할 것도 많은데 의지가 없다 이시꾸갤로그로 이동합니다. 03:35 18 0
2753821 C++ 기본문법 어떻게 배움? [1] 프갤러(106.241) 03:25 33 0
2753803 미소녀 여자아이랑 짝프로그래밍하는 상상중 공기역학갤로그로 이동합니다. 02:20 28 0
2753802 우편번호는 왜쓰는거냐? [1] 헬마스터갤로그로 이동합니다. 02:19 26 0
2753801 각종 글로벌 IT기업에 돈을 헌납하고있다 헬마스터갤로그로 이동합니다. 02:18 33 0
2753800 열심히 하면 70%의 전공자는 따라 잡을수 있음. 프갤러(119.199) 02:16 49 0
2753796 인성 빻은 댓글은 칼차단이 답 아스카영원히사랑해갤로그로 이동합니다. 01:49 34 0
2753793 음기 충전 발명도둑잡기갤로그로 이동합니다. 01:46 19 0
2753791 Super Smash Bros. - 1950's Super Panavis 발명도둑잡기갤로그로 이동합니다. 01:36 13 0
2753790 인디개발 커뮤니티 디코하다보면 기혼자 존나많더라 ㅆㅇㅆ(124.216) 01:35 27 0
2753789 40년간 잊혔던 C64 언 Microtext 발명도둑잡기갤로그로 이동합니다. 01:32 21 0
2753787 I Made a tiny Nostalgic miniature PC for 발명도둑잡기갤로그로 이동합니다. 01:16 20 0
2753786 유니티 2DTopDown에서 액체구현 ㅆㅇㅆ(124.216) 01:09 23 0
2753785 SQL 왤케 재밌지 [5] 뉴진파갤로그로 이동합니다. 01:04 59 0
2753784 프론트, 백, DB 다 할줄 알면 풀스택임? [3] AED갤로그로 이동합니다. 01:04 66 0
2753783 상위 0.01% 다이아수저 고등학생이 한국에서 사는 법 발명도둑잡기갤로그로 이동합니다. 00:58 24 0
2753782 "세금 다 어디로 갔나 했더니"…전국민이 '분노'한 이유가 발명도둑잡기갤로그로 이동합니다. 00:57 18 0
2753780 빚을 내야 갈 수 있다는 디즈니월드 발명도둑잡기갤로그로 이동합니다. 00:47 13 0
2753779 HYLE - Toilet Paper 발명도둑잡기갤로그로 이동합니다. 00:39 11 0
2753778 일본 취업 유학 워홀 여행 오픈톡 ㅇㅇ(106.133) 00:29 18 0
2753776 ㅇㅅㅇ 류류(118.235) 00:21 12 0
2753775 정처기 붙으면 나 차단좀 풀어줘 ㅇㅅㅇ [1] 류3류(118.235) 00:18 40 0
2753774 야겜 만들어서 팔자 ㅇㅅㅇ [2] 류3류(118.235) 00:15 34 0
2753773 쯔꾸르로 겜 만들어볼까 했는데 [5] ㅇㅇ(106.101) 00:12 46 0
2753771 게임은 돈받고팧아야한다 [4] 멍청한유라ㅋ갤로그로 이동합니다. 00:10 46 0
2753770 게임 개발한다고 소설 작법서 읽는거=해외 개발자들이 젤 극혐하는거 ㅆㅇㅆ(124.216) 00:09 29 0
2753769 게임 개발해서 떼돈벌려고 전산수학 공부 시작함 ㅇㅇ갤로그로 이동합니다. 00:07 22 0
2753767 우리도 커밋하면 AI가 코드 리뷰해주더라 [4] 멍청한유라ㅋ갤로그로 이동합니다. 00:01 56 0
2753766 승부심 만든어서 3회차 붙으라는 큰그림임 ㅇㅅㅇ [1] 류3류(118.235) 00:01 22 1
2753765 3회차 정처기 붙고 프갤 한테 축하 받음 되잖아 ㅇㅅㅇ [1] 류2류(118.235) 09.23 26 1
2753764 내 하루 일과의 끝=오늘 짠 코드 GPT선생님한테 검사받기 [4] ㅆㅇㅆ(124.216) 09.23 38 0
2753763 그니까 회차는 붙자 멍유야 ㅇㅅㅇ [2] 류1류(118.235) 09.23 20 0
2753762 빨리 서버재기동을 끝내 이새끼야!!!!! 멍청한유라ㅋ갤로그로 이동합니다. 09.23 18 0
2753761 학부생 팀프로젝트 같은거 궁금한게 있습니다. [1] 프갤러(106.241) 09.23 20 0
2753760 난 이해해 정처기 없는 패배자들의 심리를 ㅇㅅㅇ [1] 류류(118.235) 09.23 22 0
2753759 멍유씨 crud 굴레의 연속입니까? [7] 쇼팬하우어갤로그로 이동합니다. 09.23 37 1
2753758 정처기 붙으면 나 차단좀 풀어줘 멍유야 ㅇㅅㅇ 류류(118.235) 09.23 18 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2