snake算法贪吃蛇C语言设计步骤

snake算法  时间:2022-02-24  阅读:()

贪吃蛇C语言设计步骤

#define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h> #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define Esc 0x011b int i,key; int score=0;/*得分*/ int gamespeed=50000;/*游戏速度可以自己调整*/ 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(11); setlinestyle(SOLID_LINE,0,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); } } void GamePlay(void) { randomize(); food.yes=1; snake.life=0; snake.direction=1; snake.x[0]=100;snake.y[0]=100; snake.x[1]=110;snake.y[1]=100; snake.node=2; PrScore(); while(1) { while(!kbhit()) { if(food.yes==1) { food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0) food.x++; while(food.y%10!=0) 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>0;i--) /*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) { case 1: snake.x[0]+=10;break; case 2: snake.x[0]-=10;break; case 3: snake.y[0]-=10;break; case 4: snake.y[0]+=10;break; } for(i=3;i<snake.node;i++) { if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]) { GameOver(); snake.life=1; break; } } if (snake.x[0]<55||snake.x[0]>595||snake.y[0]<55|| snake.y[0]>455) { GameOver(); snake.life=1; } if(snake.life==1) break; if(snake.x[0]==food.x&&snake.y[0]==food.y) { setcolor(0); 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=0;i<snake.node;i++) rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10); delay(gamespeed); setcolor(0); rectangle(snake.x[snake.node-1],snake.y[snake.node-1], snake.x[snake.node-1]+10,snake.y[snake.node-1]-10); } if(snake.life==1) break; key=bioskey(0); if(key==Esc)/*按Esc键退出*/ break; else if(key==UP&&snake.direction!=4) 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; } } /*游戏结束*/ void GameOver(void) { cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch(); } /*输出成绩*/ void PrScore(void) { char str[10]; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str); } void Close(void) { getch(); closegraph(); }

香港九龙湾(27元) 2核2G 20元 香港沙田

弘速云是创建于2021年的品牌,运营该品牌的公司HOSU LIMITED(中文名称弘速科技有限公司)公司成立于2021年国内公司注册于2019年。HOSU LIMITED主要从事出售香港VPS、美国VPS、香港独立服务器、香港站群服务器等,目前在售VPS线路有CN2+BGP、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。可联系商家代安装iso系统。国庆活动 优惠码:hosu10-1产品介绍...

美国G口/香港CTG/美国T级超防云/湖北高防云服务器物理机促销活动 六一云

六一云 成立于2018年,归属于西安六一网络科技有限公司,是一家国内正规持有IDC ISP CDN IRCS电信经营许可证书的老牌商家。大陆持证公司受大陆各部门监管不好用支持退款退现,再也不怕被割韭菜了!主要业务有:国内高防云,美国高防云,美国cera大带宽,香港CTG,香港沙田CN2,海外站群服务,物理机,宿母鸡等,另外也诚招代理欢迎咨询。官网www.61cloud.net最新直销劲爆...

免费注册宝塔面板账户赠送价值3188礼包适合购买抵扣折扣

对于一般的用户来说,我们使用宝塔面板免费版本功能还是足够的,如果我们有需要付费插件和专业版的功能,且需要的插件比较多,实际上且长期使用的话,还是购买付费专业版或者企业版本划算一些。昨天也有在文章中分享年中促销活动。如今我们是否会发现,我们在安装宝塔面板后是必须强制我们登录账户的,否则一直有弹出登录界面,我们还是注册一个账户比较好。反正免费注册宝塔账户还有代金券赠送。 新注册宝塔账户送代金券我们注册...

snake算法为你推荐
重庆干部网络学院重庆大学网络教育学院学历认可吗httpsessionhttpsession 和cookie实现的会话跟踪有什么区别httpsessionhttpsession和session的区别郭凡生馬云的簡介3Q备忘录模式华为荣耀5X怎么在手机上新建一个备忘录jdk6java—JDK6,在SUN公司官网下载的链接,索引超出了数组界限索引超出了数组界限是怎么回事啊?vipjr大家觉得vipjr少儿英语怎么样?靠谱不弹幕网站谁能给我解释一下什么叫A站,什么叫B站?都是啥网站?清除电脑垃圾怎么清除电脑的垃圾啊?
域名服务器 主机测评网 z.com 世界测速 免费高速空间 购买国外空间 优酷黄金会员账号共享 根服务器 主机管理系统 中国电信测速网站 摩尔庄园注册 工信部icp备案查询 服务器硬件配置 新网dns 中美互联网论坛 qq空间打开很慢 服务器是什么意思 低价 studentmain 电脑主机配置 更多