作为小学期程序设计训练大作业的一部分,也是自己之前思考过的一个问题,终于利用小学期完成了贪吃蛇AI的一次尝试,下作一总结。
背景介绍:
首先,我针对贪吃蛇AI这一关键词在百度和google上尽心了检索,大致获得了一下信息
1、A*寻路算法是人工智能中的一个经典算法,很多AI利用这个算法提高性能。
2、在alphaGo一战成名,人工智能家喻户晓之后,有一个贪吃蛇AI吃满全屏的GIF图已读在微博疯转。
3、这个GIF图早在2013年就已经出现了(其实比alphaGo早)。
4、国内过于贪吃蛇AI(也就是百度得到的信息)的文章中比较有参考价值的只有两篇:贪吃蛇 AI 的实现 snake AI。但感觉这两篇的算法还是很初级的,我认为不能保证每次都吃满全屏。
5、那张吃满全屏的GIF是一个俄罗斯人实现的(最后一段还出现了俄文),联想俄罗斯方块,大概俄罗斯程序员就喜欢写这些东西自娱自乐吧。
6、仔细观察那张GIF,可以断定绝对不是简单的盲目搜索算法,肯定使用了比较高级的AI算法(从蛇吃食物的路径可窥探一二)。
7、没有可以直接参考的代码,虽然有份python代码,但已经基本看不懂了。。。。
我的设计:
首先,我的出发点是希望尽可能利用数据结构课上学到的知识解决这个问题,所以我没用A*(运行之后的效率还是很可观的),更没用其他高级的AI算法。其次,我希望尽量把问题集中在算法设计上(后来证明这个想法还是很明智的),所以放弃了用Java的Swing以及Java2D做图形界面的打算,直接控制台编程,使用C/C++编写代码(后来证明这个想法太愚蠢了)。