我想在C++中應用遊戲tictactoe 3D的minimax算法。 我努力爲它找到一個很好的評估函數。在tictactoe 3D遊戲中尋找評價函數
有沒有人知道哪裏有很好的資源來找到評估函數?
謝謝。
我想在C++中應用遊戲tictactoe 3D的minimax算法。 我努力爲它找到一個很好的評估函數。在tictactoe 3D遊戲中尋找評價函數
有沒有人知道哪裏有很好的資源來找到評估函數?
謝謝。
這是我想要的使用:
去了所有行(在各個方向)。對於每一行,如果它只有一個玩家的分數,則根據玩家的分數標記該分數。你可以有一個查找表映射數量的標記得分,可以調整以獲得最佳結果。最後的結果將是兩位球員得分之差。
例(僞):
const int markScore[4+1] = {0, 1, 3, 5, 99999}; //assuming 4x4x4 board
//The above values are arbitrary - adjust to what you think makes sense.
score = 0;
for all rows in all directions:
count Xs and Os
if (xs>0 && os==0)
score += markScore[xs];
else if (os>0 && xs==0)
score -= markScore[os];
return score;
這應該很好地工作,因爲只有一個球員的標記任何行給出的球員有機會取勝。
該遊戲的評估功能只需要測試獲勝位置。評估職能應計入董事會中的空白字段,因爲董事會空檔越多,分數應該越高。爲了減少評估函數必須檢查的行數,行數和對角線數量,可以鏡像和旋轉電路板。
你能告訴我一個如何將分數映射到分數的例子嗎? – root 2010-04-14 16:41:40
我想知道setScore中的值對AI有多大的影響?我試圖找到最好的價值。 – root 2010-04-14 19:35:12
尋找好價值的一種方法是讓你的AI用不同的價值觀來對抗自己,並看看哪一個贏家是贏家。許多最好的國際象棋引擎都是這樣做的,以調整它們的參數。 (爲了更加準確,他們通常會與其他引擎相比,而不是自己)。 – interjay 2010-04-14 20:48:06