永发信息网

c语言贪吃蛇转向问题

答案:3  悬赏:70  手机版
解决时间 2021-01-23 20:50
写了好多,怎么没显示,郁闷。我是用单链表写的,每一个身体节点存放x,y坐标,当转向时,让身体节点的所有x,y都等于头节点的。外层if有一个计数器i全局变量判断条件是ilength+1,内层for循环j全局变量判断条件是j
最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-01-23 02:32
单链表,节点结构存Body放位置坐标x,y以及指向前一个结构的指针*fount。
计时器time,键盘捕捉函数getkey(),随机产生新身体newBody()。
程序开始->屏幕中心产生一个“蛇”->得到按键命令后移动->计时器++time后,按照上次得到的按键命令方向移动->得到新按键命令转向->得到新“身体”->撞墙(自身)结束游戏
产生蛇:屏幕确定地点选取三个位置,放置三个Body,在第一次接收按键时确定”头“坐标(x0,y0)。
头:*fount指向null的节点
移动和转向:确定坐标(如直角坐标系左上为(0,0),右下为(Mx,My)),左=x-1,右=x+1,上=y-1,下=y+1。且所有按键均为有效方向按键。
有效方向按键:”头“的下一个节点的坐标(x1,y1),如果在移动后满足x0!=x1,则为有效按键方向,接收按键。
身体移动:”头“移动后,身体依次接替前一项。即,”头“移动到”新头“,”头“的下一个,移动到头;再下一个移动到上一个,以此类推。
得到新“身体”:停止这一次计时器移动,并且把新“身体”当做“头”。
撞墙:“头”的坐标中有一个==边界坐标即为撞墙。
撞自身:“头”的坐标==“身体”中任意一个节点的坐标即为装自身。
全部回答
  • 1楼网友:过活
  • 2021-01-23 03:25
for(i=snake.node-1;i>0;i--) { snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1]; } 注释已经解释的很清楚了,不知道你还要问什么?
  • 2楼网友:舍身薄凉客
  • 2021-01-23 02:57
获取键盘事件,,,更改头的下一个位置x,和y 。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯