def test_winlose_scorer(self): board = Board() board.put_disc('black', 3, 2) board.put_disc('white', 2, 2) board.put_disc('black', 2, 3) board.put_disc('white', 4, 2) board.put_disc('black', 1, 1) board.put_disc('white', 0, 0) scorer = coord.WinLoseScorer() self.assertEqual(scorer.get_score(None, board, None, None), -10006) possibility_b = board.get_legal_moves('black') possibility_w = board.get_legal_moves('white') self.assertEqual( scorer.get_score(None, board, possibility_b, possibility_w), None)
def test_none_display(self): board8x8 = Board() class Test(): def next_move(self, disc, board): return (3, 2) black_player = Player('black', 'Test', Test()) white_player = Player('white', 'User', ConsoleUserInput()) display = NoneDisplay() with captured_stdout() as stdout: display.progress(board8x8, black_player, white_player) legal_moves = board8x8.get_legal_moves('black') display.turn(black_player, legal_moves) black_player.put_disc(board8x8) display.move(black_player, legal_moves) display.progress(board8x8, black_player, white_player) display.foul(black_player) display.win(black_player) display.draw() lines = stdout.getvalue().splitlines() self.assertEqual(lines, [])
def test_console_display(self): board8x8 = Board() class Test(): def next_move(self, disc, board): return (3, 2) black_player = Player('black', 'Test', Test()) white_player = Player('white', 'User', ConsoleUserInput()) display = ConsoleDisplay() self.assertEqual(display.sleep_time_turn, 1) self.assertEqual(display.sleep_time_move, 1) display = ConsoleDisplay(sleep_time_turn=0.001, sleep_time_move=0.001) self.assertEqual(display.sleep_time_turn, 0.001) self.assertEqual(display.sleep_time_move, 0.001) with captured_stdout() as stdout: display.progress(board8x8, black_player, white_player) legal_moves = board8x8.get_legal_moves('black') display.turn(black_player, legal_moves) black_player.put_disc(board8x8) display.move(black_player, legal_moves) display.progress(board8x8, black_player, white_player) display.foul(black_player) display.win(black_player) display.draw() lines = stdout.getvalue().splitlines() self.assertEqual(lines[0], "〇Test:2 ●User:2") self.assertEqual(lines[1], " a b c d e f g h") self.assertEqual(lines[2], " 1□□□□□□□□") self.assertEqual(lines[3], " 2□□□□□□□□") self.assertEqual(lines[4], " 3□□□□□□□□") self.assertEqual(lines[5], " 4□□□●〇□□□") self.assertEqual(lines[6], " 5□□□〇●□□□") self.assertEqual(lines[7], " 6□□□□□□□□") self.assertEqual(lines[8], " 7□□□□□□□□") self.assertEqual(lines[9], " 8□□□□□□□□") self.assertEqual(lines[10], "") self.assertEqual(lines[11], "〇Test's turn") self.assertEqual(lines[12], " 1: ('d', '3')") self.assertEqual(lines[13], " 2: ('c', '4')") self.assertEqual(lines[14], " 3: ('f', '5')") self.assertEqual(lines[15], " 4: ('e', '6')") self.assertEqual(lines[16], "putted on ('d', '3')") self.assertEqual(lines[17], "") self.assertEqual(lines[18], "〇Test:4 ●User:1") self.assertEqual(lines[19], " a b c d e f g h") self.assertEqual(lines[20], " 1□□□□□□□□") self.assertEqual(lines[21], " 2□□□□□□□□") self.assertEqual(lines[22], " 3□□□〇□□□□") self.assertEqual(lines[23], " 4□□□〇〇□□□") self.assertEqual(lines[24], " 5□□□〇●□□□") self.assertEqual(lines[25], " 6□□□□□□□□") self.assertEqual(lines[26], " 7□□□□□□□□") self.assertEqual(lines[27], " 8□□□□□□□□") self.assertEqual(lines[28], "") self.assertEqual(lines[29], "〇Test foul") self.assertEqual(lines[30], "〇Test win") self.assertEqual(lines[31], "draw")
def test_random(self): random = Random() board = Board() legal_moves = board.get_legal_moves('black') self.assertTrue(random.next_move('black', board) in legal_moves)
import sys import random sys.path.append("../") from reversi.board import Board # NOQA size = 8 board = Board(size) done = False pass_num = 0 while not done: print("=" * 80) print(board) board_info = board.get_board_info() legal_moves = board.get_legal_moves() print("board_info: ", board_info) print("legal_moves: ", legal_moves) if len(legal_moves) == 0: print("action: Pass") board.pass_move() pass_num += 1 else: action = random.choice(legal_moves) print("action: ", action) reversibles = board.get_flippable_discs(action) print("reversibles: ", reversibles) board.move(action) pass_num = 0