本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
下载手机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)。
Python3abs() 函数Python3 数字(Number)描述abs() 函数返回数字的绝对值。语法以下是 abs() 方法的语法:abs( x )参数x -- 数...
Python3enumerate() 函数Python3 内置函数描述Python3 enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合...
Python3chr() 函数Python3 内置函数描述Python3 chr() 用一个整数作参数,返回一个对应的字符。语法以下是 chr() 方法的语法:chr...
Python 判断字符串是否为数字 Python3 实例以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字:# -*- coding:...
本文转载至知乎ID:Charles(白露未晞)知乎个人专栏下载手机App,0基础随时随地学编程戳此了解导语好久以前看到有人做过。。今...