浅谈贪吃蛇的设计及算法

浅谈贪吃蛇的设计及算法
平时看起来⼩⼩的贪吃蛇做起来也是很需要思考的。
先看下贪吃蛇游戏的⼀些设定:
楔形体
1.地图:我们假定地图为12*12,其中中间10*10为蛇可以⾛的区域,其余周边为墙。
2.蛇:包括蛇头和蛇⾝
3.⾷物:路径上会出现⼀个⾷物,被吃掉后会重新随机⽣成。
⽐起⾯向对象编程的construct2,⽤⾯向过程的C语⾔写起来⾃然更有难度。我们先⽤置顶向下的⽅法分析⼀下贪吃蛇程序所需的代码。
世界最深钻井
0.主程序
WHILE !gameover
Input ch
direct snake to ch
IF eat food
snake grows
END IF
END WHILE
1.打印游戏界⾯
我们将整个游戏地图(包括墙,空地,蛇和⾷物)储存在⼀个⼆维数组⾥。然后逐⾏进⾏打印即可。当数组⾥的数据不断更新,我们不断清屏打印地图出来时,就可以让⼈的眼睛以为是连续的动画画⾯。
2.控制蛇移动
我们通过键盘上的”WSAD”来对应蛇移动⽅向的“上下左右”。
然后在蛇⾛之前先判断蛇的下⼀步是什么,如果是墙或者是⾃⼰的⾝体,则让蛇死亡,如果是⾷物则让蛇长长⼀节。
蛇移动的算法:
在蛇的新蛇头的坐标储存 ‘H’,将旧蛇头设置为蛇⾝ ‘X’,接着将蛇尾抹去,即置为空 ’ ‘;
3.放置⾷物
我们采⽤随机函数来产⽣⾷物的坐标,若新的坐标上已有物体,则重新⽣成
智能蛇
寿昌公主但是这样的贪吃蛇并不能⾃⼰移动,所以我们得借助kbhit函数。该函数能检查是否有键盘输⼊但是不阻⽌weile循环的继续,这样蛇就能动了。
浦东国际机场航站楼
此外,我们还可以写⼀个让蛇⾃动跑的智能算法。
让蛇判断四个⽅向哪个是可⾏的并且能最快到达⾷物。
可以参考⼀个曼哈顿距离
胥荣东
中国进出口银行图中红线代表曼哈顿距离,绿⾊代表欧⽒距离,也就是直线距离,⽽蓝⾊和黄⾊代表等价的曼哈顿距离。曼哈顿距离——两点在南北⽅向上的距离加上在东西⽅向上的距离,即d(i,j)=|xi-xj|+|yi-yj|。对于⼀个具有正南正北、正东正西⽅向规则布局的城镇街道,从⼀点到达另⼀点的距离正是在南北⽅向上旅⾏的距离加上在东西⽅向上旅⾏的距离,因此,曼哈顿距离⼜称为出租车距离。曼哈顿距离不是距离不变量,当坐标轴变动时,点间的距离就会不同。曼哈顿距离⽰意图在早期的计算机图形学中,屏幕是由像素构成,是整数,点的坐标也⼀般是整数,原因是浮点运算很昂贵,很慢⽽且有误差,如果直接使⽤AB的欧⽒距离(欧⼏⾥德距离:在⼆维和三维空间中的欧⽒距离的就是两点之间的
距离),则必须要进⾏浮点运算,如果使⽤AC和CB,则只要计算加减法即可,这就⼤⼤提⾼了运算速度,⽽且不管累计运算多少次,都不会有误差。

本文发布于:2024-09-22 13:28:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/244873.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:距离   曼哈顿   地图   移动   坐标   游戏   函数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议