Exemplo n.º 1
0
class GomokuController(object):
    def __init__(self):
        self.player1 = Player('X')
        self.player2 = AIPlayer('O')
        self.board = Board(self.player1, self.player2)

    def analyze_move(self, move):
        self.board.analyze_move(move)
        return self.board.analyze_victory()

    def get_current_player_symbol(self):
        return self.board.get_current_player().get_symbol()

    def get_current_player(self):
        return self.board.get_current_player()

    def restart_match(self):
        self.board.restart_match()

    def match_ended(self):
        return self.board.get_match_ended()

    def move_for_ai(self):
        move = self.player2.minimax(self.board, self.player1,
                                    self.player2.global_alpha,
                                    self.player2.global_beta)
        self.analyze_move(move[1])

    def get_board(self):
        return self.board
Exemplo n.º 2
0
def test_simulate_move(ai_player):
  player2 = Player('O')
  board = Board(ai_player, player2)
  board.analyze_move((1,1))
  board.switch_current_player()
  best_move = ai_player.simulate_move(board, ai_player)
  assert (2,2) == best_move
Exemplo n.º 3
0
def test_calculate_points_for_human(ai_player):
  player2 = Player('O')
  board = Board(player2, ai_player)
  moves_for_diagonal_victory = [(1,3), (2,4), (3,5)]
  for move in moves_for_diagonal_victory:
    board.analyze_move(move)
    board.switch_current_player()
  points = ai_player.calculate_points_for_human(board, player2)
  assert points == 18162
Exemplo n.º 4
0
def test_calculate_points_diagonal_right_left(ai_player):
  player2 = Player('O')
  board = Board(ai_player, player2)
  moves_for_diagonal_victory = [(9,8), (10,7), (11,6), (12,5), (13,4)]
  for move in moves_for_diagonal_victory:
    board.analyze_move(move)
    board.switch_current_player()
  ai_player.calculate_points_diagonal_right_left(board, ai_player)
  assert ai_player.sequences[4] == 4 and ai_player.gaps[4] == 7
Exemplo n.º 5
0
def test_calculate_points_vertical(ai_player):
  player2 = Player('O')
  board = Board(ai_player, player2)
  moves_for_vertical_victory = [(0,1), (1,1), (2,1), (3,1), (4,1)]
  for move in moves_for_vertical_victory:
    board.analyze_move(move)
    board.switch_current_player()
  ai_player.calculate_points_vertical(board, ai_player)
  assert ai_player.sequences[4] == 2 and ai_player.gaps[4] == 3
Exemplo n.º 6
0
def test_calculate_points_horizontal(ai_player):
  player2 = Player('O')
  board = Board(ai_player, player2)
  moves_for_horizontal_victory = [(1,1), (1,2), (1,3), (1,4), (1,5)]
  for move in moves_for_horizontal_victory:
    board.analyze_move(move)
    board.switch_current_player()
  ai_player.calculate_points_horizontal(board, ai_player)
  assert ai_player.sequences[4] == 1 and ai_player.gaps[4] == 2
Exemplo n.º 7
0
def test_calculate_points_diagonal_left_right_double(ai_player):
  ai_player.restart_sequences_and_gaps()
  player2 = Player('O')
  board = Board(ai_player, player2)
  moves_for_diagonal_victory = [(1,3), (2,4), (3,5)]
  for move in moves_for_diagonal_victory:
    board.analyze_move(move)
    board.switch_current_player()
  ai_player.calculate_points_diagonal_left_right(board, ai_player)
  assert ai_player.sequences[2] == 1 and ai_player.gaps[2] == 2
def board():
  player1 = Player('X')
  player2 = Player('O')
  board = Board(player1, player2)
  return board
def play():
    board = Board()
    players = [Player(PlayerColor.BLUE), Player(PlayerColor.RED)]

    run(itertools.cycle(players), board)
Exemplo n.º 10
0
 def __init__(self):
     self.player1 = Player('X')
     self.player2 = AIPlayer('O')
     self.board = Board(self.player1, self.player2)