智慧型蛇設計思路

2021-08-14 02:24:51 字數 2758 閱讀 6351

有了乙個基本框架的貪吃蛇,

智慧型蛇的實現其實只需要寫出乙個函式替代getinp()函式並每秒執行一次即可

下面著重講下搜尋策略

方案1.0

在乙個矩形中,每一時刻有乙個食物,貪吃蛇要在不撞到自己的條件下,

找到一條路(未必要最優),然後沿著這條路執行,去享用它的美食

顯然這個僅僅乙個bfs即可實現,此蛇很容易被自己直接繞住

方法2.0

一開始,蛇很短(初始化長度為1),它看到了乙個食物, 使用bfs得到矩形中每個位置到達食物的最短路徑長度。在沒有蛇身阻擋下, 就是曼哈頓距離。然後,我要先判斷一下,貪吃蛇這一去是否安全。 所以我需要一條虛擬的蛇,它每次負責去探路。如果安全,才讓真正的蛇去跑。 當然,虛擬的蛇是不會繪製出來的,它只負責模擬探路。那麼, 怎麼定義乙個布局是安全的呢? 如果你把文章開頭那張動態中蛇的銷魂走位好好的看一下, 會發現即使到最後蛇身已經很長了,它仍然沒事一般地走出了一條路。而且, 是跟著蛇尾走的!嗯,這個其實不難解釋,蛇在運動的過程中,消耗蛇身, 蛇尾後面總是不斷地出現新的空間。蛇短的時候還無所謂,當蛇一長, 就會發現,要想活下來,基本就只能追著蛇尾跑了。在追著蛇尾跑的過程中, 再去考慮能否安全地吃到食物。

我們根據以上推出策略:

- 無食物是尋找離尾部最遠的路徑移動

- 有食物時,派出分身沿著最短路吃,之後判斷能否走向尾部,若不能則繼續追蹤尾巴,當超過100步(全圖必定可遍歷)後判定無解直接去吃

- 若無食物也沒有尾部,則自動走向空白處大的方向

本人寫的**

基本實現了上述的部分演算法(時間倉促請見諒)

智慧型蛇設計探索

我覺得對於智慧型蛇的設計,最初的想法也一定是最簡單的,那就是一步一步地把蛇走到食物那裡去,以電腦代替人工,我們可以用以下 實現 int mymin int array 4 for i 0 i 4 i return i char wheretogo int hx,int hy,int fx,int f...

設計簡單的智慧型蛇

智慧型蛇是讓貪吃蛇在有限的地圖內走動,吃食物使身體變長使得能夠走的步數最多。既然是讓步數最多,又由於對問題的簡化局面中每次只會有乙個食物,且無除邊界外的障礙物。可以想到比較 trick 的做法,當行數 n 或列數 m 為偶數時,可以構造哈密頓迴路使得蛇必定可以在鋪滿整個地圖後結束遊戲。當行數和列數都...

智慧型鑽井系統設計思路

以油田鑽井資料庫和資訊平台建設為基礎,將鑽井工程相關各方面的資料歸類採集 包括井場實時動態資料及研究成果結構化採集 運用大資料處理及分析 人工智慧等技術手段,實現鑽井作業監測與實時動態分析,最終為安全高效鑽井措施方案的制定提供決策支援。智慧型鑽井系統的設計思路包括以下三點 1 鑽井工程設計資料庫 按...