贪吃蛇AI
用pygame实现的贪吃蛇AI,代码在这里

使用
1 | pip3 install requirements.txt |
思路
主要是参考这篇 实现贪吃蛇AI,原实现在这里,主要的思路是下面这个图
主要的思路是派出一条假蛇去探路,假蛇吃完食物还能活着,真蛇才会去吃(假蛇吃完食物怎么样算能活,这个比较难判断,我的改动也主要在这里,后面会说)
改动
只是做了一些微小的修改
- 把curses改为pygame,界面好看多了
- 加了没有什么卵用的类
- 假蛇吃到食物之后,怎么算和尾巴之间有通路?
- 头和尾相邻算没有通路(原方法),比较保守,走到最后经常会循环起来,不敢吃食
- 如果头尾相邻算成有通路,容易在前期就把自己撞死
- 没有解决这个问题,加了个判断,蛇默认是保守的,但如果长时间没有吃到食物,就变激进。从测试结果看解决了原有的问题
,虽然不优雅
待改进
- 这个算法调起来像无底洞,我应该不会再改进这个了,感觉要加逻辑判断的地方很多,应该会有更优雅的实现
- 当最后蛇很长的时候,蛇走和食物的最短路径是不合理的,因为走最短路径留下的空隙很可能会被填上食物,还需要绕一大圈才能吃到。应该是到最后,蛇直接一排一排地扫,反而是最快的