2012-02-07 101 views
5

我已經用Java寫了一個蛇遊戲。我也想做的是爲它創建一個演示(所以蛇會自己演奏)。我寫了一個簡單的演示,但蛇死得很快。那麼,是否有任何算法或類似的問題?我相信這有點類似於國際象棋遊戲的問題? 我希望那隻蛇儘可能活着。謝謝。編寫蛇遊戲演示

+0

簡單的解決方案=慢下來的蛇! – Mikhail 2012-02-07 06:31:21

回答

9

Google贊助的AI Challenge在2010年舉辦了「Tron」遊戲。您可能會從搜索該挑戰的解決方案中獲得一些好點子。

如果你只是想要一個很簡單的策略,使一個合理的演示,那麼你可以嘗試類似以下內容:

  • 永遠不要使你崩潰,除非你有沒有其他選擇
  • 一招如果您的下一步移動迫使您在兩個或多個不同的(未連接的)空間中進行選擇,請始終移動到兩個空間中較大的一個。這會阻止你的蛇太容易陷入困境。
  • 如果您沿着牆壁移動,請繼續沿着牆壁98%的時間移動,並根據需要左右移動。這將幫助你的蛇看起來合理的智能化,並節省遊戲區的空間。
  • 否則繼續前進90%的時間,每次隨機左右旋轉5%(這會讓你的演示更加無聊)。

除此之外,我不認爲國際象棋風格的AI方法(移動搜索樹)將工作得很好。您無法事先輕鬆搜索足夠的動作。

1

沒有爲你工作,我可以告訴你,開始接近這樣一個問題的最好方法是考慮蛇應該怎麼做才能儘可能長存。爲了保持活力,蛇應該遵循什麼'經驗法則'。對於初學者來說,蛇可能在它遇到障礙物之前轉向,並且朝向不會被裝箱的方向。因此,當蛇在它的尾部(或牆壁)的一個空間內並且朝向它與其他障礙物之間的距離最大的方向。另外,我相信蛇是一種遊戲,電腦可以完美地演奏,在演示中你可能不會那麼想,所以如果事情變得太一樣的話,你總是可以隨意拋出一些隨機的東西來增添趣味。

2

這是不是你正在尋找的答案,但我張貼,因爲我真的喜歡看你探索這個算法進一步修改,直到你發現自己有一個相當合理的AI:

最簡單的算法解決這個問題就是「走近邊緣,然後向下扭曲」的方法。基本上,你從一條蛇開始,把它向西移動,然後抱住西牆,然後抱住天花板。然後,你穿過每一個可能的方格,像一個緊身衣,直到你到達最底部,向西走,然後重新開始。

如果你嘗試,你可以把它變成一個真正優秀的AI:d