Ejemplo n.º 1
0
class Client:
    def __init__(self, width, height, evaluator="default", name="JJF"):
        self.color = ""
        self.width = width
        self.height = height
        self.innerstate = GameState(width, height)
        self.evaluator = Evaluator(evaluator)

        self.name = name

        self.innerstate.populate_bauern()

    def find_best_move(self):
        rating, move = self.evaluator.evaluate(self.innerstate, -100, 100)
        return move

    def connect(self):
        print(self.name)

    def start_game(self):
        self.color = input()
        print("ok")
        self.innerstate = GameState(self.width, self.height)
        self.innerstate.populate_bauern()

    def end_game(self):
        movestring = input()
        if movestring == "done":
            return
        else:
            return  #error!

    def run(self):
        self.connect()
        while True:
            turn = "white"
            self.start_game()
            while True:
                if turn == self.color:
                    move = self.find_best_move()
                    print(
                        Move.write_move(move, turn == "black",
                                        self.innerstate))
                else:
                    movestring = input()
                    if movestring == "done":
                        break
                    else:
                        move = Move.parse_move(movestring, turn == "black",
                                               self.innerstate)

                if not self.innerstate.checkIfLegal(move):
                    print("uups")  #error
                self.innerstate.applyMove(move)
                self.innerstate.rotateBoard()
                turn = self.invert_turn(turn)

                if self.innerstate.game_is_finished() != None:
                    self.end_game()
                    break

    @staticmethod
    def invert_turn(turn):
        return "black" if turn == "white" else "white"