Co my właściwie mamy zrobić :?. Ja zrozumiałem to w ten sposób:
Za każdym razem , gdy mam zdecydować o wyborze ruchu mogę rozgrywać losowe gry, z tymże w sumie mogę zrobić około 20000 ruchów.
def runGame(board):
steps = 0
while not board.isEnd():
moves = board.aviableMoves()
m = random.choice(moves)
board.executeMove(m)
steps += 1
return board.getWinner(), steps
def randomAgent(board):
moves = board.aviableMoves()
d = {i: 0 for i in range(len(moves))}
steps, i = 0, 0
while steps < 20000:
newBoard = Board(fromBoard=board)
newBoard.executeMove(moves[i])
winner, gameTook = runGame(newBoard)
d[i] += 1 if winner == board.player else -1
i = (i + 1) % len(moves)
steps += gameTook
choosenIndex = max([(v, k) for k, v in d.items()])
return moves[choosenIndex[1]]
Działa to strasznie wolno (kilkadziesiąt sekund na ruch) i jest w dodatku beznadziejne…