10分鐘教你用Python打造乙個AI貪吃蛇

2022-05-18 11:46:49 字數 1153 閱讀 4548

最近在修一門叫python基礎的課,然後匆忙之中做了這個ai貪吃蛇想交個大作業,結果老師的結課作業是給定了題目,我真是……

首先說明一點哈,此ai非彼ai。今天要講的ai貪吃蛇還是傳統意義上遍歷圖的找路演算法編寫的,並不是利用機器學習進行學習控制的哈。

傳送門:10分鐘教你用python打造貪吃蛇超詳細教程

傳送門:

然後再放上一張吃不滿屏的圖吧,┭┮﹏┭┮我跑了乙個早上。結果你讓我看這個?

哈哈,看不到頭尾了,反正**會放出來,有需要的小夥伴可以給他加個頭,這樣看起來辨識度更高。

好了,現在介紹完了。我們來介紹一下ai部分的原理+演算法吧。

我們之前說了,演算法是用bfs找路的。那麼相應的地圖就是整個的遊戲區域了。其實整個遊戲區域可以分成乙個個的畫素格仔,每個格仔就可以看成一張地圖中的點(有xy座標),只不過這些點只與相鄰的點連通,這樣就形成了乙個圖。

有了圖以後,蛇身所在的位置就是障礙了,不能通過的。然後蛇的移動不能超出圖所在的範圍。乙個點無法就這幾種狀態:

我們用width表示地圖的寬度,height表示地圖的高度。在程式中,該狀態用乙個一維陣列board[width * height]進行標識:比如點(x,y)的狀態就可以用board[x + width*y]的具體取值表示(food表示食物等)。

找路的演算法流程這裡直接引用@charles大神部落格上寫的流程:

主要思路

(1)蛇每走一步,就使用bfs計算遊戲介面中每個位置(蛇身除外)到達食物的最短路徑長;

(2)將蛇的安全定義為蛇是否可以跟著蛇尾運動,即蛇頭和蛇尾間是否存在路徑;

(3)蛇每次行動前先利用虛擬的蛇進行探路,若虛擬的蛇吃完食物後是安全的,真蛇才行動;

(4)若蛇和食物之間不存在路徑或者吃完食物後並不安全,就跟著蛇尾走;

(5)若蛇和食物之間、蛇和蛇尾之間均不存在路徑,就隨便挑一步可行的來走;

(6)保證目標是食物時蛇走最短路徑,目標是蛇尾時蛇走最長路徑。

不足之處

由於食物是隨機出現的,若虛擬的蛇跑一遍發現去吃食物是不安全的,真蛇就不會去吃食物,而是選擇追著蛇尾跑,若一直如此,就陷入了死迴圈,蛇一直追著蛇尾跑跑跑。。。直到你終止遊戲為止。。。

10分鐘教你用Python實現微信自動回覆

效果如下 python版本 3.6.0 系統平台 windows 10 x64 ide pycharm 相關模組 time模組 itchat模組 以及一些python自帶的模組。1 自動回覆 2 封裝好的裝飾器,當接收到的訊息是text,即文字訊息 3 註冊訊息響應事件,訊息型別為 text 即文字...

10分鐘用Python製作戀愛日誌!

前期準備 1.python的wxpy庫,wxpy在itchat的基礎上,通過大量介面優化提公升了模組的易用性,並進行豐富的功能擴充套件。2.python的爬蟲基礎知識。比如,我之前寫到的requests庫的使用。3.python對於日期的操作。對於wxpy庫和requests庫的安裝,都可以用pip...

10分鐘教你打造乙個微信語音點歌系統

另外乙個是我個人的訂閱號,有更多的功能,沒有人數限制,但是不能識別語音。說了這麼多,不如自己動動手吧。1 在bae上建立應用並申請網域名稱 3 調整php 並配置介面 然後準備一下 的api 接著開始編碼 從上面描述可以看到,我只是簡單的配置和寫了幾句簡單的php 就實現了乙個複雜的語音點歌系統。體...