update directory structure

This commit is contained in:
2023-05-30 17:16:48 +08:00
parent 4968e6400e
commit 50111160e3
37 changed files with 150 additions and 159 deletions
+40
View File
@@ -0,0 +1,40 @@
import numpy as np
from tugo.agents.base import Agent
from tugo.agents.helpers_fast import is_point_an_eye
from game_logic.goboard import Move
from game_logic.gotypes import Point
class FastRandomBot(Agent):
def __init__(self):
Agent.__init__(self)
self.dim = None
self.point_cache = []
def _update_cache(self, dim):
self.dim = dim
rows, cols = dim
self.point_cache = []
for r in range(1, rows + 1):
for c in range(1, cols + 1):
self.point_cache.append(Point(row=r, col=c))
def select_move(self, game_state):
"""Choose a random valid move that preserves our own eyes."""
dim = (game_state.board.num_rows, game_state.board.num_cols)
if dim != self.dim:
self._update_cache(dim)
idx = np.arange(len(self.point_cache))
np.random.shuffle(idx)
for i in idx:
p = self.point_cache[i]
if game_state.is_valid_move(Move.play(p)) and \
not is_point_an_eye(game_state.board,
p,
game_state.next_player):
return Move.play(p)
return Move.pass_turn()