我想在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