(self)
| 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='') |
no test coverage detected