本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解
导语
利用Python简单地实现AI版的贪吃蛇。。。
just for fun...
没有用深度学习。。。
算法是由一个叫Hawstein的人在好多好多年以前提出,感觉很有趣,就花了点时间复现了一下他的想法。。。
至于效果。。。
看脸。。。
真的只是觉得他的想法很有趣,仅此而已,因为如果你想让蛇机械地充满整个空间,只需要让蛇一直走S就好了,但是这就变得很无趣了。。。
相关文件
百度网盘下载链接: https://pan.baidu.com/s/1KPAV6FKLUFj11myoVjzQ2Q
密码: gb7k
主要思路
(1)蛇每走一步,就使用BFS计算游戏界面中每个位置(蛇身除外)到达食物的最短路径长;
(2)将蛇的安全定义为蛇是否可以跟着蛇尾运动,即蛇头和蛇尾间是否存在路径;
(3)蛇每次行动前先利用虚拟的蛇进行探路,若虚拟的蛇吃完食物后是安全的,真蛇才行动;
(4)若蛇和食物之间不存在路径或者吃完食物后并不安全,就跟着蛇尾走;
(5)若蛇和食物之间、蛇和蛇尾之间均不存在路径,就随便挑一步可行的来走;
(6)保证目标是食物时蛇走最短路径,目标是蛇尾时蛇走最长路径。
不足之处
由于食物是随机出现的,若虚拟的蛇跑一遍发现去吃食物是不安全的,真蛇就不会去吃食物,而是选择追着蛇尾跑,若一直如此,就陷入了死循环,蛇一直追着蛇尾跑跑跑。。。
直到你终止游戏为止。。。
开发工具
Python版本:3.5.4
相关模块:
pygame模块以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
运行方式
在cmd窗口运行AI_snake.py文件即可。
结果展示
动图一直上传失败。。。
所以随便截几个图吧~~~
更多
(1)为了保证代码简单易懂,所提供的代码冗余度较高(比如进行了不必要的重复计算),有兴趣者可对代码进行优化;
(2)相关文件中也提供了普通版本的贪吃蛇游戏(Normal_snake.py)。