diff --git a/__pycache__/maze_layout.cpython-312.pyc b/__pycache__/maze_layout.cpython-312.pyc new file mode 100644 index 0000000..4509790 Binary files /dev/null and b/__pycache__/maze_layout.cpython-312.pyc differ diff --git a/__pycache__/player.cpython-312.pyc b/__pycache__/player.cpython-312.pyc index ff3b2dc..f9bf06e 100644 Binary files a/__pycache__/player.cpython-312.pyc and b/__pycache__/player.cpython-312.pyc differ diff --git a/__pycache__/wall.cpython-312.pyc b/__pycache__/wall.cpython-312.pyc new file mode 100644 index 0000000..81bf806 Binary files /dev/null and b/__pycache__/wall.cpython-312.pyc differ diff --git a/escape_the_maze.py b/escape_the_maze.py new file mode 100644 index 0000000..5459d1f --- /dev/null +++ b/escape_the_maze.py @@ -0,0 +1,25 @@ +from retro.game import Game +from player import Player + +def main(): + board_size = (100, 40) + + player = Player(board_size) + + state = { + "win": False, + } + + game = Game( + agents=[player], + state=state, + board_size=board_size, + debug=False, + framerate=24, + color="white_on_black", + ) + + game.play() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/game_signature.py b/game_signature.py new file mode 100644 index 0000000..daf1c55 --- /dev/null +++ b/game_signature.py @@ -0,0 +1,8 @@ +from retro.game import Game +import inspect + +print("Game.__init__ signature:") +print(inspect.signature(Game.__init__)) + +print("\nFull source of Game.__init__:\n") +print(inspect.getsource(Game.__init__)) \ No newline at end of file diff --git a/maze_game.py b/maze_game.py deleted file mode 100644 index 51e4dde..0000000 --- a/maze_game.py +++ /dev/null @@ -1,8 +0,0 @@ -from retro.game import Game -from player import Player - -board_size = (100, 40) -player = Player(board_size) - -game = Game([player], {}, board_size=board_size) -game.play() diff --git a/player.py b/player.py index 57ba18a..e6f5232 100644 --- a/player.py +++ b/player.py @@ -1,28 +1,38 @@ -class Player: +class Player: + """ + Player agent for Escape the Maze. + Moves one step at a time using the arrow keys. + """ + name = "player" - character = "🐧" - color = "purple" + character = "🐧" # Penguin icon def __init__(self, board_size): - # Start at bottom-left corner - self.position = (0, board_size[1] - 1) + # Start near the top-left corner + width, height = board_size + self.position = (1, 1) def handle_keystroke(self, keystroke, game): + """ + Called once for each key pressed since the last turn. + Moves the player using the arrow keys. + """ x, y = self.position + new_position = None - if keystroke.name == "KEY_LEFT": - new_position = (x - 1, y) - elif keystroke.name == "KEY_RIGHT": - new_position = (x + 1, y) - elif keystroke.name == "KEY_UP": + if keystroke.name == "KEY_UP": new_position = (x, y - 1) elif keystroke.name == "KEY_DOWN": new_position = (x, y + 1) - else: + elif keystroke.name == "KEY_LEFT": + new_position = (x - 1, y) + elif keystroke.name == "KEY_RIGHT": + new_position = (x + 1, y) + + + if new_position is None: return - # Contain penguin inside board - if game.on_board(new_position): - self.position = new_position - + if game.on_board(new_position) and game.is_empty(new_position): + self.position = new_position \ No newline at end of file