+ def _fire_bullet(self, bullet, pos, dp, angle):
+ if len(self._bullets) >= 10:
+ return
+ bullet.game_pos = pos
+ bullet.game_dp = dp
+ bullet.dt = 0
+ bullet.level_layer = self._level_layer
+ bullet.angle = angle
+ self._bullets.add(bullet)
+
+ def _check_for_bullet_hits(self):
+ for bullet in list(self._bullets):
+ for enemy in list(self._enemies):
+ if enemy.collidepoint(bullet.pos):
+ self._hit_enemy(enemy, bullet.weapon)
+ self._bullets.remove(bullet)
+
+ def _update_bullet(self, bullet, dt):
+ bullet.dt += dt
+ if bullet.dt > 0.1:
+ bullet.dt = 0
+ bullet.game_pos = pos = (
+ bullet.game_pos[0] + bullet.game_dp[0],
+ bullet.game_pos[1] + bullet.game_dp[1])
+ if not self._level.can_bullet(pos[0], pos[1], bullet.level_layer):
+ self._bullets.remove(bullet)
+