我是新来的,所以我道歉,如果我在这里张贴任何错误。。。我做了一个搜索,但没有找到多少对我有帮助的。我在写一个关于井字游戏的变异的极大极小算法。这种变化允许玩家在棋盘上的任何地方放置一个X或O。我在递归方面遇到了麻烦,希望能得到一些指导。在class TicTacToeBoard:
def __init__(self, initGameBoard):
#initGameBoard is a string
self.board = initGameBoard
def getEmptySpaces(self):
return self.board.count("-")
def markX(self, index):
self.board = self.board[:index] + "x" + self.board[index+1:]
def markO(self, index):
self.board = self.board[:index] + "o" + self.board[index+1:]
def endGame(self):
#determines if someone has won
endGameStates = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]
for x in range(len(endGameStates)):
trySlice = self.board[endGameStates[x][0]] + self.board[endGameStates[x][1]] + \
self.board[endGameStates[x][2]]
if trySlice[0] == trySlice[1] == trySlice[2] and "-" not in trySlice:
return True
return False
def draw(self):
#determines if there has been a draw
if "-" not in self.board:
endGameStates = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]
for x in range(len(endGameStates)):
trySlice = self.board[endGameStates[x][0]] + self.board[endGameStates[x][1]] + \
self.board[endGameStates[x][2]]
if trySlice[0] == trySlice[1] == trySlice[2] and "-" not in trySlice:
return False
return True
else:
return False
def __str__(self):
boardStr = ""
for char in self.board:
boardStr += char
return boardStr
以上是我的董事会课程。我只是在用琴弦,没有做任何太花哨的事。我还使用了一个非常简单的节点类,它只存储数据(虽然我想我也可以使用字符串,我猜…)
^{pr2}$
fitnessFunction根据剩余的空格数返回分数。我的递归miniMax方法有问题。我需要做的是检查基本情况(无论是球员获胜,还是平局),如果这些基本情况不是真的,我会根据剩余的空位数计算出谁的移动。我想我已经做到了,但是我不知道下一步该怎么做(递归部分)。我还需要能够得到最小或最大的孩子,这取决于轮到谁。我想我被递归弄糊涂了。我是CS新手,没怎么接触过。如有任何提示,将不胜感激!:)