2012-02-26 103 views
0

我想創建一個經典的3 * 3棋盤遊戲。AI的線路塊遊戲

這是兩個玩家遊戲&看起來像http://tinypic.com/view.php?pic=34o4mjp&s=5並且很容易玩。勝利條件有點類似於井字遊戲。實際上我甚至不知道那場比賽的確切名稱,但是當我還是小孩的時候,我在學校玩過。我將它命名爲塊的行。

在這個遊戲中,玩家每人有3個街區。每個玩家可以在他/她輪流的時候移動一個街區。最後那個能夠對角線或水平或垂直方向排隊的人,除了他/她自己的一方將是勝利者。 我已經在java中爲兩名玩家編寫了這款遊戲,但我遇到了AI問題。

任何人都可以告訴我哪種AI算法可以用於這個遊戲?這個遊戲的確切名稱是什麼?

我搜索了兩個玩家的AI算法,發現minimax算法可以實現,但我沒有得到如何實現minimax在我的情況。

回答

2

這裏的極小極限是一條路 這種類型的遊戲屬於一類具有全部信息的雙人遊戲,所以極小極大是這裏的經典解決方案。你也可以考慮一種叫做「alpha-beta修剪」的技術來優化。

實際上,它與傳統的井字腳趾沒有多大差別。 所有你需要的是找到一個很好的啓發函數來估計你的當前​​狀態。 你的AI程序的優勢將取決於你的啓發式功能。其餘的都是經典的極小極大算法實現。

希望這有助於

1

另一個海報建議極小,是的,這是棋盤遊戲這樣的經典解決方案。但是,在這種情況下,這是完全沒有必要的。這個遊戲只有1680個可能的棋盤狀態(可以輪到2個玩家的x2),所以你可以很容易地對遊戲樹進行蠻力搜索並「解決」它。

您可以在運行時執行此操作,或者首先預先計算每個可能的紙板狀態的「完美」移動,將它們存儲在一個表中,然後在運行時查看錶格。

+0

Minimax更適合像國際象棋這樣的遊戲 - 我只是計算出在棋盤上有一組棋子可能具有4634726695587809641192045982323285670400000排列,所以暴力顯然是不可行的。 – 2012-02-26 14:39:38