2

Tic-Tac-Toe に多少似たゲームの AI をコーディングしようとしています。その規則はここで見ることができます。

私が使用している最小最大アルゴリズムと分析関数はここにあります

私がこれまでに試した方法:

  1. 現在のプレーヤーに適したパターンをいくつか作成しました。(Pythonで)

例えばmy_pattern = " ".join(str(x) for x in [piece, None, piece, piece, None])

  1. このようなパターンを、六角形のゲームボード上の 6 つの可能なすべての方向に一致させます (空白ではありません)。正確には、my_pattern6 つの異なる配列 (各配列は 6 つの異なる向きのいずれかを表します) と一致します。

では、この分析関数は実際に何を計算すればよいのでしょうか。

  1. 盤面全体のスコアは?
  2. 船上で行われた最後の動きのスコアは?

誰かが分析機能の目的を正確に説明できれば、それは素晴らしいことです。

4

1 に答える 1

0

分析機能は、ボードの現在の状態を表します。最後の移動、前の移動、またはボードの位置に到達するための移動の順序が含まれる場合と含まれない場合があります。また、誰の番でプレイするかを考慮する必要があります。

私が言いたいのは、同じボードが、誰の番かによって、白/黒にとって良い/悪いかもしれないということです。(チェスではツグズワンの状況と呼ばれます)。

また、同じ盤面は様々な手番で到達する可能性があるため、ゲームの種類によって分析に含めるかどうかは異なります。(高レベルのチェス エンジンには確かに移動の順序が含まれていますが、現在のボードを計算するためではなく、その位置に到達する可能性をさらに分析するためです)。ただし、このゲームでは、分析機能に最後または前の手 (順序) を含める必要はないと思います。

編集:

分析機能の例:

value = 10000*W(4) - 10000*W(3) + 200*W(2.1) + 200*W(1.2) + 100*W(2) + 100*W(1.1) + 2*W(1e) + 10*W(1m) + 30*W(1c) - (10000*B(4) - 10000*B(3) + 200*B(2.1) + 200*B(1.2) + 100*B(2) + 100*B(1.1) + 2*B(1e) + 10*B(1m) + 30*B(1c))

どこ:

W = white
B = black pieces
4 = made line of 4 pieces
3 = made line of 3 pieces
2 = made line of 2 pieces having possibility of getting extended to 4 from atleast one side
. = blank (ie, 1.2 = W.WW on the board)
1.1 = Piece|Blank|Piece and possibility of extending to 4 from atleast one side
e|m|c = edge|middle|center of board, and possibility of extending to 4 from either sides

この分析関数の正の結果は白が優れていることを意味し、0 はバランスのとれたボードを示し、負の値は黒が有利な位置にあることを示します。実行するテストの結果により、重みを変更できます。ただし、考えられるすべての組み合わせを見つけるのは大変な作業ですが、ゲームはそのようなものです :)

于 2016-11-28T12:14:59.410 に答える