私は現在、私のクラスの 1 つのプロジェクトに取り組んでおり、動きを決定するために minmax および Alpha-Beta minmax アルゴリズムを使用して三目並べをプレイする AI 対戦相手を実装する必要があります。
しかし、私が抱えている問題は、ボードの可能な動きのリストを生成しようとすることです。
私の問題コードは次のとおりです
def genMoves(genBoard, turnNumber):
moveList = []
print "inMovesList"
#Figure out if X or O go now
if turnNumber % 2 == 0:
moveChar = "O"
else:
moveChar = "X"
i = 0;
while i < 9:
tempBoard = genBoard
if tempBoard[i] == "*":
#set tempBoard[i] to X or O
tempBoard[i] = moveChar
#append move, new board
moveList.append((i, tempBoard))
i+=1
print "MovesList: "
print moveList
return moveList
私のボードは、 に初期化された 9 つの文字列のリストとして表されます["*", "*", "*", "*", "*", "*", "*", "*", "*"]
。
私の目標は、タプルの最初の要素が i (X または O が挿入された場所) であり、2 番目の要素が結果のボードであるタプルのリストをムーブ リストに返させることです。
私が抱えている問題は、可能な移動の正しい数のリストを受け取ることです(例:両側で最初の4つの移動を手動でプレイすると、5つの可能な移動しか得られません)が、それぞれに同じ移動が配置されます* を含む場所。(したがって、可能な2番目の動きのためにX、O、O、O、O、O、O、O、Oのようなものを生成することになります)
minmax を使用しなければならなかったのはこれが初めてではありませんが、python で使用しなければならなかったのはこれが初めてです。
この問題を回避する方法についての提案は役に立ちます!
ありがとう!