C 언어 구현 체인 테이블 탐식 뱀

본 논문 의 사례 는 C 언어 가 뱀 을 게 걸 스 럽 게 먹 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
C 언어 링크 로 쓴 탐식 뱀.

게임 내용 을 통 해 뱀 을 탐식 하 는 데 필요 한 기능 은 주로 이 몇 가 지 를 포함한다.
1.이동 커서 모듈
2.지도 모듈 과 기본 규칙 정보 인쇄
최고 점 파일 읽 기
3.초기 뱀 모듈 인쇄
인쇄 시 뱀의 초기 이동 방향 부여
4.음식 모듈 생 성
 1)、음식 이 지도 에서 생 성 되도록 보장
 2)、먹이 가 뱀 몸 에 나타 나 지 않도록
5.뱀의 생명 상태 판단 모듈
1)、벽 에 부 딪 혀 사망
2)신체 부위 에 머리 를 부 딪 혀 사망
6.실행 모듈
1)뱀 을 움 직 이게 한다
2)、버튼 에 따라 뱀의 이동 방향 변경
3)、점수 증가 에 대한 게임 난이도 증가
4)뱀 이 먹 을 것 을 먹 으 면 점수 가 증가한다
7.종료 모듈
벽 에 부 딪 히 거나 자신의 부위 에 부 딪 혀 사망 할 때 프로그램 을 종료 하고 점수 와 사상 최고 점 수 를 비교 하여 최종 적 으로 최고 점 수 를 갱신 합 니 다.
다음은 코드

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>//        
#include <windows.h>//    
#include <time.h>
#define W 1//      W:  S:  A:   D: 
#define S 2
#define A 3
#define D 4
/*
      
*/
typedef struct{
int x;
int y;
}place;//       
typedef struct ZB{
place data;
struct ZB *next;
}snake;//      
/*
      
*/
snake *head,*p,*q,*h;//
place food;//      
int score=0,bestscore,game_flag=0,ch,sleep=400;//    score    game_flag    ch    sleep
/*
    
*/
void gotoxy(int x,int y);//    
void map_creat();//          
void ini_snack();//     
void cre_food();//      
void live_jud_1();//          
void live_jud_2();//          
void move();//    
void rungame();//    
void gameover();//      
void changch();//    
int color(int c);//     
/*
      
*/
int color(int c)
{
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c); //      
 return 0;
}
void gotoxy(int x,int y)//    
{
 COORD pos;
 HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
 pos.X=x;
 pos.Y=y;
 SetConsoleCursorPosition(handle,pos);
}
/*
    
*/
void map_creat()//          
{
 FILE *fp;//            
 fp=fopen("score.1","r");
 fscanf(fp,"%d",&bestscore);//     
 fclose(fp);
 gotoxy(54,26);
 printf("Your Best Score : %d\t", bestscore);//      
 int i,j;
 for(i=0;i<48;i++)
 {
 gotoxy(i,0);
 printf("#");
 color(6);
 gotoxy(i,26);
 printf("#");
 color(6);
 }
 for(j=0;j<26;j++)
 {
 gotoxy(0,j);
 printf("#");
 color(6);
 gotoxy(48,j);
 printf("#");
 color(6);
 }
 gotoxy(54,10);
 printf("    :");
 gotoxy(54,12);
 printf("    :↑
"); gotoxy(54,14); printf(" :↓
"); gotoxy(54,16); printf(" :←
"); gotoxy(54,18); printf(" :→
"); gotoxy(54,20); printf(" 10"); gotoxy(54,22); printf(" "); gotoxy(54,24); printf(" ESC "); } /* */ void ini_snack()// { int i; /* */ head=(snake *)malloc(sizeof(snake)); head->data.x=48/2; head->data.y=26/2; head->next=NULL; h=head; for(i=1;i<=2;i++) { p=(snake *)malloc(sizeof(snake)); p->data.x=48/2+i; p->data.y=26/2; h->next=p; h=p; } p->next=NULL; /* */ h=head; while(h!=NULL) { gotoxy(h->data.x,h->data.y); color(5); printf("@"); h=h->next; } ch=W;// } /* */ void cre_food()// { srand((unsigned)time(NULL));// , time /* */ food.x=rand()%(48-2)+1; food.y=rand()%(26-2)+1; while(p!=NULL) { /* , */ if(p->data.x==food.x&&p->data.y==food.y) cre_food(); p=p->next; } gotoxy(food.x,food.y); color(1); printf("$");// } /* */ void live_jud_1()// { if(head->data.x==0||head->data.x==48||head->data.y==0||head->data.y==26)// { game_flag=1; gameover(); } } void live_jud_2()// { q=head->next; while(q!=NULL) { if(head->data.x==q->data.x&&head->data.y==q->data.y)// { { game_flag=2; gameover(); } break; } q=q->next; } } /* */ void move() { snake *l; live_jud_1(); l=(snake *)malloc(sizeof(snake)); /* , 10, 1 , */ if(ch==W) { l->data.x=head->data.x; l->data.y=head->data.y-1; if(l->data.x==food.x&&l->data.y==food.y) { l->next=head; head=l; q=head; while(q!=NULL)// { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } score+=10; cre_food();// } else { l->next=head; head=l; q=head; while(q->next->next!=NULL) { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } gotoxy(q->next->data.x,q->next->data.y); printf(" ");// free(q->next); q->next=NULL; } } if(ch==A) { l->data.x=head->data.x-1; l->data.y=head->data.y; if(l->data.x==food.x&&l->data.y==food.y) { l->next=head; head=l; q=head; while(q!=NULL) { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } score+=10; cre_food(); } else { l->next=head; head=l; q=head; while(q->next->next!=NULL) { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } gotoxy(q->next->data.x,q->next->data.y); printf(" "); free(q->next); q->next=NULL; } } if(ch==S) { l->data.x=head->data.x; l->data.y=head->data.y+1; if(l->data.x==food.x&&l->data.y==food.y) { l->next=head; head=l; q=head; while(q!=NULL) { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } score+=10; cre_food(); } else { l->next=head; head=l; q=head; while(q->next->next!=NULL) { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } gotoxy(q->next->data.x,q->next->data.y); printf(" "); free(q->next); q->next=NULL; } } if(ch==D) { l->data.x=head->data.x+1; l->data.y=head->data.y; if(l->data.x==food.x&&l->data.y==food.y) { l->next=head; head=l; q=head; while(q!=NULL) { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } score+=10; cre_food(); } else { l->next=head; head=l; q=head; while(q->next->next!=NULL) { gotoxy(q->data.x,q->data.y); color(5); printf("@"); q=q->next; } gotoxy(q->next->data.x,q->next->data.y); printf(" "); free(q->next); q->next=NULL; } } live_jud_2();// } void rungame()// { while(1) { gotoxy(54,8); printf("Your Score:%d",score); /* */ if(GetAsyncKeyState(VK_UP)&&ch!=S) ch=W; else if(GetAsyncKeyState(VK_DOWN)&&ch!=W) ch=S; else if(GetAsyncKeyState(VK_LEFT)&&ch!=D) ch=A; else if(GetAsyncKeyState(VK_RIGHT)&&ch!=A) ch=D; /* Sleep */ if(score>=50&&score<100) sleep=300; else if(score>=100&&score<300) sleep=250; else if(score>=300) sleep=200; if(GetAsyncKeyState(VK_SPACE))// space { while(1) { Sleep(300); if(GetAsyncKeyState(VK_SPACE)) break; } } else if (GetAsyncKeyState(VK_ESCAPE))// ESC { game_flag=3; gameover(); } Sleep(sleep); move(); } } /* */ void gameover()// { FILE *fp; system("cls");// gotoxy(48/2,26/2-2); printf("\tGame Over!!!");// gotoxy(48/2,26/2); if(game_flag==1) printf("\t !!!
"); else if(game_flag==2) printf("\t ! !!!
"); else if(game_flag==3) printf("\t !"); gotoxy(48/2,26/2+2); printf("\tYour score:%d
",score);// if(score>bestscore)// { fp=fopen("score.1","w"); fprintf(fp,"%d",score);// fclose(fp); } system("pause"); exit(0); } /* */ int main() { system("color 9"); map_creat(); ini_snack(); cre_food(); rungame(); return 0; }
더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기