Exemple #1
0
 def get_action(self, state):
     """ Wait for the user to enter a valid action on the keyboard.
         Return the first valid action entered since the last check.
         (KeyboardAgent, State) -> str
     """
     legal = state.get_legal_actions(self.agent_index)
     while True:
         keys = keys_waiting() + keys_pressed()
         if (self.WEST_KEY in keys
                 or 'Left' in keys) and Directions.WEST in legal:
             move = Directions.WEST
             break
         if (self.EAST_KEY in keys
                 or 'Right' in keys) and Directions.EAST in legal:
             move = Directions.EAST
             break
         if (self.NORTH_KEY in keys
                 or 'Up' in keys) and Directions.NORTH in legal:
             move = Directions.NORTH
             break
         if (self.SOUTH_KEY in keys
                 or 'Down' in keys) and Directions.SOUTH in legal:
             move = Directions.SOUTH
             break
         sleep(0.05)
     return move
Exemple #2
0
    def get_action(self, state):
        from graphics_utils import keys_waiting
        from graphics_utils import keys_pressed
        keys = keys_waiting() + keys_pressed()
        if keys != []:
            self.keys = keys

        legal = state.get_legal_actions(self.index)
        move = self.get_move(legal)

        if move == Directions.STOP:
            # Try to move in the same direction as before
            if self.last_move in legal:
                move = self.last_move

        if (self.STOP_KEY in self.keys) and Directions.STOP in legal:
            move = Directions.STOP

        if move not in legal:
            move = random.choice(legal)

        self.last_move = move
        return move