2010-03-13 26 views
3

我讀了Gomoku,它可以使用Minimax和Alpha-Beta Pruning算法實現。所以,我讀了這些算法,現在明白遊戲將如何解決。但是當我坐下來進行編碼時,我正面臨着如何處理它的問題。如何從Gomoku開始?

如,

  • 如何設計原型的功能,如getNextMove或Max(移動)?
  • 下一步如何搜索?
  • 直到何時應該應用minimax算法。
  • 我知道我可以在網上找到代碼,但我想自己做。

任何人都可以請我指出正確的方向嗎?

+1

Alpha/beta和minimax都需要能夠評估當前玩家的當前棋盤位置有多優勢,並且該評估強烈依賴於特定類型的遊戲。您必須熟悉Gomouku,並根據您對遊戲的瞭解,嘗試各種評估功能,並選擇性能最佳的評估功能。這是一個Gomoku問題,而不是一個編程問題。 – 2010-03-14 02:56:38

回答

5

教科書中介紹的極小極大算法通常應用於簡單的遊戲中,例如, tic-tac-tou,最終狀態只能在最少球員和最大球員之間轉過幾圈。但是,對於Gomoku來說,不可能達到所有最終狀態。爲什麼我們需要達到最終狀態?我們需要對移動進行評估,即移動是否良好。

所以,你的第一步是設計一個移動的評估函數,它告訴你如果你做一個動作,你將獲得多少價值。例如你有一個3連續的,沿着那一排做一個4將是非常有價值的。

假設您有一個非常聰明的評估功能,那麼您每次都可以在沒有任何搜索的情況下找到最佳移動。所以在你做任何min-max,alpha-beta之前,你可能會設計一個很好的評估函數。 Emacs的gomoku源代碼就是一個很好的例子,它有一個非常好的AI播放器,不需要任何搜索。

接下來你將移動到最小最大值和alpha-beta。

看來我沒有回答你的問題。其實我不需要。我假設你知道最小最大甚至alpha-beta搜索tic-tac-tao的細節。通過設計評估函數,您可以更好地理解gomoku,併爲其設計搜索算法,就像您現在可以爲tic-tac-tou所做的一樣。