c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

恕我直言贪吃蛇这个游戏虽小但涉及的方面还是不少的,想要做一个完整的贪吃蛇100行应该不好实现。

建议楼主试试这个。

#include

#include

#include

#include

#define U 1

#define D 2

#define L 3

#define R 4 //蛇的状态,U:上 ;D:下;L:左 R:右

typedef struct SNAKE //蛇身的一个节点

{

int x;

int y;

struct SNAKE *next;

}snake;

//全局变量//

int score=0,add=10;//总得分与每次吃食物得分。

int status,sleeptime=200;//每次运行的时间间隔

snake *head, *food;//蛇头指针,食物指针

snake *q;//遍历蛇的时候用到的指针

int endgamestatus=0; //游戏结束的情况,1:撞到墙;2:咬到自己;3:主动退出游戏。

//声明全部函数//

void Pos();

void creatMap();

void initsnake();

int biteself();

void createfood();

void cantcrosswall();

void snakemove();

void pause();

void gamecircle();

void welcometogame();

void endgame();

void gamestart();

void Pos(int x,int y)//设置光标位置

{

COORD pos;

HANDLE hOutput;

pos.X=x;

pos.Y=y;

hOutput=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hOutput,pos);

}

void creatMap()//创建地图

{

int i;

for(i=0;i<58;i+=2)//打印上下边框

{

Pos(i,0);

printf("■");

Pos(i,26);

printf("■");

}

for(i=1;i<26;i++)//打印左右边框

{

Pos(0,i);

printf("■");

Pos(56,i);

printf("■");

}

}

void initsnake()//初始化蛇身

{

snake *tail;

int i;

tail=(snake*)malloc(sizeof(snake));//从蛇尾开始,头插法,以x,y设定开始的位置//

tail->x=24;

tail->y=5;

tail->next=NULL;

for(i=1;i<=4;i++)

{

head=(snake*)malloc(sizeof(snake));

head->next=tail;

head->x=24+2*i;

head->y=5;

tail=head;

}

while(tail!=NULL)//从头到为,输出蛇身

{

Pos(tail->x,tail->y);

printf("■");

tail=tail->next;

}

}

int biteself()//判断是否咬到了自己

{

snake *self;

self=head->next;

while(self!=NULL)

{

if(self->x==head->x && self->y==head->y)

{

return 1;

}

self=self->next;

}

return 0;

}

void createfood()//随机出现食物

{

snake *food_1;

srand((unsigned)time(NULL));

food_1=(snake*)malloc(sizeof(snake));

while((food_1->x%2)!=0) //保证其为偶数,使得食物能与蛇头对其

{

food_1->x=rand()%52+2;

}

food_1->y=rand()%24+1;

q=head;

while(q->next==NULL)

{

if(q->x==food_1->x && q->y==food_1->y) //判断蛇身是否与食物重合

{

free(food_1);

createfood();

}

q=q->next;

}

Pos(food_1->x,food_1->y);

food=food_1;

printf("■");

}

void cantcrosswall()//不能穿墙

{

if(head->x==0 || head->x==56 ||head->y==0 || head->y==26)

{

endgamestatus=1;

endgame();

}

}

void snakemove()//蛇前进,上U,下D,左L,右R

{

snake * nexthead;

cantcrosswall();

nexthead=(snake*)malloc(sizeof(snake));

if(status==U)

{

nexthead->x=head->x;

nexthead->y=head->y-1;

if(nexthead->x==food->x && nexthead->y==food->y)//如果下一个有食物//

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //如果没有食物//

{

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf(" ");

free(q->next);

q->next=NULL;

}

}

if(status==D)

{

nexthead->x=head->x;

nexthead->y=head->y+1;

if(nexthead->x==food->x && nexthead->y==food->y) //有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //没有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf(" ");

free(q->next);

q->next=NULL;

}

}

if(status==L)

{

nexthead->x=head->x-2;

nexthead->y=head->y;

if(nexthead->x==food->x && nexthead->y==food->y)//有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //没有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf(" ");

free(q->next);

q->next=NULL;

}

}

if(status==R)

{

nexthead->x=head->x+2;

nexthead->y=head->y;

if(nexthead->x==food->x && nexthead->y==food->y)//有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //没有食物

{

nexthead

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

c语言如何编写贪吃蛇小游戏基础?

1、游戏开始界面进行一个简单的展示,

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

2、选择1进入游戏,可以看到左面的游戏界面,还有旁边的说明模块

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

3、如果死掉的话,游戏就会结束,就会有选择阶段。

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

4、选择2,进行游戏的说明,需要对界面的设置,还有清屏等功能。

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

前期准备阶段

1首先,我们需要做一个蛇的身体,就是在界面上显示一条蛇的样子。

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

2下面是代码展示模块,通过输出语句组成了我们想要的蛇的样子。

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

3我们需要一个开始界面所以现在来绘制开始游戏界面

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

4画出开始游戏菜单的边框

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

5画出游戏菜单中间的字体以及选项框

c语言贪吃蛇最简单代码50行,用C语言,能在100行之内实现贪吃蛇吗?

"

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论