贪吃蛇代码?C语言课程设计

发表时间:2017-02-28 08:48:01浏览:68次

在上一篇文章中,小编为您详细介绍了关于《新增禁止追踪功能?苹果Safari浏览器》相关知识。 本篇中小编将再为您讲解标题贪吃蛇代码?C语言课程设计。

#define N ②⓪⓪

#include graphics.h

#include stdlib.h

#include dos.h

#define LEFT ⓪x④b⓪⓪

#define RIGHT ⓪x④d⓪⓪

#define DOWN ⓪x⑤⓪⓪⓪

#define UP ⓪x④⑧⓪⓪

#define ESC ⓪x⓪①①b

int i,key;

int score=⓪;/*得分*/

int gamespeed=⑤⓪⓪⓪⓪;/*游戏速度自己调整*/

struct Food

{

int x;/*食物的横坐标*/

int y;/*食物的纵坐标*/

int yes;/*判断是否要出现食物的变量*/

}food;/*食物的结构体*/

struct Snake

{

int x[N];

int y[N];

int node;/*蛇的节数*/

int direction;/*蛇移动方向*/

int life;/* 蛇的生命,⓪活着,①死亡*/

}snake;

void Init(void);/*图形驱动*/

void Close(void);/*图形结束*/

void DrawK(void);/*开始画面*/

void GameOver(void);/*结束游戏*/

void GamePlay(void);/*玩游戏具体过程*/

void PrScore(void);/*输出成绩*/

/*主函数*/

void main(void)

{

Init();/*图形驱动*/

DrawK();/*开始画面*/

GamePlay();/*玩游戏具体过程*/

Close();/*图形结束*/

}

/*图形驱动*/

void Init(void)

{

int gd=DETECT,gm;

initgraph(gd,gm,"c:\\tc");

cleardevice();

}

/*开始画面,左上角坐标为(⑤⓪ · ④⓪),右下角坐标为(⑥①⓪ · ④⑥⓪)的围墙*/

void DrawK(void)

{

/*setbkcolor(LIGHTGREEN);*/

setcolor(①①);

setlinestyle(SOLID_LINE,⓪ · THICK_WIDTH);/*设置线型*/

for(i=⑤⓪;i=⑥⓪⓪;i+=①⓪)/*画围墙*/

{

rectangle(i,④⓪ · i+①⓪ · ④⑨); /*上边*/

rectangle(i,④⑤① · i+①⓪ · ④⑥⓪);/*下边*/

}

for(i=④⓪;i=④⑤⓪;i+=①⓪)

{

rectangle(⑤⓪ · i,⑤⑨ · i+①⓪); /*左边*/

rectangle(⑥⓪① · i,⑥①⓪ · i+①⓪);/*右边*/

}

}

/*玩游戏具体过程*/

void GamePlay(void)

{

randomize();/*随机数发生器*/

food.yes=①;/*①表示需要出现新食物,⓪表示已经存在食物*/

snake.life=⓪;/*活着*/

snake.direction=①;/*方向往右*/

snake.x[⓪]=①⓪⓪;snake.y[⓪]=①⓪⓪;/*蛇头*/

snake.x[①]=①①⓪;snake.y[①]=①⓪⓪;

snake.node=②;/*节数*/

PrScore();/*输出得分*/

while(①)/*可以重复玩游戏,压ESC键结束*/

{

while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/

{

if(food.yes==①)/*需要出现新食物*/

{

food.x=rand()%④⓪⓪+⑥⓪;

food.y=rand()%③⑤⓪+⑥⓪;

while(food.x%①⓪!=⓪)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

food.x++;

while(food.y%①⓪!=⓪)

food.y++;

food.yes=⓪;/*画面上有食物了*/

}

if(food.yes==⓪)/*画面上有食物了就要显示*/

{

setcolor(GREEN);

rectangle(food.x,food.y,food.x+①⓪ · food.y-①⓪);

}

for(i=snake.node-①;i⓪;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/

{

snake.x[i]=snake.x[i-①];

snake.y[i]=snake.y[i-①];

}

/*① · ② · ③ · ④表示右,左,上,下④个方向,通过这个判断来移动蛇头*/

switch(snake.direction)

{

case ①:snake.x[⓪]+=①⓪;break;

case ②: snake.x[⓪]-=①⓪;break;

case ③: snake.y[⓪]-=①⓪;break;

case ④: snake.y[⓪]+=①⓪;break;

}

for(i=③;isnake.node;i++)/*从蛇的第④节开始判断是否撞到自己了,因为蛇头为两节,第③节不可能拐过来*/

{

if(snake.x[i]==snake.x[⓪]snake.y[i]==snake.y[⓪])

{

GameOver();/*显示失败*/

snake.life=①;

break;

}

}

if(snake.x[⓪]⑤⑤||snake.x[⓪]⑤⑨⑤||snake.y[⓪]⑤⑤||

snake.y[⓪]④⑤⑤)/*蛇是否撞到墙壁*/

{

GameOver();/*本次游戏结束*/

snake.life=①; /*蛇死*/

}

if(snake.life==①)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/

break;

if(snake.x[⓪]==food.xsnake.y[⓪]==food.y)/*吃到食物以后*/

{

setcolor(⓪);/*把画面上的食物东西去掉*/

rectangle(food.x,food.y,food.x+①⓪ · food.y-①⓪);

snake.x[snake.node]=-②⓪;snake.y[snake.node]=-②⓪;

/*新的①节先放在看不见的位置,下次循环就取前①节的位置*/

snake.node++;/*蛇的身体长①节*/

food.yes=①;/*画面上需要出现新的食物*/

score+=①⓪;

PrScore();/*输出新得分*/

}

setcolor(④);/*画出蛇*/

for(i=⓪;isnake.node;i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+①⓪ ·

snake.y[i]-①⓪);

delay(gamespeed);

setcolor(⓪);/*用黑色去除蛇的的最后①节*/

rectangle(snake.x[snake.node-①],snake.y[snake.node-①],

snake.x[snake.node-①]+①⓪ · snake.y[snake.node-①]-①⓪);

} /*endwhile(!kbhit)*/

if(snake.life==①)/*如果蛇死就跳出循环*/

break;

key=bioskey(⓪);/*接收按键*/

if(key==ESC)/*按ESC键退出*/

break;

else

if(key==UPsnake.direction!=④)

/*判断是否往相反的方向移动*/

snake.direction=③;

else

if(key==RIGHTsnake.direction!=②)

snake.direction=①;

else

if(key==LEFTsnake.direction!=①)

snake.direction=②;

else

if(key==DOWNsnake.direction!=③)

snake.direction=④;

}/*endwhile(①)*/

}

/*游戏结束*/

void GameOver(void)

{

cleardevice();

PrScore();

setcolor(RED);

settextstyle(⓪ · ⓪ · ④);

outtextxy(②⓪⓪ · ②⓪⓪ · "GAME OVER");

getch();

}

/*输出成绩*/

void PrScore(void)

{

char str[①⓪];

setfillstyle(SOLID_FILL,YELLOW);

bar(⑤⓪ · ①⑤ · ②②⓪ · ③⑤);

setcolor(⑥);

settextstyle(⓪ · ⓪ · ②);

sprintf(str,"score:%d",score);

outtextxy(⑤⑤ · ②⓪ · str);

}

/*图形结束*/

void Close(void)

{

getch();

closegraph();

编后语:关于《贪吃蛇代码?C语言课程设计》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《pre?Longhorn》,感兴趣的同学可以点击进去看看。

相关推荐

玩家点评

条评论

热门下载

热点资讯