c语言贪吃蛇代码

飞来科技  发布时间:2019-08-09 02:04:23

本文关键词:c语言贪吃蛇实现

c 语言贪吃蛇代码_c语言贪吃蛇实现_c语言贪吃蛇代码

谁能帮我解说一下下面代码是怎么一个思路去编的啊?很急啊c语言贪吃蛇实现,我哥哥下周答辩,她一个女生学其他真的是太伤神了,只要看看思路就行了,我看了,所以想知道编程者的思维是怎么的,大家帮帮忙,感谢了啊~求逻辑求逻辑啊~

#defineN200

#include<graphics.h>

#include<stdlib.h>

#include<dos.h>

#defineLEFT0x4b00

#defineRIGHT0x4d00

#defineDOWN0x5000

#defineUP0x4800

#defineESC0x011b

inti,key;

intscore=0;/*得分*/

intgamespeed=50000;/*游戏速率自己调整*/

structFood

{

intx;/*食品的横坐标*/

inty;/*食品的纵坐标*/

intyes;/*分析是否要出现水果的函数*/

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

structSnake

{

intx[N];

inty[N];

intnode;/*蛇的节数*/

intdirection;/*蛇移动方向*/

intlife;/*蛇的人生,活着,1死亡*/

}snake;

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

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

voidDrawK(void);/*直到场景*/

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

voidGamePlay(void);/*玩游戏具体过程*/什么全是void

voidPrScore(void);/*输出名次*/

/*主函数*/

voidmain(void)

{

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

DrawK();/*直到场景*/

c 语言贪吃蛇代码_c语言贪吃蛇实现_c语言贪吃蛇代码

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

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

}

/*图形驱动*/

voidInit(void)

{

intgd=DETECT,gm;;/*定义图形的驱动器变量和模式变量,驱动变量为自动检测*/

initgraph(&gd,&gm,"c:\\tc");/*此处为turboc的路径*/

cleardevice();/*去除屏幕*/

}

/*直到场景,左上角座标为(50,40),右下角座标为(610,460)的院子*/

voidDrawK(void)

{

/*setbkcolor(LIGHTGREEN);*/

setcolor(11);

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

for(i=50;i<=600;i+=10)/*画房顶*/

{

rectangle(i,40,i+10,49);/*上面*/

rectangle(i,451,i+10,460);/*下边*/

}

for(i=40;i<=450;i+=10)

{

rectangle(50,i,59,i+10);/*前面*/

rectangle(601,i,610,i+10);/*前面*/

}

}

/*玩游戏具体过程*/

voidGamePlay(void)

{

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

food.yes=1;/*1表示需要出现新食品,表示早已存在食物*/

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

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

snake.x[]=100;snake.y[]=100;/*触须*/

snake.x[1]=110;snake.y[1]=100;

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

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

c 语言贪吃蛇代码_c语言贪吃蛇实现_c语言贪吃蛇代码

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

{

while(!kbhit())/*在没有按键的现象下,蛇自己移动人体*/

{

if(food.yes==1)/*需要出现新食品*/

{

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x!=)/*食品随机出现后必须让食材还能在整格内,这种才可以让蛇吃到*/

food.x++;

while(food.y!=)

food.y++;

food.yes=0;/*镜头上有食品了*/

}

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

{

setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10);

}

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

{

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

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

}

/*1,2,3,4表示右,左,上,下四个方向,通过这个分析来移动蛇头*/

switch(snake.direction)

{

case1:snake.x[]+=10;break;

case2:snake.x[]-=10;break;

case3:snake.y[]-=10;break;

case4:snake.y[]+=10;break;

}

for(i=3;i<snake.node;i++)/*从蛇的第四节开始分析能否撞到自己了,因为蟒蛇为两节c语言贪吃蛇实现,第三节不应该拐回来*/

{

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

{

GameOver();/*表明失败*/

snake.life=1;

c语言贪吃蛇代码_c语言贪吃蛇实现_c 语言贪吃蛇代码

break;

}

}

if(snake.x[]<55||snake.x[]>595||snake.y[]<55||

snake.y[]>455)/*蛇是否撞到楼梯*/

{

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

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

}

if(snake.life==1)/*以下两种分析之后,所以蛇死就跳出内循环,重新开始*/

break;

if(snake.x[]==food.x&&snake.y[]==food.y)/*吃到食品之后*/

{

setcolor();/*把镜头上的食品东西去除*/

rectangle(food.x,food.y,food.x+10,food.y-10);

snake.x[snake.node]=-20;snake.y[snake.node]=-20;

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

snake.node++;/*蛇的人体长一节*/

food.yes=1;/*镜头上需要出现新的食品*/

score+=10;

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

}

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

for(i=;i<snake.node;i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

snake.y[i]-10);

delay(gamespeed);

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

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

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

}/*endwhile(!kbhit)*/

if(snake.life==1)/*或者蛇死就跳出循环*/

break;

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

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

break;

else

if(key==UP&&snake.direction!=4)

c语言贪吃蛇代码_c 语言贪吃蛇代码_c语言贪吃蛇实现

/*分析是否往相反的方向移动*/

snake.direction=3;

else

if(key==RIGHT&&snake.direction!=2)

snake.direction=1;

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2;

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4;

}/*endwhile(1)*/

}

/*游戏结束*/

voidGameOver(void)

{

cleardevice();

PrScore();

setcolor(RED);

settextstyle(,,4);

outtextxy(200,200,"GAMEOVER");

getch();

}

/*输出名次*/

voidPrScore(void)

{

charstr[10];

setfillstyle(SOLID_FILL,YELLOW);

bar(50,15,220,35);

setcolor(6);

settextstyle(,,2);

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

outtextxy(55,20,str);

}

/*图形结束*/

voidClose(void)

{

getch();

closegraph();

}

本文来自互联网,由机器人自动采编,文章内容不代表本站观点,请读者自行辨别信息真伪,如有发现不适内容,请及时联系站长处理。

    相关阅读
    时时彩平台