我目前正在为我的一个课程做一个项目,我必须使用 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 个字符串的列表["*", "*", "*", "*", "*", "*", "*", "*", "*"]
。
我的目标是让 move list 返回一个元组列表,元组的第一个元素是 i (插入 X 或 O 的位置),第二个元素是结果板。
我遇到的问题是我会收到一个包含正确数量的可能移动的列表(例如:如果我手动播放双方的前 4 个移动,它只会给我 5 个可能的移动)但是它会在每个移动中放置相同的移动包含 * 的位置。(所以它最终会为可能的第二步生成类似 X,O,O,O,O,O,O,O,O 的东西)
这不是我第一次不得不使用 minmax,但这是我第一次不得不在 python 中使用它。
有关如何解决此问题的任何建议都会有所帮助!
谢谢!