コード例 #1
0
 def test_board_occupied_and_place(self):
     board = self._get_empty_board()
     point = str_to_point("2-3")
     stone_type = StoneEnum.WHITE
     self.assertFalse(board.occupied(point))
     board.place_stone(stone_type, point)
     self.assertTrue(board.occupied(point))
コード例 #2
0
    def choose_move(self, boards):
        if not self.move_referee.valid_history(self.stone_type, boards):
            return "This history makes no sense!"
        else:
            board = boards[0]
            for x in range(len(board)):
                for y in range(len(board[0])):
                    if board[x][y].get_raw() == WHITE_STONE:
                        self.buttons["{}-{}".format(x + 1, y +
                                                    1)].configure(bg="white")
                    elif board[x][y].get_raw() == BLACK_STONE:
                        self.buttons["{}-{}".format(x + 1, y +
                                                    1)].configure(bg="black")
                    else:
                        self.buttons["{}-{}".format(
                            x + 1, y + 1)].configure(bg="goldenrod")

            while not self.click:
                self.root.update()
                self.root.update_idletasks()
            if self.click == "pass":
                self.click = None
                return PASS

            ret = str_to_point(self.click)
            #if not self.move_referee.valid_move(stone_type=self.stone_type, point=ret, boards=boards, current_board=board):
            #	raise Exception("Invalid point.")
            self.click = None
            return (ret.x, ret.y)
コード例 #3
0
 def choose_move(self, boards):
     boards_f = [format_board(x.board) for x in boards]
     send_str = json.dumps([MOVE, boards_f])
     ret = self.send_and_receive(send_str)
     try:
         return str_to_point(ret)
     except:
         return ret
コード例 #4
0
def parse_move(arr):
    if isinstance(arr[1], str):
        return Stone(arr[0]).get_type(), arr[1]
    else:
        return Stone(arr[0]).get_type(), [
            str_to_point(arr[1][0]),
            [parse_board(board) for board in arr[1][1]]
        ]
コード例 #5
0
 def choose_move(self, boards):
     try:
         p_move = self.remote_player_proxy.choose_move(boards)
         p_move = p_move.replace("\"", "")
         if p_move == PASS:
             return PASS
         else:
             move_point = str_to_point(p_move)
             return (move_point.x, move_point.y)
     except PointException:
         raise PointException("Invalid move.")
コード例 #6
0
 def get_point_and_stone(self):
     return str_to_point(self.statement_arr[1]), Stone(
         self.statement_arr[2]).get_type()
コード例 #7
0
 def get_point(self):
     return str_to_point(self.statement_arr[1])
コード例 #8
0
 def test_basic_point(self):
     point = str_to_point("2-3")
     self.assertEqual(point.x, 1)
     self.assertEqual(point.y, 2)
コード例 #9
0
 def test_get_raw(self):
     point = str_to_point("3-1")
     self.assertEqual("3-1", get_raw((point.x, point.y)))
コード例 #10
0
 def test_big_point(self):
     point = str_to_point("20444-3095682")
     self.assertEqual(point.x, 20443)
     self.assertEqual(point.y, 3095681)
コード例 #11
0
def format_input(string):
    if string == PASS:
        return PASS
    else:
        return str_to_point(string)