Shuffle on legal_move() by default
This commit is contained in:
parent
1a670b59b5
commit
b4a2fd7484
2 changed files with 47 additions and 15 deletions
|
@ -8,7 +8,6 @@ class PlayerEngine:
|
|||
self.heuristic = heuristic
|
||||
self.options = options
|
||||
self.interrupt_search = False
|
||||
self.randomize_moves = False
|
||||
self.logger.info("Init engine {}, options:{}".format(
|
||||
self.__class__.__name__,
|
||||
self.options
|
||||
|
@ -21,10 +20,10 @@ class PlayerEngine:
|
|||
))
|
||||
|
||||
def get_player_moves(self, board):
|
||||
if self.randomize_moves is True:
|
||||
return random.random(board.legal_moves())
|
||||
else:
|
||||
return board.legal_moves()
|
||||
moves = board.legal_moves()
|
||||
if self.options['randomize_moves'] is True:
|
||||
random.shuffle(moves)
|
||||
return moves
|
||||
|
||||
@staticmethod
|
||||
def get_player_name(player):
|
||||
|
@ -79,7 +78,8 @@ class MinmaxPlayerEngine(PlayerEngine):
|
|||
nodes = 1
|
||||
leafs = 0
|
||||
move = []
|
||||
for m in self.get_player_moves(board):
|
||||
moves = self.get_player_moves(board)
|
||||
for m in moves:
|
||||
board.push(m)
|
||||
v, n, l = self.checkMinMax(board, False, depth - 1)
|
||||
if v > value:
|
||||
|
@ -110,7 +110,8 @@ class MinmaxPlayerEngine(PlayerEngine):
|
|||
|
||||
if friend_move:
|
||||
value = -math.inf
|
||||
for m in self.get_player_moves(board):
|
||||
moves = self.get_player_moves(board)
|
||||
for m in moves:
|
||||
board.push(m)
|
||||
v, n, l = self.checkMinMax(board, False, depth - 1)
|
||||
if v > value:
|
||||
|
@ -121,7 +122,8 @@ class MinmaxPlayerEngine(PlayerEngine):
|
|||
|
||||
else:
|
||||
value = math.inf
|
||||
for m in self.get_player_moves(board):
|
||||
moves = self.get_player_moves(board)
|
||||
for m in moves:
|
||||
board.push(m)
|
||||
v, n, l = self.checkMinMax(board, True, depth - 1)
|
||||
if v < value:
|
||||
|
@ -145,7 +147,8 @@ class AlphabetaPlayerEngine(PlayerEngine):
|
|||
nodes = 1
|
||||
leafs = 0
|
||||
move = []
|
||||
for m in self.get_player_moves(board):
|
||||
moves = self.get_player_moves(board)
|
||||
for m in moves:
|
||||
board.push(m)
|
||||
value, n, l = self.checkAlphaBeta(board, False, depth - 1, alpha, beta)
|
||||
board.pop()
|
||||
|
@ -175,7 +178,9 @@ class AlphabetaPlayerEngine(PlayerEngine):
|
|||
return self.heuristic.get(board, self.player), nodes, leafs
|
||||
|
||||
if friend_move:
|
||||
for m in self.get_player_moves(board):
|
||||
|
||||
moves = self.get_player_moves(board)
|
||||
for m in moves:
|
||||
board.push(m)
|
||||
v, n, l = self.checkAlphaBeta(board, False, depth - 1, alpha, beta)
|
||||
board.pop()
|
||||
|
@ -191,7 +196,8 @@ class AlphabetaPlayerEngine(PlayerEngine):
|
|||
return alpha, nodes, leafs
|
||||
|
||||
else:
|
||||
for m in self.get_player_moves(board):
|
||||
moves = self.get_player_moves(board)
|
||||
for m in moves:
|
||||
board.push(m)
|
||||
v, n, l = self.checkAlphaBeta(board, True, depth - 1, alpha, beta)
|
||||
board.pop();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue