MCPcopy Create free account
hub / github.com/asweigart/PythonStdioGames / runSimulationStep

Method runSimulationStep

src/gamesbyexample/zombiebitefight.py:154–238  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

152
153
154 def runSimulationStep(self):
155 random.shuffle(self.zombies)
156 bittenZombies = []
157 newZombies = []
158 for zombie in self.zombies:
159 action = zombie.getAction()
160 if action == RIGHT:
161 if zombie.direction == NORTH:
162 zombie.direction = EAST
163 elif zombie.direction == SOUTH:
164 zombie.direction = WEST
165 elif zombie.direction == EAST:
166 zombie.direction = SOUTH
167 elif zombie.direction == WEST:
168 zombie.direction = NORTH
169 elif action == LEFT:
170 if zombie.direction == NORTH:
171 zombie.direction = WEST
172 elif zombie.direction == SOUTH:
173 zombie.direction = EAST
174 elif zombie.direction == EAST:
175 zombie.direction = NORTH
176 elif zombie.direction == WEST:
177 zombie.direction = SOUTH
178 elif action == FORWARD:
179 if zombie.direction == NORTH:
180 onTopRow = zombie._y == 0
181 zombieToTheNorth = self.getZombieAt(zombie._x, zombie._y - 1)
182 if not onTopRow and zombieToTheNorth == None:
183 bext.goto(zombie._x, zombie._y)
184 print(' ', end='')
185 # Move north.
186 zombie._y -= 1
187
188 elif zombie.direction == SOUTH:
189 onBottomRow = zombie._y == HEIGHT - 1
190 zombieToTheSouth = self.getZombieAt(zombie._x, zombie._y + 1)
191 if not onBottomRow and zombieToTheSouth == None:
192 bext.goto(zombie._x, zombie._y)
193 print(' ', end='')
194 # Move south.
195 zombie._y += 1
196
197 elif zombie.direction == EAST:
198 onRightColumn = zombie._x == WIDTH - 1
199 zombieToTheEast = self.getZombieAt(zombie._x + 1, zombie._y)
200 if not onRightColumn and zombieToTheEast == None:
201 bext.goto(zombie._x, zombie._y)
202 print(' ', end='')
203 # Move east.
204 zombie._x += 1
205
206 elif zombie.direction == WEST:
207 onLeftColumn = zombie._x == 0
208 zombieToTheWest = self.getZombieAt(zombie._x - 1, zombie._y)
209 if not onLeftColumn and zombieToTheWest == None:
210 bext.goto(zombie._x, zombie._y)
211 print(' ', end='')

Callers 1

runSimulationMethod · 0.95

Calls 3

getZombieAtMethod · 0.95
displayMethod · 0.95
getActionMethod · 0.45

Tested by

no test coverage detected