From 684eb17658f9e79fbbaaf04eebeb510494a945d3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 26 Feb 2024 12:35:27 -0500 Subject: [PATCH] Did what I could. I think it works now! --- __pycache__/asteroid.cpython-310.pyc | Bin 0 -> 871 bytes __pycache__/asteroid_spawner.cpython-310.pyc | Bin 0 -> 1106 bytes __pycache__/spaceship.cpython-310.pyc | Bin 0 -> 903 bytes asteroid.py | 18 +++++++++++++++++ asteroid_spawner.py | 20 +++++++++++++++++++ nav_game.py | 9 +++++++++ spaceship.py | 20 +++++++++++++++++++ 7 files changed, 67 insertions(+) create mode 100644 __pycache__/asteroid.cpython-310.pyc create mode 100644 __pycache__/asteroid_spawner.cpython-310.pyc create mode 100644 __pycache__/spaceship.cpython-310.pyc diff --git a/__pycache__/asteroid.cpython-310.pyc b/__pycache__/asteroid.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc25447f71b69e46d76882ff8bf5ae3af0afb681 GIT binary patch literal 871 zcmZ8g&2G~`5Z*sKPMTD0R8gc}x%g76LV^oIAP(HZp*IU@<#@M=)A)zA(~!zJ(FbXd zyb6!7LgK(FFTjBlGfrFrBh9xnJ3HfW|07UkoAC?`O+u_Y2<4#!9r?_9MP4RVl4rI*&LgAbR40>Z<#Q`a zJ-;#nGK~Z9m6#4Jzh4F>&#NGfu9Ivcmq|61ajtZbF5`<}ktNmhU>=R7(Ur-AXxHL- zv9g|&352EepiGH%UD~6!$L$#BZ9K-dTXDg_QJOIdFlssjE}sCC*UY@A$&7wvYqsV! z2b(GWl)(O3P4Cec50nD`mymVuDDc(-2;hpJk}I}$YNr-63g<5%?mm#+S*N9_p~)F- zu%Qho*-!vrW||a!#~xG*lgVt6jRRfE)cxFJ*g0%>`@$Ikeqk9<3xcaR6?40&obF9?~P)V|}ndnfP@( ze5Cj>VFc~Ng8&`%->dMDtyw8&4w>#qiJ!z9G{^I7Pt6um{+XL3Z%1 ll=y#mL{LFJ+UL#w$fwP^m(!GJCh=ZvzyBI5lt}kb`~i;k$CUs8 literal 0 HcmV?d00001 diff --git a/__pycache__/asteroid_spawner.cpython-310.pyc b/__pycache__/asteroid_spawner.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09be1bc9ec0d31f0c7bde00400c2ac346cdd998a GIT binary patch literal 1106 zcmZuwOKTKC5bo;fdF*BqB_bx^Rd901A|AX19|(HeOD?hq&1Ac?JIOp^PcI?MAXqh%m1Idn)l^m2)Z?q_YJI)W@O=CJL;vQC{Uqh~@lbh-RPP{D zOhL{H7y*#Xb6$8O57O%HL;6aE<=#3S4N?Qe~x0z(wzBt4)=uG2Puh zn7PaH90korpxB5j7b2 z)$MdRonL)ioxUeY!O}Go>tN#ep`4#$%{nLtUB>ne%FEoG8;myI!i4OeY#w z$1@RKiV4}HWwaLXj;+&m?<7ypBxQJrYE9$VgczP8ZGiYY-(CgqzyBQsX=A9W7Qqb^ zEaIp5f;VtXyW$PoUbA25WXL(;ZF%Mq$}2UQO|(5hs>yK!=Fe7ZxEH5k64D+J3{twj zltraxImxk fr&ZAngdR&bANuXScrM!Oih50hZ}&77F>LaGNq_-B literal 0 HcmV?d00001 diff --git a/__pycache__/spaceship.cpython-310.pyc b/__pycache__/spaceship.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b852c5c13bfca7265d7b6851bbf8cfe4b918f18a GIT binary patch literal 903 zcmZ8g&2G~`5Z+y{6DM`5Du+;d;Kap3Y83Utp+c2VDF~DU?S%-ja=n|_`LV;ULrCPD z=!4KBFTz8txN+(eAoawILqcGz{X8@Fe4hDsoi!SD0@nHdL)9EYeqyj|kRxZXOcUUO zNFwPCtS_ubB)cSm6G8qTV-TIeGLHci=}}2~OwyhsS&vIc@*C1~r7J6NugEHJc(!&q z4I^dZWNJC$J^c_N&&D`7*vWHP<`F_YTYNC_q51 zH_c3vCs`VB;8)|mtzT!Mmck@UW%t(pJdt^9{dEwlWDw`yh~5K+`=@Q4WqErNj*@gB z=1CrlD3hu^nMa-WEKTy0_Bgy2TID)xo6RW4(}nefNZ`2;HQ+HghDTd;+1$>1ym=wQ z`8HMoXFKl@f`SYQOzf<9L5Eb*PegZ0kByja!Tio4DR`f)+_ZwxgFjKhzOur-rTPRs zr}Ul_?nWob@moSm%}}>eJKhbL^Js*TjbfHEUx`2Y*(XG<5>Pt{y(Hm1~h4L;T!#9=DO zN^DCTkTorUI>l?B`fTm_jQ`^9^60Ok|Ce@yD((aJDuk^IG0Ef%xP|qF_&5v4>nHl4 zY&MER9Y(p*8b7HYBH$s|0qjuY(LyZ@{y!e!lv9uSyv%n4THbeRN{Vtc?{xkBXUJgi Hm^S%uQliwB literal 0 HcmV?d00001 diff --git a/asteroid.py b/asteroid.py index 257354b..40259d3 100644 --- a/asteroid.py +++ b/asteroid.py @@ -2,3 +2,21 @@ # ------------ # By MWC Contributors # This module defines an asteroid agent class. +class Asteroid: + character = 'O' + name='temp' + def __init__(self, position, board_height): + self.position = position + self.board_height=board_height + def play_turn(self, game): + if game.turn_number % 2 == 0: + x, y = self.position + if y == self.board_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..a2f3a90 100644 --- a/asteroid_spawner.py +++ b/asteroid_spawner.py @@ -2,3 +2,23 @@ # ------------------- # 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 + self.board_height = height + + 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), self.board_height) + asteroid.name=str(game.turn_number) + 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..287c0b9 100644 --- a/nav_game.py +++ b/nav_game.py @@ -2,3 +2,12 @@ # ------------ # 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..25d71a5 100644 --- a/spaceship.py +++ b/spaceship.py @@ -2,3 +2,23 @@ # ------------ # 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()