私はテーブルと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;
}
直線canWin(string)
または列にXまたはOがいくつあるかを示す数値を返しますが、テーブルのスコアを設定する理由が大きいとは思えません。
私がテーブルを持っている場合:
X - X
0 X 0
- - 0
スコアはと同じである必要があります
X - -
0 - X
0 0 X
とより大きくする必要があります
X - X
0 - -
- 0 -
また、スコア関数にさまざまなスコアを教えてもらう方法がわかりません。これを伝えるためにメソッドScoreを実装するにはどうすればよいですか?
編集:
コンピューターが最初にXで、私がOである場合
X - - X - - X - - X - -
- - - -> 0 - - -> 0 X - -> 0 X -
- - - - - - - - - - - 0
次に、次善のオプションをコンピュータに選択させるにはどうすればよいですか。
X - X
0 X -
- - 0