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 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 구현 천둥 제거 게임 상세 정보먼저 작은 메뉴를 표시하고 게임을 할지 여부를 선택하십시오.사용자가 종료를 선택하면 프로그램 실행이 끝나고, 사용자가 게임을 선택하면 지뢰 제거 위치 좌표를 입력하라는 메시지가 표시됩니다.사용자가 입력한 좌표가 바둑...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.