From cf8eefcb8b7962c1609e5115e515c37aa161ffbc Mon Sep 17 00:00:00 2001 From: Chris Mekelburg Date: Tue, 3 Dec 2024 21:49:59 -0500 Subject: [PATCH] Update #2, making some progress after being stuck --- .DS_Store | Bin 6148 -> 6148 bytes game files/__pycache__/board.cpython-312.pyc | Bin 1664 -> 0 bytes game files/__pycache__/man.cpython-312.pyc | Bin 2014 -> 0 bytes game files/board.py | 27 ------- game files/nav_game.py | 16 ----- gamefiles/__pycache__/board.cpython-312.pyc | Bin 0 -> 1822 bytes gamefiles/__pycache__/man.cpython-312.pyc | Bin 0 -> 2252 bytes .../__pycache__/mine.cpython-312.pyc | Bin 560 -> 559 bytes .../__pycache__/snack.cpython-312.pyc | Bin 561 -> 560 bytes gamefiles/board.py | 66 ++++++++++++++++++ {game files => gamefiles}/helpers.py | 0 {game files => gamefiles}/man.py | 13 +++- {game files => gamefiles}/mine.py | 0 gamefiles/nav_game.py | 19 +++++ {game files => gamefiles}/snack.py | 0 15 files changed, 95 insertions(+), 46 deletions(-) delete mode 100644 game files/__pycache__/board.cpython-312.pyc delete mode 100644 game files/__pycache__/man.cpython-312.pyc delete mode 100644 game files/board.py delete mode 100644 game files/nav_game.py create mode 100644 gamefiles/__pycache__/board.cpython-312.pyc create mode 100644 gamefiles/__pycache__/man.cpython-312.pyc rename {game files => gamefiles}/__pycache__/mine.cpython-312.pyc (52%) rename {game files => gamefiles}/__pycache__/snack.cpython-312.pyc (52%) create mode 100644 gamefiles/board.py rename {game files => gamefiles}/helpers.py (100%) rename {game files => gamefiles}/man.py (86%) rename {game files => gamefiles}/mine.py (100%) create mode 100644 gamefiles/nav_game.py rename {game files => gamefiles}/snack.py (100%) diff --git a/.DS_Store b/.DS_Store index 7b037e434838650aa1f3c0e7a30b5c43dc62d400..4ed28b7112922c872e821632758eff414ac98073 100644 GIT binary patch delta 119 zcmZoMXfc=|#>CJzu~2NHo}wrt0|NsP3otOGF=R62Fr+dRrxZ^tR965=a5AJbBr@az z1(76^bCUA&a~L;YWHe*j{D4u7aWgvyKL^l6pvZUT$^0U^oFKgifS6&j4UhEZ7?CB+ E06|w9yZ`_I delta 277 zcmZoMXfc=|#>B`mu~2NHo}wr#0|Nsi1A_nqg91YuLncEGLn=e@#Er}AK@waH=?sYs zxj-Q#$&}*coTU8x9H1`j3Ubm7gOl@f3xM)4fYqSfd>5Cboctu9B94@Qv-$mMk2wO_ z5Vg)|w&v!i;8u*LwjcxIfQ=ii*fz6s@N)pYyK&=p=E?jbx;!8!ft=m|#G8FYb}&zD GU;zM<7(Ctp diff --git a/game files/__pycache__/board.cpython-312.pyc b/game files/__pycache__/board.cpython-312.pyc deleted file mode 100644 index cb2c68098d932ae88879ce7df916c3359cc81206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1664 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 S>fJ9ypCJ&foG>i3$@d>z-T2Y~ literal 0 HcmV?d00001 diff --git a/game files/__pycache__/mine.cpython-312.pyc b/gamefiles/__pycache__/mine.cpython-312.pyc similarity index 52% rename from game files/__pycache__/mine.cpython-312.pyc rename to gamefiles/__pycache__/mine.cpython-312.pyc index e82fd4e091c663a810469df56a1059567e9df4d4..ee042178ab4fe1ed0ff45ae9ebad13a9cb03810e 100644 GIT binary patch delta 29 jcmdnMvYv(eG%qg~0}xc7^O?wfg)w5{1Mkf`j4X@*dp-zZ delta 31 lcmZ3_vVn#BG%qg~0}ycMc}?WL!WcR6fj6VVW^G0mMgV-G2e1GD diff --git a/game files/__pycache__/snack.cpython-312.pyc b/gamefiles/__pycache__/snack.cpython-312.pyc similarity index 52% rename from game files/__pycache__/snack.cpython-312.pyc rename to gamefiles/__pycache__/snack.cpython-312.pyc index 159f62c006a7383bc712cb019a32b78df1f370bd..533015fac121ff9df3cf25b11b68a1d5cd0000ac 100644 GIT binary patch delta 29 jcmdnUvVn#BG%qg~0}xc4^O?wfnK5$WeeccMjBJbmdp!tX delta 31 lcmdnMvXO=RG%qg~0}wQ2drjoN%osKCzBi-7W-UfGMgWBV2qpjk diff --git a/gamefiles/board.py b/gamefiles/board.py new file mode 100644 index 0000000..767a118 --- /dev/null +++ b/gamefiles/board.py @@ -0,0 +1,66 @@ +from man import Man +from snack import Snack +from mine import Mine +from random import shuffle +from retro import game + + +class Board: + + def __init__(self,width, height,num_snacks,num_mines): + self.width = width + self.height = height + self.num_snacks = num_snacks + self.num_mines = num_mines + + def get_agents(self,num_snacks,num_mines): + all_positions = self.get_all_positions() + shuffle(all_positions) + man= [Man(all_positions[0])] + snacks = [Snack(p) for p in all_positions[1:(num_snacks+1)]] + mines = [Mine(p) for p in all_positions[(num_snacks + 2):(num_snacks + num_mines +2)]] + agents = man + snacks + mines + return agents + ''' + def get_agents(self,num_snacks,num_mines): + man = self.get_man(num_snacks,num_mines) + snacks = self.get_snacks(num_snacks) + mines = self.get_mines(num_mines,num_snacks) + + agents = snacks + mines + man + return agents + + def get_man(self,num_snacks,num_mines): + + #man_location = [Man(all_positions[0])] + #return man_location + shuffle(all_positions) + for position in all_positions: + #if position in self.get_snacks(num_snacks): + # all_positions.remove(position) + if position in self.get_mines(num_mines,num_snacks): + all_positions.remove(position) + man_location = [Man(all_positions[0])] + return man_location + + def get_mines(self,num_mines, num_snacks): + all_positions = self.get_all_positions() + shuffle(all_positions) + for position in all_positions: + if position in self.get_snacks(num_snacks): + all_positions.remove(position) + mines = [Mine(p) for p in all_positions[1:num_mines+1]] + return mines + + def get_snacks(self,num_snacks): + all_positions = self.get_all_positions() + shuffle(all_positions) + snacks = [Snack(p) for p in all_positions[1:num_snacks+1]] + return snacks + ''' + def get_all_positions(self): + positions=[] + for i in range(self.width): + for j in range(self.height): + positions.append((i,j)) + return positions \ No newline at end of file diff --git a/game files/helpers.py b/gamefiles/helpers.py similarity index 100% rename from game files/helpers.py rename to gamefiles/helpers.py diff --git a/game files/man.py b/gamefiles/man.py similarity index 86% rename from game files/man.py rename to gamefiles/man.py index b421b11..7afa046 100644 --- a/game files/man.py +++ b/gamefiles/man.py @@ -18,11 +18,14 @@ class Man: def __init__(self,position): self.position = position + '''Describes how a keystroke is received''' + def handle_keystroke(self, keystroke, game): if keystroke.name in direction_vectors: vector = direction_vectors[keystroke.name] self.try_to_move(vector, game) + '''Checks if a space is avialable to move''' def try_to_move(self, vector, game): x,y = self.position vx,vy = vector @@ -37,11 +40,13 @@ class Man: if on_board: if obstacle: - pass if obstacle.snack: - score +=1 + game.state['Score'] += 1 + game.remove_agent(agents[0]) + else: - score -=1 + game.state['Score'] -= 1 + game.remove_agent(agents[0]) else: self.position = future_position @@ -51,6 +56,8 @@ class Man: self.color = "black" game.end() + + ''' def __init__(self, position): diff --git a/game files/mine.py b/gamefiles/mine.py similarity index 100% rename from game files/mine.py rename to gamefiles/mine.py diff --git a/gamefiles/nav_game.py b/gamefiles/nav_game.py new file mode 100644 index 0000000..a725171 --- /dev/null +++ b/gamefiles/nav_game.py @@ -0,0 +1,19 @@ +from retro.game import Game +from board import Board + +width = 25 +height = 25 +num_snacks = 10 +num_mines = 10 +board = Board(width,height,num_snacks,num_mines) +score = 0 +state= {"Score":0} +#man = Man(board_size) +game = Game( + board.get_agents(num_snacks, num_mines), + state, + board_size = (width, height) +) +#print(board.get_agents()) +print(len(board.get_agents(10,10))) +game.play() \ No newline at end of file diff --git a/game files/snack.py b/gamefiles/snack.py similarity index 100% rename from game files/snack.py rename to gamefiles/snack.py