コード例 #1
0
def wait_for_move(prevboard: Board, state: State, expected_move):
    pboard = prevboard
    board = state.board()
    while True:
        d, diffs = pboard.diff(board)
        if d == 1:
            dr, dc = diffs[0]
            if pboard(dr, dc) != 0:
                raise MoveError("You can\'t put sign on busy field")
            if board(dr, dc) != expected_move:
                raise MoveError("It's not your sign")
            return dr, dc
        elif d > 1:
            raise MoveError("You can do only one move")
        pboard = board
        board = state.board()
コード例 #2
0
 def move(self, state: State, opponent):
     board = state.board()
     self.say("Now it's my turn! You will lose!")
     movement = optimum_move(board, opponent.symbol, self.symbol, self.symbol).index
     r, c = movement
     self.say("Please put {0} in {1} row and {2} column".format(
         symbol_name(self.symbol), number_name(r+1), number_name(c + 1)))
     try:
         dr, dc = wait_for_move(board, state, self.symbol)
         if dr != r or dc != c:
             raise MoveError("Sign was putted not in requested place")
     except MoveError as e:
         self.say("You tried to lie me. I won't play with you, because {0}".format(e))
         raise MoveError("Computer move error")
     self.say("Thank you")
コード例 #3
0
 def move(self, state: State, opponent: Player):
     correct_input = False
     board = state.board()
     while not correct_input:
         movement = input()
         if len(movement) > 1:
             raise TypeError("Wrong input!\n")
         if ord(movement) < 48 or ord(movement) > 56:
             raise TypeError("Wrong input!\n")
         movement = int(movement, 10)
         if board(movement // len(board), movement % len(board)) != 0:
             print("This field is busy!\nWrite correct number of field.\n")
             print(state)
         else:
             correct_input = True
     state.move(movement // len(board), movement % len(board), self.symbol)
コード例 #4
0
 def move(self, state: State, opponent: Player):
     movement = optimum_move(state.board(), opponent.symbol, self.symbol, self.symbol).index
     r, c = movement
     state.move(r, c, self.symbol)
コード例 #5
0
 def move(self, state: State, opponent):
     board = state.board()
     print("Waiting for {0} move".format(self.name))
     wait_for_move(board, state, self.symbol)
     print("{0} has done a move".format(self.name))