diff --git a/game.py b/game.py index 9346446..7447af4 100644 --- a/game.py +++ b/game.py @@ -72,14 +72,14 @@ class Game: "gun": load_image("gun.png"), "projectile": load_image("projectile.png"), } - self.player: Player = Player(game=self, pos=(50, 50), size=(8, 15)) + self.player: Player = Player(game=self, pos=(50, 50), size=(8, 15)) self.tilemap: Tilemap = Tilemap(game=self, tile_size=16) self.load_level("map") self.leaf_spawners: list[pygame.Rect] = [] - self.enemys: list[Enemy] = [] + self.enemies: list[Enemy] = [] for tree in self.tilemap.extract([("large_decor", 2)], keep=True): self.leaf_spawners.append( @@ -90,7 +90,7 @@ class Game: if spawner["variant"] == 0: self.player.pos = spawner["pos"] else: - self.enemys.append(Enemy(self, spawner["pos"], (8, 15))) + self.enemies.append(Enemy(self, spawner["pos"], (8, 15))) self.particles: list[Particle] = [] self.projectiles: list = [] @@ -101,7 +101,7 @@ class Game: self.scroll: list[float] = [0, 0] # self.boost: bool = False - def load_level(self, map_id: str|int): + def load_level(self, map_id: str | int): try: self.tilemap.load(path="data/maps/" + str(map_id) + ".json") except FileNotFoundError: @@ -142,9 +142,11 @@ class Game: self.clouds.update() self.clouds.render(surface=self.display, offset=render_scroll) self.tilemap.render(surface=self.display, offset=render_scroll) - for enemy in self.enemys.copy(): - enemy.update(self.tilemap, (0, 0)) + for enemy in self.enemies.copy(): + kill = enemy.update(self.tilemap, (0, 0)) enemy.render(self.display, offset=render_scroll) + if kill: + self.enemies.remove(enemy) self.player.update( self.tilemap, movement=((self.movement[1] - self.movement[0]), 0) ) @@ -183,7 +185,11 @@ class Game: angle = random.random() * math.pi * 2 speed = random.random() * 5 self.sparks.append( - Spark(self.player.rect().center, angle, 2 + random.random()) + Spark( + self.player.rect().center, + angle, + 2 + random.random(), + ) ) self.particles.append( Particle( diff --git a/scripts/entities.py b/scripts/entities.py index d54076b..8ab6c3c 100644 --- a/scripts/entities.py +++ b/scripts/entities.py @@ -168,6 +168,18 @@ class Enemy(PhysicsEntity): else: self.set_action("idle") + if abs(self.game.player.dashing) >= 50: + if self.rect().colliderect(self.game.player.rect()): + for _ in range(30): + angle = random.random() * math.pi * 2 + speed = random.random() * 5 + self.game.sparks.append(Spark(self.rect().center, angle, 2 + random.random())) + self.game.particles.append(Particle(self.game, 'particle', self.rect().center, velocity=[math.cos(angle + math.pi) * speed * 0.5, math.sin(angle + math.pi) * speed * 0.5], frame=random.randint(0, 7))) + + self.game.sparks.append(Spark(self.rect().center, 0, 5 + random.random())) + self.game.sparks.append(Spark(self.rect().center, math.pi, 5 + random.random())) + return True + def render(self, surface: pygame.Surface, offset: tuple = (0, 0)): super().render(surface, offset)