class Projectiles: def __init__(self, game): self.projectiles = [] self.game = game self.map = game.map def add(self, projectile): self.projectiles.append(projectile) def update(self): result = set() for projectile in self.projectiles: cp1, cp2 = projectile.get_check_points() for enemy in self.game.enemies: r = enemy.get_rect() if r.collidepoint(cp1) or r.collidepoint(cp2): #Check if projectile collides enemy self.game.enemies.remove(enemy) self.remove(projectile) self.game.score += 1 break pr = self.game.player.get_rect() if pr.collidepoint(cp1) or pr.collidepoint(cp2): self.game.settings.running = False if self.map != None: block1 = self.map.find_block_on_coords(cp1[0], cp1[1]) block2 = self.map.find_block_on_coords(cp2[0], cp2[1]) if block1.projectile_passable and block2.projectile_passable: projectile.update() else: try: index = self.projectiles.index(projectile) del self.projectiles[index] del projectile except: pass return result def change_coords_by_delta(self, dx=None, dy=None): for projectile in self.projectiles: projectile.change_coords_by_delta(dx, dy) def remove(self, projectile): self.projectiles.pop(self.projectiles.index(projectile))