From 8769519960b8a99f72acf51887123c7447f4641d Mon Sep 17 00:00:00 2001 From: juddin2 Date: Thu, 4 Dec 2025 21:14:43 -0500 Subject: [PATCH] I made sure my circles are falling continously and as the player doges the score increases. I'm proud of making the circles fall from the top one at a time. I was stuck on making the circle fall. --- __pycache__/circle.cpython-312.pyc | Bin 0 -> 1466 bytes __pycache__/circle.cpython-313.pyc | Bin 0 -> 1348 bytes __pycache__/player.cpython-312.pyc | Bin 159 -> 1361 bytes circle.py | 26 ++++++++++++++++++++++++++ circle_spawner.py | 18 ++++++++++++++++++ nav_game.py | 11 ++++++++++- player.py | 19 ++++++++++++------- 7 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 __pycache__/circle.cpython-312.pyc create mode 100644 __pycache__/circle.cpython-313.pyc create mode 100644 circle.py create mode 100644 circle_spawner.py diff --git a/__pycache__/circle.cpython-312.pyc b/__pycache__/circle.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..567f76dbfd9a44f50b71d95ce1b3b4e3d7ab5897 GIT binary patch literal 1466 zcmZ`(&1)M+6rb5INoxs7Nu1clAu_nw+m8sPZB8a8G*B8^m!1kDWZ3Mit+l0O0|FLiY2GPGdG$+r?63OV)7uGBWdd51S|=DqiuH}Cg$ ze@&%y1oG3`E$51i&?~W-h%z=tOJMX7MHH7&1s5?!68ZvBX&+Jfg%m{Z;Aii#4&MVU%Ph06P=s8R*A)>I9RYo9yJD%)JMq7{E* zjV}vE35+SB zm`W2?+KP|1L@iSiqN;5TP(_hb0<4a?YR7!l*QnHjhz+S7_v3!-BE0Ptgjg2PW~QKE z`(k{AffQf!f$J8`-1Y;=`0nCYQDs-!mF6K2VpGsH*^*Xa_l{^BMylJ;A9n3sF&86x zfF23ed?~7I(mSecNH9`@p-`au_}hCUw$Akpvs@Q4CW@n1U)<!dcS-BpfOC|I4YbbmtYOxf>yUR_~$8Owu`ogKI`kesRnb#IxK2o=N_Wb_P7?BX$1IOM zO4#*;RWg}rc{XE7NM<)cJx3u>*gqChDwLqLeihU{3iL~R_kzsjy)R!YSX~@xS=ESA zMBut1b4~mbtCf(?2;zP4{0I9cz8aNvhb@Cc%u-$a+5VC-#($#s{+8yj@fv{&bN&JB C3qMK# literal 0 HcmV?d00001 diff --git a/__pycache__/circle.cpython-313.pyc b/__pycache__/circle.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ee107bf41f54464114b2fa131f6ad155c772224 GIT binary patch literal 1348 zcmZux&2Jk;6rc5e_#<|`o5ZObaj^TL)I~%JG#5mPDtZVN1SyMEtE@WOtS9S*^{z8J z#w4elkRuc+7DP!-?UCO2SE?Yo8gb*)Td9S(GH>lopyEk>`)1yo_kQ!JBvNKssv@~6eZwuoXS%^v|q8U@7 zvYDZZDO1%{77^7 zwn4e5A#FUDc&-;l9`nMWk>N^2{B4>S-Uv?CYWz#f8btoGA3C<*2_t4TxB3C=Tb-~= ztjO+qw$-)2@d6hQJl4TZ*d|tY;H+5vz+)d+JsN&Z9EM$6gijzY_jY*>V^8=o=H@|)CiKc7Qr2G!7`Y*RMn_XJHoY$0UNB0xEF z8J${9lxDAqafp~w>bd-y7YKsfBdwVgd4=AIjicb_TF%yDo|t%R7YBj`TqZ%gQK0aKxB|T3>cDHW4%a%wb32RzRk?(@^c|OW zsc0VJ#efWO%F_sr)-HrXV|gAxV%Dbt*Qb=a*nxRPKMDn$dgp2Rtb9-!s&VDo$>Y)E zlP9Am&p!L5eqOmdEc|XP9PRyPTp!+#=dPaI8{Ip2FuZ@T^QVkvZ@kt}v2>)J8l%Dw zYq386Qm?(6ffsxQU*LTprC8cQ#XrJr->#>!BOtJh9fPIt~$kM@Sec;@QUwX?PJ znLF`(^<;gt{?o&Felf1zJS@>G0v82@8;v}?3+Rz}7X^&FVY}~xUBq~&Z~IeE8RKn_ zM$GpD5`@C7ByG(*9h=$?Ba{{)WnCyXM$6AKqdH-5#&CaApV%XD;!BWVBl+6 QlBB;g73tO+Bvf+X9|ln^r~m)} literal 0 HcmV?d00001 diff --git a/__pycache__/player.cpython-312.pyc b/__pycache__/player.cpython-312.pyc index eec6e6f658be6e6db3a5a33cf9f5e25488e3cee8..c6300c0ec7fcc304046e7d46003a8c9c1154c935 100644 GIT binary patch literal 1361 zcmZ`&OK;Oa5Z?78I88z;f*?pmEhsz;sG)F!rl%IlDC%4Eb9{ZgeR*BmbkZ|c?M;Pdbn=m=}J#L6oQfvf4Ub!IUhfPY*T28K1eno_CdA* zN0COO8!4C{MpYg8wW*)UitikD2?t+I5q zsT$^N)pd9ihQYSS3st*j6dbK)YK59MZ(6ft$#kovV(Uhswp1A{ELx^}xlpI}oKbPf ztOoGtSR-|hDTJ7iC#2CIop~gFA;Tw}li-$7kRRDpPOPS0KM9WIKj6({>W8sUCpOPt z{gNA7m0o4KfI=1Ck=Xur=sujZjeIm0XLhV%*Tkme<2l}xJ*MONvj|Zo?xioy2u<0# zwhvm|fd-`>y08ygiqXCl|0&SU?Sqzgp+P;Y1bfIA=6IX-m@jYi29BNs#DP6&*zQ0m zzPx)zfRX%{vC(^lVTxdm5+$bGntV)dPhNXK709t9-`>A*ed+;A@bKZi2r+T@QAw34 zmt>L!Kc6YKMZ#fXis=xeR(Cxn8kVjmD8F?qId6E5OYM1sNqkxue$KGR(w4DA;(2uv zfaC)>JWLOA(m++S^aX?bnoYtyai&Wo+gx&J1fZ)G^6^K5D6l>? delta 105 zcmcb}HJ{P;G%qg~0}#YMFvtYak3j@F_{;(nna)tjpvmaBlA(wR$omXZGg*t#LFpHV eO>TZlX-=wL5i3xP5r~UHjE~HWjEqIhKo$VB;1O;B diff --git a/circle.py b/circle.py new file mode 100644 index 0000000..2f2ac58 --- /dev/null +++ b/circle.py @@ -0,0 +1,26 @@ +from random import randint +class Circle: + name= "circle" + character = 'O' + + def __init__(self, position): + self.position = position + + def play_turn(self, game): + width, height = game.board_size + fall_speed = game.state.get("fall_speed", 1) + + x, y = self.position + player = game.get_agent_by_name('player') + new_position = (x, y + 1) + + if new_position == player.position: + game.end() + return + if y >= height - 1: + game.state["score"] += 1 + if game.state["fall_speed"] < 5: + game.state["fall_speed"] += 1 + self.position = (randint(0, width - 1), 0) + else: + self.position = new_position diff --git a/circle_spawner.py b/circle_spawner.py new file mode 100644 index 0000000..5f5cc32 --- /dev/null +++ b/circle_spawner.py @@ -0,0 +1,18 @@ +from random import randint +from circle import Circle + +class CircleSpawner: + display = False + + def play_turn(self, game): + width, height = game.board_size + game.state['score'] += 1 + if self.should_spawn_circle(game.turn_number): + x= randint(0, width - 1) + new_circle= Circle((x,0)) + game.add_agent(new_circle) + + def should_spawn_circle(self, turn_number): + return randint(0, 200) < turn_number + + \ No newline at end of file diff --git a/nav_game.py b/nav_game.py index 6d445e2..5f30017 100644 --- a/nav_game.py +++ b/nav_game.py @@ -1,7 +1,16 @@ from retro.game import Game from player import Player +from circle import Circle + board_size = (100, 25) player = Player(board_size) -game = Game([player], {"score": 0}, board_size=board_size) +circle= Circle ((board_size[0] // 2, 0)) + +def during_turn(game): + pass + +game = Game([player, circle], {"score": 0, "fall_speed": 1}, board_size=board_size) + +game.during_turn = during_turn game.play() \ No newline at end of file diff --git a/player.py b/player.py index b6b9da1..a57db65 100644 --- a/player.py +++ b/player.py @@ -1,6 +1,6 @@ class Player: name = "player" - character = 'O' + character = '^' def __init__(self, board_size): board_width, board_height = board_size @@ -8,12 +8,17 @@ class Player: 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 keystroke.name == "KEY_LEFT": + new_position = (x - 1, y) + elif keystroke.name == "KEY_RIGHT": + new_position = (x + 1, y) + elif keystroke.name == "KEY_UP": + new_position = (x, y - 1) + elif keystroke.name == "KEY_DOWN": + new_position = (x, y + 1) + else: + return + if game.on_board(new_position): if game.is_empty(new_position): self.position = new_position else: