diff --git a/Frogger.py b/Frogger.py index e69de29..3fb541b 100644 --- a/Frogger.py +++ b/Frogger.py @@ -0,0 +1,11 @@ +from retro.game import Game +from frog import Frog +from obstacle_spawner import ObstacleSpawner + +board_size = (25, 25) + +board_size = (25, 25) +froggy = Frog(board_size) +spawner = ObstacleSpawner() +game = Game([froggy, spawner], {"score": 0}, board_size=board_size) +game.play() \ No newline at end of file diff --git a/__pycache__/frog.cpython-313.pyc b/__pycache__/frog.cpython-313.pyc new file mode 100644 index 0000000..5d011b8 Binary files /dev/null and b/__pycache__/frog.cpython-313.pyc differ diff --git a/__pycache__/obstacle.cpython-313.pyc b/__pycache__/obstacle.cpython-313.pyc new file mode 100644 index 0000000..33909a0 Binary files /dev/null and b/__pycache__/obstacle.cpython-313.pyc differ diff --git a/__pycache__/obstacle_spawner.cpython-313.pyc b/__pycache__/obstacle_spawner.cpython-313.pyc new file mode 100644 index 0000000..cc6fba4 Binary files /dev/null and b/__pycache__/obstacle_spawner.cpython-313.pyc differ diff --git a/frog.py b/frog.py new file mode 100644 index 0000000..9526309 --- /dev/null +++ b/frog.py @@ -0,0 +1,22 @@ +class Frog: + name = "froggy" + character = '^' + + def __init__(self, board_size): + board_width, board_height = board_size + self.position = (board_width // 2, board_height - 1) + + def handle_keystroke(self, keystroke, game): + x, y = self.position + if keystroke.name in ("KEY_LEFT", "KEY_RIGHT", "KEY_UP"): + if keystroke.name == "KEY_LEFT": + new_position = (x - 1, y) + if keystroke.name == "KEY_RIGHT": + new_position = (x + 1, y) + if keystroke.name == "KEY_UP": + new_position = (x, y + 1) + if game.on_board(new_position): + if game.is_empty(new_position): + self.position = new_position + else: + game.end() \ No newline at end of file diff --git a/obstacle.py b/obstacle.py new file mode 100644 index 0000000..0c7a6e2 --- /dev/null +++ b/obstacle.py @@ -0,0 +1,19 @@ +class Obstacle: + character = 'O' + + def __init__(self, position): + self.position = position + + def play_turn(self, game): + width, height = game.board_size + if game.turn_number % 2 == 0: + x, y = self.position + if y == height + 1: + game.remove_agent(self) + else: + froggy = game.get_agent_by_name('froggy') + new_position = (x, y + 1) + if new_position == froggy.position: + game.end() + else: + self.position = new_position diff --git a/obstacle_spawner.py b/obstacle_spawner.py new file mode 100644 index 0000000..6beb2c4 --- /dev/null +++ b/obstacle_spawner.py @@ -0,0 +1,15 @@ +from random import randint +from obstacle import Obstacle + +class ObstacleSpawner: + display = False + + def play_turn(self, game): + width, height = game.board_size + game.state['score'] += 1 + if self.should_spawn_obstacle(game.turn_number): + obstacle = Obstacle((randint(0, width - 1), 0)) + game.add_agent(obstacle) + + def should_spawn_obstacle(self, turn_number): + return randint(0, 1000) < turn_number