我有表格和一些函数,如 Generate_moves() 等,但要使 minmax 算法起作用,我需要为表格设置分数,以使计算机选择最佳表格。
public int Score()
{
if (Turn == "X")
{
if (gameWon("X")) return 100;
if (gameWon("O")) return -100;
if (gameDrawn()) return 0;
return n - canWin("X");
}
if (Turn == "O")
{
if (gameWon("O")) return 100;
if (gameWon("X")) return -100;
if (gameDrawn()) return 0;
return n - canWin("O");
}
return -1;
}
MycanWin(string)
返回一个数字,告诉我在一条直线或一列中有多少个 X 或 Os,但我怀疑这是为表格设置分数的一个很好的原因。
如果我有桌子:
X - X
0 X 0
- - 0
分数应该与
X - -
0 - X
0 0 X
并且应该大于
X - X
0 - -
- 0 -
而且我不知道如何让 Score 函数告诉我不同的分数。我怎样才能实现方法 Score 来告诉我这个?
编辑:
如果计算机首先是 X 而我是 O
X - - X - - X - - X - -
- - - -> 0 - - -> 0 X - -> 0 X -
- - - - - - - - - - - 0
现在我怎样才能让计算机选择下一个最佳选项
X - X
0 X -
- - 0