В настоящее время я работаю над проектом для одного из моих классов, где мне нужно реализовать противника AI для воспроизведения tic-tac-toe с использованием minmax и альфа-бета-алгоритмов minmax для определить ходы.Создайте список возможных ходов Python Tic-Tac-Toe
Проблема, с которой я столкнулась, заключается в том, чтобы создать список возможных ходов для платы.
Мой код Проблема заключается в следующем
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), а второй элемент является результирующей таблицей.
Проблема заключается в том, что я получу список с правильным количеством возможных ходов (например: если я вручную сыграю первые 4 хода для обеих сторон, это даст мне только 5 возможных ходов), однако он поместит то же движение в каждом месте, которое содержит *. (Таким образом, он заканчивает создание чего-то вроде X, O, O, O, O, O, O, O, O для возможных вторых ходов)
Это не первый раз, когда мне приходилось использовать minmax, но это первый раз мне приходилось делать это на питоне.
Любые предложения о том, как обойти эту проблему, были бы полезны!
Спасибо!
Спасибо за быстрый ответ! Я знал, что это будет что-то глупое ... – OmegaTwig
См. Также: http://docs.python.org/2/tutorial/classes.html#a-word-about-names-and-objects –