From f0840a02fcb54533d9bb1b07720358edeb4d2cb8 Mon Sep 17 00:00:00 2001 From: ilmabura Date: Sun, 7 Dec 2025 11:20:03 -0500 Subject: [PATCH] Resubmit commit 1 Re-wrote the player and board game because i kept getting stuck on creating the walls. There was an agent error so i needed to start from the begining again. I looked up resources online and used the tic tac toe and retro labs for help. --- __pycache__/maze_layout.cpython-312.pyc | Bin 0 -> 1494 bytes __pycache__/player.cpython-312.pyc | Bin 1242 -> 1544 bytes __pycache__/wall.cpython-312.pyc | Bin 0 -> 538 bytes escape_the_maze.py | 25 +++++++++++++++ game_signature.py | 8 +++++ maze_game.py | 8 ----- player.py | 40 +++++++++++++++--------- 7 files changed, 58 insertions(+), 23 deletions(-) create mode 100644 __pycache__/maze_layout.cpython-312.pyc create mode 100644 __pycache__/wall.cpython-312.pyc create mode 100644 escape_the_maze.py create mode 100644 game_signature.py delete mode 100644 maze_game.py diff --git a/__pycache__/maze_layout.cpython-312.pyc b/__pycache__/maze_layout.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45097909b546126bc3bd39c47ddee4991ae78803 GIT binary patch literal 1494 zcmZuvPfXip6#qWkasD_4!r#&kmA|D%8-cZ3cR*ugDYP4_1oYIcirm=b55x&hLP%t9 zQ0?1xQ8Sp;YD-{Nz~`)7A|6e-X(w=(PJFZ-0(vjbTALr zdq@MH5{tlR;UYq+3v{~Ffsl?geCh_*Z*UHiK!h~>s4j=m1{I}ZC`#Qv2j0{P4Ei4o zLogCkrPf&nd~^z=E(Yl|SY0u!GZL%O65R1+&1p0Ba) z&XIl`NTA>!s!c4r* zOkfKOkT;9h&npy0>%D;SpTLmmyu^$;n9CYqNW~iGbi$AsLxlH8cgHuRJ4c87FmcF1 zs&KrZvX_>Br;sH3J4G6&`RAzyI@WHptgE z*aB1FB`(Rm>ZkF?d0=C0&hGd**dTVcSa?<93rO(a*oC%`O4u%WFh{sgpi~#J5q5-! zcmDR8Fwq4nr7+tXOij9l5PfDnAG?z## zS(}ZD>ar}^l(YhW(WVqQm7-0n=|Z*vs_6a?9Zd$~>69G2lUKzAe8H5skWgZgLLwKB zMAMQSOckP|!Mu{lT?%H@bQ1DJVj_5uG9rs&F`ds1XNoo-lNDJNb8>`SsNIl>y!7nH zFv3-2x&7s(wW2X`_fsQZ!_|_Jx7@se*Gk6B-Oo(6*0af(>>s0VKUw~!Ylj=(n)qs< z=DPp-j(^aY`C@L{KlqFrUkw9$!MBvJtzNYPt*ha3U~Q^AvG&1lzDBFD)tIdmD@+-e zNA0$evhNp9!$w1;!6z znmJpYw%!;4C1Ab@&TnmYR6nZq)IwYM!PN(YKeP^6t)2I#tJAgK+MU{&ZP2@VjLDx` zJNE)m&!5exsonAiHm+B$uYb7TgSe)>el#HLaDq8k4sA?Tri}N$oPN#;&lurwKZy8? zhtIk3!~J38AIiQ4L*8l*3(U9PaKG<6+6CfM@0sv0^R%DH@BsY)aTf9r9e{|`^T3Wg iW2v;1UzFcf`#>cRJ<9{zqcO%mBmRInhlkW&u>1p1g>72^ literal 0 HcmV?d00001 diff --git a/__pycache__/player.cpython-312.pyc b/__pycache__/player.cpython-312.pyc index ff3b2dc969a9f93a27de111a36e7c9c1798ff0cb..f9bf06e875d36cc85405cfa812f637f1f8967585 100644 GIT binary patch delta 915 zcmaKqO-vI(6vub=t4lwSkcKu=VE}2^01^{1UP@x*Ln2f{Flu7hEZc#uw7bph7Sd)b zJ$TqAnu2?fn=vs_FLL$n(F-9SnmuvVQ-yJ@Zx0m?d6f9ll$+qn``|mZD7H~1xJu>0Qd!8cZ zHRFIM1lQOamje!?TtqQUg^}5;%zg*NgGFLw;7cXb(rw)|WZvg3RM_;x8>WhLiltYP zFYM|$JMW8mq;KVIi|$VQ{C#^WZx+$iMj5L*dAw1OP0%B;dWoqsr^(?)%oW_7R&u~= zf;X3*b1C_C$UH`XNQh znVO>DI4!nI%d1$`Y=m)){Nt3j!VgSeA=Br~PnHuTQeZS*pKbN@)fdlrP8d87Cj}XI m(_nguvoZ+2c-VW(Cx=Fei(XiZ_SohC0KeEYkk1%mf}}r}CihGL delta 621 zcmYjP&ubGw6rP!#T{g+)2R7t~O)J%6x@fK9xdkDqR-0I)B6?_y$p)h_8)sW+>PB<$ zkUdB$b1YGgjAI$f@dGDJyZ+O$wyg=k@I2=S^8=DvE z3F&R*eEz=h`Pz@n;`h`g{u`gc5gsMy_yI{K@zVu_m}*Po4s2Q@9l5#c=cNB~P;8Q0 z5;^{YXrW2Zpiha|jQme;Q>X?f{93q;Z1P0rDQU5Q;7v-=Q*Y((m)7&En@k0j7ZBS! zYu9gVdWxWTH^z$G?R!OCVgaF{&GIwDQ_W_{f3dExAWzWBycmPE570$!bgJKRIu7mO z-j!h}-d}N61`iHHS^kU8N1Syxoak>kTZ7%haF&0e8Gb;6GehmvNI_bxzw9gzGCxD- z-ONHS_ogtCke20_<%_c{?)O-ETxR9Uw!u8PVm3_1!VqTD+?HprP6K_7+|X1v=f)D< zHCKyw^T(9PODAef)>%YI#oUWJ_C1^9-{jPs_yuCLRuo_)VT}KfG}ez1fPd&OFJqi_ diff --git a/__pycache__/wall.cpython-312.pyc b/__pycache__/wall.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81bf8062be8eda1f527583234900f10acaab067a GIT binary patch literal 538 zcmX|8yH3L}6unNI(x-S7p-!k3QwAC#Rs;(Ov2;bsVud)gfix*@s;a0%hYlFbCNcYEI@-x;4lYH z-n5ls!$dQ6cfDU#k~ir-k_C8R6Are1WeK~i7XDHp&$EEXljxUz2H_9Q5`C8v$;I8dQsoA zZbriK@v-{Oy&rbj*pGY6jkss^$L^6e3jO%l8i?r5b7R(Z(4od^4<@q6n2#!Bk2N)K zd)*e)M@k4YNE*#2`dmw~fsVPMEFnfPCd-WVBR&cguQK*9a)Ml;s>+hvbA;o@o{)wc z1(6UH%yJ6 cizlmDPQ@+?S==U)Z=DeGs})G=2M{vD9}S&-m;e9( literal 0 HcmV?d00001 diff --git a/escape_the_maze.py b/escape_the_maze.py new file mode 100644 index 0000000..5459d1f --- /dev/null +++ b/escape_the_maze.py @@ -0,0 +1,25 @@ +from retro.game import Game +from player import Player + +def main(): + board_size = (100, 40) + + player = Player(board_size) + + state = { + "win": False, + } + + game = Game( + agents=[player], + state=state, + board_size=board_size, + debug=False, + framerate=24, + color="white_on_black", + ) + + game.play() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/game_signature.py b/game_signature.py new file mode 100644 index 0000000..daf1c55 --- /dev/null +++ b/game_signature.py @@ -0,0 +1,8 @@ +from retro.game import Game +import inspect + +print("Game.__init__ signature:") +print(inspect.signature(Game.__init__)) + +print("\nFull source of Game.__init__:\n") +print(inspect.getsource(Game.__init__)) \ No newline at end of file diff --git a/maze_game.py b/maze_game.py deleted file mode 100644 index 51e4dde..0000000 --- a/maze_game.py +++ /dev/null @@ -1,8 +0,0 @@ -from retro.game import Game -from player import Player - -board_size = (100, 40) -player = Player(board_size) - -game = Game([player], {}, board_size=board_size) -game.play() diff --git a/player.py b/player.py index 57ba18a..e6f5232 100644 --- a/player.py +++ b/player.py @@ -1,28 +1,38 @@ -class Player: +class Player: + """ + Player agent for Escape the Maze. + Moves one step at a time using the arrow keys. + """ + name = "player" - character = "🐧" - color = "purple" + character = "🐧" # Penguin icon def __init__(self, board_size): - # Start at bottom-left corner - self.position = (0, board_size[1] - 1) + # Start near the top-left corner + width, height = board_size + self.position = (1, 1) def handle_keystroke(self, keystroke, game): + """ + Called once for each key pressed since the last turn. + Moves the player using the arrow keys. + """ x, y = self.position + new_position = None - 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": + if keystroke.name == "KEY_UP": new_position = (x, y - 1) elif keystroke.name == "KEY_DOWN": new_position = (x, y + 1) - else: + elif keystroke.name == "KEY_LEFT": + new_position = (x - 1, y) + elif keystroke.name == "KEY_RIGHT": + new_position = (x + 1, y) + + + if new_position is None: return - # Contain penguin inside board - if game.on_board(new_position): - self.position = new_position - + if game.on_board(new_position) and game.is_empty(new_position): + self.position = new_position \ No newline at end of file