我有一個「連接4」遊戲(與可變數量的列和行)的Java實現。我應該如何爲Connect 4設計一個好的評估函數?
此實現使用(根據用戶的選擇)與α-β與MAXDEPTH的搜索的最大深度修剪迷你最大的微型-MAX算法
我的問題是現在的設計一個良好的評估函數爲板的狀態(這是在maxDepth返回的值)。
值是-100之間(最差的choise,它對應於一個失敗的情況)和100(最好的choise,它對應於一個勝勢)其中應該是「畫」情況。
其實我實現了兩個功能(我彙報的僞代碼,因爲代碼很長)
1)
- 沒有贏/輸不
- >如果表格已滿==>繪製(0)
- > if if not full ==>不確定情況(50)
- 贏得
- >如果我的勝利:100
- >如果對手的勝利:-100
2)
Of me:
- InARow[0] = maximum number of pieces in a HORIZONTAL in a row
- InARow[1] = maximum number of pieces in a VERTICAL in a row
- InARow[2] = maximum number of pieces in a DIAGONAL (ascending) in a row
- InARow[3] = maximum number of pieces in a DIAGONAL (descending) in a row
Of the opponent
- InARow2[0] = maximum number of pieces in a HORIZONTAL in a row
- InARow2[1] = maximum number of pieces in a VERTICAL in a row
- InARow2[2] = maximum number of pieces in a DIAGONAL (ascending) in a row
- InARow2[3] = maximum number of pieces in a DIAGONAL (descending) in a row
value = (100* (InARow[0] + InARow[1] + InARow[2] + InARow[3]))/16 - (100* (InARow2[0] + InARow2[1] + InARow2[2] + InARow2[3]))/16
我需要設計一個第三(如果可能的話更好)函數。任何建議?
預先感謝您。
計算6^7次不是很重嗎? (其中6是深度,7是有多少列) – shinzou