主要思路
(1)蛇每走一步,就使用BFS計算遊戲界面中每一個位置(蛇身除外)到達食物的最短路徑長;安全
(2)將蛇的安全定義爲蛇是否能夠跟着蛇尾運動,即蛇頭和蛇尾間是否存在路徑;工具
(3)蛇每次行動前先利用虛擬的蛇進行探路,若虛擬的蛇吃完食物後是安全的,真蛇才行動;開發工具
(4)若蛇和食物之間不存在路徑或者吃完食物後並不安全,就跟着蛇尾走;優化
(5)若蛇和食物之間、蛇和蛇尾之間均不存在路徑,就隨便挑一步可行的來走;spa
(6)保證目標是食物時蛇走最短路徑,目標是蛇尾時蛇走最長路徑。code
不足之處
因爲食物是隨機出現的,若虛擬的蛇跑一遍發現去吃食物是不安全的,真蛇就不會去吃食物,而是選擇追着蛇尾跑,若一直如此,就陷入了死循環,蛇一直追着蛇尾跑跑跑。。。orm
直到你終止遊戲爲止。。。遊戲
開發工具
Python版本:3.5.4ip
相關模塊:開發
pygame模塊以及一些Python自帶的模塊。
環境搭建
安裝Python並添加到環境變量,pip安裝須要的相關模塊便可。
運行方式
在cmd窗口運行AI_snake.py
文件便可。
結果展現
動圖一直上傳失敗。。。
因此隨便截幾個圖~
![](http://static.javashuo.com/static/loading.gif)
image.png
![](http://static.javashuo.com/static/loading.gif)
image.png
![](http://static.javashuo.com/static/loading.gif)
image.png
更多
(1)爲了保證代碼簡單易懂,所提供的代碼冗餘度較高(好比進行了沒必要要的重複計算),有興趣者可對代碼進行優化;
(2)相關文件中也提供了普通版本的貪吃蛇遊戲(Normal_snake.py)。