디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅅㅂㅜㅜ(115.20) 2010.10.28 06:05:49
조회 6627 추천 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 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45135 65
2869440 저녘 ㅇㅅㅇ [1] 류류(118.235) 20:32 5 0
2869438 업뎃) 동일 안전성 목표 하의 코드 비교 - Rust vs. Ada/.. 루비갤로그로 이동합니다. 20:05 15 0
2869437 7 [1] ㅇㅇ(106.101) 20:02 15 0
2869435 나님 리짜이밍 덕분에 집값 폭등즁 ㅎㅅㅎ ♥냥덩이♥갤로그로 이동합니다. 19:59 15 0
2869431 냉정하게 23살이면 아직 기회있다고 보는게 맞는 나이임?? [2] ㅇㅇ(223.38) 19:44 23 0
2869429 미국 스타일 여성분 마주쳤다 [2] 헬마스터갤로그로 이동합니다. 19:41 25 0
2869427 ㅁㅌ겠네.. 러빠들 파닥파닥 날뛰면서 개난리칠거 예상된다. 루비갤로그로 이동합니다. 19:35 15 0
2869424 그러니까 무조건 러스트만을 찬양/옹호할게 아니라 루비갤로그로 이동합니다. 19:23 13 1
2869423 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 19:23 11 0
2869422 부록 B: 동일 안전성 목표 하의 코드 비교 - Rust vs. Ada/ [2] 루비갤로그로 이동합니다. 19:19 10 0
2869420 러스트 빠 주장 분석: C언어도 stdio를 못 쓰는가? 루비갤로그로 이동합니다. 19:16 16 1
2869418 c++ 집에있는 책 펴봤느데 c++11기반 이네 [1] 프갤러(114.205) 19:06 24 0
2869417 새끼길냥덩 주울깡? ♥냥덩이♥갤로그로 이동합니다. 19:04 21 0
2869416 CPP 배울거면 그나마 스콧 메이어 책 이펙티브 모던C++봐야하는데 [4] ㅆㅇㅆ(124.216) 19:04 33 0
2869415 c는 임베디드에서 stdio쓸 수 있는줄 아나봄 프갤러(42.22) 19:03 19 0
2869414 백악관이 rust ada 등 메모리안전 언어를 추천하는 가운데 kyle이 [1] 발명도둑잡기(118.216) 19:01 24 0
2869413 c와 런타임라니브러리 합친 크기와 동일 기능하는 러스트 프로그램 실행파일 발명도둑잡기(118.216) 18:59 14 0
2869412 임베디드 시스템 및 리눅스 커널 적용의 실제적 제약 (바이너리, ABI 루비갤로그로 이동합니다. 18:58 18 0
2869411 내일 내가 만든 임베디드 시연하러 가야함 [1] 프갤러(211.234) 18:56 28 0
2869410 CPP는 책으로 배우면 잘못 입문한다. [6] ㅆㅇㅆ(124.216) 18:49 57 1
2869409 임베디드에서 동적링킹 쓰나 [5] 발명도둑잡기(118.216) 18:49 38 0
2869408 부록 A: ‘합리적 비판’에 대한 ‘비이성적 반응’ 사례 연구 루비갤로그로 이동합니다. 18:49 12 0
2869407 안되겠다. 자짤을 톡시한 크랩랭으로 복귀해야겠다. 프갤러(42.27) 18:49 11 0
2869406 나님 왤케 특별하실깡? ♥냥덩이♥갤로그로 이동합니다. 18:48 14 0
2869405 동적 링크는 시스템에 미리 그 라이브러리가 통째로 설치되어 있어야돼 [1] 프갤러(42.27) 18:46 21 0
2869404 행님들 C++입문할라는데 입문서 + 코딩문제집 동시에 보는거어 [2] 프갤러(123.142) 18:42 16 0
2869403 러빠하는 얘기보면 '동정 링킹'의 개념을 아예 모르는거 같음. ㅎㅎ [1] 루비갤로그로 이동합니다. 18:28 27 0
2869402 전공자 LG 유플러스 부트캠프 어떨까요?? [3] 프갤러(218.50) 18:27 33 0
2869401 보석아. 너는 지금 동적 링크가 어떻게 동작하는지도 모르고 있는거야. [1] 프갤러(27.177) 18:25 35 0
2869400 내가 llm 조련하는거 보고가~~[위 러빠 얘기도 넣어 업뎃함] 루비갤로그로 이동합니다. 18:24 21 1
2869399 그 보석새끼 또 임베디드 바이너리 크기 타령하네 ㅋㅋ 프갤러(223.33) 18:21 21 0
2869398 냥덩너무조와? [3] ♥냥덩이♥갤로그로 이동합니다. 18:04 33 0
2869397 네이버 카페가 안들어가짐 프갤을 잘 되는데, [1] 넥도리아(121.139) 18:04 15 0
2869396 ㅆㅇㅆ아 그건 너 말이 맞다. [2] 루비갤로그로 이동합니다. 17:59 46 1
2869395 지금 netstat, tasklist 결과 [2] 발명도둑잡기(118.216) 17:51 40 0
2869394 커뮤니티 사이트 회원가입 빡세게 해놓는 이유...txt ㅇㅇ갤로그로 이동합니다. 17:48 21 0
2869393 나는 근데 루비보면서 LLM의 무서운점을 느낌. [4] ㅆㅇㅆ(124.216) 17:47 46 2
2869392 ㅆㅇㅆ 고맙다. 어제 마니 까줘서 보강했어 [2] 루비갤로그로 이동합니다. 17:43 33 1
2869391 애들아 메모리쪽 공부해 [6] 프갤러(106.101) 17:31 89 1
2869390 갤에 러까 글 진지하게 읽는 사람 있음? [3] 프갤러(218.154) 17:30 37 0
2869389 추억의 만찐두빵⭐+ ♥냥덩이♥갤로그로 이동합니다. 17:29 19 0
2869388 러스트 혹세무민 = 곡학아세 + 오만 + 기만 루비갤로그로 이동합니다. 17:29 15 1
2869387 에필로그: 러스트 신화는 막을 내린다 루비갤로그로 이동합니다. 17:24 18 0
2869386 지금까지 나 신고한 새끼들 나중에 싸그리 신고해서 추적한다 [1] 발명도둑잡기(118.216) 17:23 26 0
2869385 배달의민족 배달료 중앙값 표시 항의 발명도둑잡기(39.7) 17:20 23 0
2869384 제5장: 러스트의 설계, 혁신인가 결함인가? 루비갤로그로 이동합니다. 17:18 30 0
2869383 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 17:16 15 0
2869382 1400줄 추가 1000줄 삭제하고 돌렸는데 ←Backspace갤로그로 이동합니다. 17:14 34 0
2869381 가끔 코딩이 뭘까 싶기도하다. 코딩이라는 무형적 지식은 [6] ㅆㅇㅆ(124.216) 17:11 57 0
뉴스 김연아, ♥고우림과 럽스타 시작…“지금껏 참아왔다” 분노한 이유는 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2