我想在C申请极大极小算法游戏井字游戏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;

这应该很好地工作,因为只有一个玩家的商标不拥有任何行给出该玩家有机会赢取。

其他提示

启发式是不必要的。目前只有3 ^ 27个州中,你可以枚举所有这些,计算的最佳玩法。

这个游戏的评价函数仅需要测试的获胜位置。评价函数应该算在电路板上的空字段,因为更空的Fileds板上有,得分越高应该的。为了减少线,行和对角线的评价函数必须检查的数量,可以镜像并旋转板。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top