From 62327dd5eaf7e5f8b815269b8ca84a9a5f85589a Mon Sep 17 00:00:00 2001 From: lfitchlee Date: Wed, 19 Nov 2025 09:39:01 -0500 Subject: [PATCH] I fixed it so it worked --- __pycache__/asteroid.cpython-311.pyc | Bin 0 -> 1272 bytes __pycache__/asteroid_spawner.cpython-311.pyc | Bin 0 -> 1575 bytes __pycache__/spaceship.cpython-311.pyc | Bin 0 -> 1362 bytes asteroid.py | 20 ++++++++++++++++++ asteroid_spawner.py | 19 +++++++++++++++++ nav_game.py | 10 +++++++++ spaceship.py | 21 +++++++++++++++++++ 7 files changed, 70 insertions(+) create mode 100644 __pycache__/asteroid.cpython-311.pyc create mode 100644 __pycache__/asteroid_spawner.cpython-311.pyc create mode 100644 __pycache__/spaceship.cpython-311.pyc diff --git a/__pycache__/asteroid.cpython-311.pyc b/__pycache__/asteroid.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..695e852ebf9c9aa66a013ca817d1a1aab4193202 GIT binary patch literal 1272 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 literal 0 HcmV?d00001 diff --git a/asteroid.py b/asteroid.py index 257354b..1708ef5 100644 --- a/asteroid.py +++ b/asteroid.py @@ -2,3 +2,23 @@ # ------------ # By MWC Contributors # This module defines an asteroid agent class. + +class Asteroid: + character = 'O' + + def __init__(self, position): + self.position = position + + def play_turn(self, game): + if game.turn_number % 2 == 0: + x, y = self.position + if y == HEIGHT - 1: + game.remove_agent(self) + else: + ship = game.get_agent_by_name('ship') + new_position = (x, y + 1) + if new_position == ship.position: + game.end() + else: + self.position = new_position +HEIGHT = 25 \ No newline at end of file diff --git a/asteroid_spawner.py b/asteroid_spawner.py index 92e542d..65eae7f 100644 --- a/asteroid_spawner.py +++ b/asteroid_spawner.py @@ -2,3 +2,22 @@ # ------------------- # By MWC Contributors # This module defines an AsteroidSpawner agent class. + +from random import randint +from asteroid import Asteroid + +class AsteroidSpawner: + display = False + + def __init__(self, board_size): + width, height = board_size + self.board_width = width + + def play_turn(self, game): + game.state['score'] += 1 + if self.should_spawn_asteroid(game.turn_number): + asteroid = Asteroid((randint(0, self.board_width - 1), 0)) + game.add_agent(asteroid) + + def should_spawn_asteroid(self, turn_number): + return randint(0, 1000) < turn_number \ No newline at end of file diff --git a/nav_game.py b/nav_game.py index 191d83d..1c620e3 100644 --- a/nav_game.py +++ b/nav_game.py @@ -2,3 +2,13 @@ # ------------ # By MWC Contributors # This class implements a simple game where a spaceship avoids asteroids. + +from retro.game import Game +from spaceship import Spaceship +from asteroid_spawner import AsteroidSpawner + +board_size = (25, 25) +ship = Spaceship(board_size) +spawner = AsteroidSpawner(board_size) +game = Game([ship, spawner], {"score": 0}, board_size=board_size) +game.play() diff --git a/spaceship.py b/spaceship.py index 9f3552a..36538a9 100644 --- a/spaceship.py +++ b/spaceship.py @@ -2,3 +2,24 @@ # ------------ # By MWC Contributors # This module defines a spaceship agent class. + +class Spaceship: + name = "ship" + 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"): + if keystroke.name == "KEY_LEFT": + new_position = (x - 1, y) + else: + new_position = (x + 1, y) + 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