Example #1
0
 def handle_time_settings(self, args):
     try:
         main_time = gtp_engine.interpret_int(args[0])
         canadian_time = gtp_engine.interpret_int(args[1])
         canadian_stones = gtp_engine.interpret_int(args[2])
     except IndexError:
         gtp_engine.report_bad_arguments()
     self.time_settings = (main_time, canadian_time, canadian_stones)
Example #2
0
 def handle_time_left(self, args):
     # colour time stones
     try:
         colour = gtp_engine.interpret_colour(args[0])
         time_remaining = gtp_engine.interpret_int(args[1])
         stones_remaining = gtp_engine.interpret_int(args[2])
     except IndexError:
         gtp_engine.report_bad_arguments()
     if stones_remaining == 0:
         stones_remaining = None
     self.time_status[colour] = (time_remaining, stones_remaining)
Example #3
0
 def handle_place_free_handicap(self, args):
     try:
         number_of_stones = gtp_engine.interpret_int(args[0])
     except IndexError:
         gtp_engine.report_bad_arguments()
     max_points = handicap_layout.max_free_handicap_for_board_size(
         self.board_size)
     if not 2 <= number_of_stones <= max_points:
         raise GtpError("invalid number of stones")
     if not self.board.is_empty():
         raise GtpError("board not empty")
     if number_of_stones == max_points:
         number_of_stones = max_points - 1
     moves = self._choose_free_handicap_moves(number_of_stones)
     try:
         try:
             if len(moves) > number_of_stones:
                 raise ValueError
             for row, col in moves:
                 self.board.play(row, col, 'b')
         except (ValueError, TypeError):
             raise GtpError("invalid result from move generator: %s"
                            % format_vertex_list(moves))
     except Exception:
         self.reset()
         raise
     self.simple_ko_point = None
     self.handicap = number_of_stones
     self.set_history_base(self.board.copy())
     return " ".join(format_vertex((row, col))
                     for (row, col) in moves)
Example #4
0
 def handle_boardsize(self, args):
     try:
         size = gtp_engine.interpret_int(args[0])
     except IndexError:
         gtp_engine.report_bad_arguments()
     if size not in self.acceptable_sizes:
         raise GtpError("unacceptable size")
     self.board_size = size
     self.reset()
Example #5
0
 def handle_fixed_handicap(self, args):
     try:
         number_of_stones = gtp_engine.interpret_int(args[0])
     except IndexError:
         gtp_engine.report_bad_arguments()
     if not self.board.is_empty():
         raise GtpError("board not empty")
     try:
         points = handicap_layout.handicap_points(number_of_stones,
                                                  self.board_size)
     except ValueError:
         raise GtpError("invalid number of stones")
     for row, col in points:
         self.board.play(row, col, 'b')
     self.simple_ko_point = None
     self.handicap = number_of_stones
     self.set_history_base(self.board.copy())
     return " ".join(format_vertex((row, col)) for (row, col) in points)
Example #6
0
 def handle_fixed_handicap(self, args):
     try:
         number_of_stones = gtp_engine.interpret_int(args[0])
     except IndexError:
         gtp_engine.report_bad_arguments()
     if not self.board.is_empty():
         raise GtpError("board not empty")
     try:
         points = handicap_layout.handicap_points(
             number_of_stones, self.board_size)
     except ValueError:
         raise GtpError("invalid number of stones")
     for row, col in points:
         self.board.play(row, col, 'b')
     self.simple_ko_point = None
     self.handicap = number_of_stones
     self.set_history_base(self.board.copy())
     return " ".join(format_vertex((row, col))
                     for (row, col) in points)
Example #7
0
 def handle_loadsgf(self, args):
     try:
         pathname = args[0]
     except IndexError:
         gtp_engine.report_bad_arguments()
     if len(args) > 1:
         move_number = gtp_engine.interpret_int(args[1])
     else:
         move_number = None
     # The GTP spec mandates the "cannot load file" error message, so we
     # can't be more helpful.
     try:
         s = self._load_file(pathname)
     except EnvironmentError:
         raise GtpError("cannot load file")
     try:
         sgf_game = sgf.Sgf_game.from_string(s)
     except ValueError:
         raise GtpError("cannot load file")
     new_size = sgf_game.get_size()
     if new_size not in self.acceptable_sizes:
         raise GtpError("unacceptable size")
     self.board_size = new_size
     try:
         komi = sgf_game.get_komi()
     except ValueError:
         raise GtpError("bad komi")
     try:
         handicap = sgf_game.get_handicap()
     except ValueError:
         # Handicap isn't important, so soldier on
         handicap = None
     try:
         sgf_board, plays = sgf_moves.get_setup_and_moves(sgf_game)
     except ValueError, e:
         raise GtpError(str(e))
Example #8
0
 def handle_boardsize(self, args):
     self.boardsize = gtp_engine.interpret_int(args[0])
Example #9
0
 def handle_boardsize(self, args):
     self.boardsize = gtp_engine.interpret_int(args[0])