在tictactoe 3D游戏中寻找评价功能

时间:2010-04-14 16:24:24

标签: c++ algorithm function 3d tic-tac-toe

我正在尝试将minimax算法应用于c ++中的游戏tictactoe 3D。 我正在努力为它找到一个好的评估功能。

有没有人知道哪里有好的资源来找到评估函数?

谢谢。

3 个答案:

答案 0 :(得分:0)

以下是我使用的内容:

遍历所有行(向所有方向)。对于每一行,如果它只有一个玩家的标记,则根据有多少标记奖励该玩家。您可以使用查找表来映射要评分的标记数,可以对其进行调整以获得最佳结果。最终结果将是两位球员得分之间的差异。

示例(伪代码):

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;

这应该效果很好,因为只有一个玩家标记的任何一行都会让玩家有机会获胜。

答案 1 :(得分:0)

启发式是不必要的。只有3 ^ 27个状态,你可以枚举它们并计算最佳游戏。

答案 2 :(得分:0)

此游戏的评估功能只需要测试获胜位置。评估函数应该计算板中的空字段,因为板具有的空文件越多,得分应该越高。要减少评估功能必须检查的线,行和对角线的数量,您可以镜像和旋转电路板。