From ac50df18d5ddce91d8b228182da5d1eaaf105ad6 Mon Sep 17 00:00:00 2001 From: cdonahue Date: Mon, 17 Nov 2025 09:47:12 -0500 Subject: [PATCH] we didnt even write it a good 99% of it was copy and paste. --- __pycache__/asteroid.cpython-311.pyc | Bin 0 -> 1282 bytes __pycache__/asteroid_spawner.cpython-311.pyc | Bin 0 -> 1572 bytes __pycache__/spaceship.cpython-311.pyc | Bin 0 -> 1361 bytes asteroid.py | 22 +++++++++++++---- asteroid_spawner.py | 22 +++++++++++++---- nav_game.py | 13 ++++++---- spaceship.py | 24 +++++++++++++++---- 7 files changed, 65 insertions(+), 16 deletions(-) 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..6d54b8a36969ac48368146963ed99b91e22fd26e GIT binary patch literal 1282 zcmZuw&1(}u6rb6Tn3{&BrW&zgBgDfV?6%n8MFpYSSg;~`3c|3>Y@2P9-E?+iP1s-$ z9-??irIO+)f>fpcF>NUr_9S@fEmBWC`DT->)c7X*^7eiF<~Q%nevU@ZB9L3@aYGdl z`pIAVBK3^pBp6L3pgBa*D@5@QWbVS#l`Nvd6Qqc_zJvec-plb7Fq%k5Sxiw@pg1d1 z;T6hCR0J(k2`XhTeAjk#W*OAOk8%MpRB~H{=XlJAaj}aCSY4qAit&Piy>Q904acxd zMernBFD$VTq}aSVnLNp;d8??aIck|&zO1XWy1nXHCAFxn8s;)tH=I1lSyWex>$z#Q zY#PoDwV*8$raR11wH~#}QpF1sVnCRX>S&+wWZ%WRWk*46p!UUNU3wd>!#V~BI&~y| z9RElcphr#Q;uW6a3&mC7O@&pz1+40#m3|-5Gw{`fn&^s7e=bl%#VX9Nmw(yCEsi`O zfD_d00OD?dieaKpfI~|jC;|tSPG{F7S8zqx6Jkq3O?G8h`pdA#;sT)Y?hnWgcy8nEG9{GrMVN4y0`Jo|`;VXAqfq@3|0PMMj+EEgAb<`3BmW$rzg%RKeQm|nD= z>qJ}DO@}O2h^ZBIPxAHXvhMs75OtF(A$G9@ojBCGSQkoh@|!+sdhZEb^G;f{ce4&Jra9= zfBW&~{F|5cm+jct_n2}JQ@*6WDf_XR!`RGT|Mw#?{ylO1AaVW6(taX+m`FFIcJgX# zy0!K(y@y-%bv}n1&?O{UJ%37fp8Or4~rsd%KWJ6HKE`j=rdjmf!X* zDfodS!d6vJ^uTW4PiE4|!0FnFp_YwFRttouZYIW?|T|3wf z{k@uN?K<8L0ER8z^o3n>51O}X9nT3rskNrPh zy?T+v@lqZdY-}t=0v=J|D{C=xf`J!Lij7yuxUk(bFey;ymKfT>A zEXRfAUe<>O04NlB31XP26}-2qm5)Fo)=V2}zn$yh{p!HeKi(&{SH&fl67S!SY0os#iOaK4? literal 0 HcmV?d00001 diff --git a/__pycache__/spaceship.cpython-311.pyc b/__pycache__/spaceship.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0af4b9e0fd939f013d145e4694953896e7557464 GIT binary patch literal 1361 zcmZuwPj3@P6rb5YVI4blz>ylD2!}?MmPj^;3Jy(>Dut5JHiw1_R@Bk5JIOANcg^gE z5NloKz`;e4FbK)0C-;(47M6Q(l2t>Nw2XAwOcmmbkA#B@ z!1NGBHEf}pWZ{}@Nj1fiAEBCRDL_Xo6}(4yZnLl&&(#%(Mb}sP=v~iX z7V(`H<@to)bgaPUg+#Eavt|drs7M*s;bPVH8nkL!o@>|}v^r1ydf+vy4WsV3Yh=?2 zY+`yAtu{8z%he6n39eMvjk|==fO%CveQBk+#Wg}4xF@7_Dyu*x)u|BB{{qN1il!?A zZK{*+u0*G&U*f@O{pIW*Q-hhW_9tgM%Fb8^_5oNTQ&cKlS=IgpO%H|WUV4M#`pIo2 z#P`x}L2n-*X1=G9>TwsC2KALieM4ncYOC&vSO&C24yArZ`M=*E-ic)VUw}a0i>00R&q@b(E=T!^o$LGO zuI}f>FDg#%{M0}5S8-;)I1`np`d|O5_V2%Fbqn3X>vu&!c+!5{ez7trUVK%&I7G_W z`Ka`1Z|>P#|Fc1<@~TuBBKhR`X!=rj{`vP^*smuhdkfDNp5A(Xs~hiO2^FqE(BUXJ z#|Ug3(p%C`hyfN=BZQ9<((tSecqHKkLhf%E>&Xq95EaOow!sWDpo|qkX6JzXj$)j+ zL`;lDOvJSKvp}}99pz7M&qw2>?Zu%YsdGb=5iPGmM#o74EHIaJoM2xN0Yu($yhCj^ hN%uPY9CUHeYrqU;jPXz^VSqhO{t>#jAGwHu{{sS*MS%bS literal 0 HcmV?d00001 diff --git a/asteroid.py b/asteroid.py index 257354b..08fa512 100644 --- a/asteroid.py +++ b/asteroid.py @@ -1,4 +1,18 @@ -# asteroid.py -# ------------ -# 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_by_name(self.name) + 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 \ No newline at end of file diff --git a/asteroid_spawner.py b/asteroid_spawner.py index 92e542d..7c757cb 100644 --- a/asteroid_spawner.py +++ b/asteroid_spawner.py @@ -1,4 +1,18 @@ -# asteroid_spawner.py -# ------------------- -# 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 diff --git a/nav_game.py b/nav_game.py index 191d83d..acd5be7 100644 --- a/nav_game.py +++ b/nav_game.py @@ -1,4 +1,9 @@ -# nav_game.py -# ------------ -# 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() \ No newline at end of file diff --git a/spaceship.py b/spaceship.py index 9f3552a..e82ddbc 100644 --- a/spaceship.py +++ b/spaceship.py @@ -1,4 +1,20 @@ -# spaceship.py -# ------------ -# 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()