Feinde aktualisieren und entfernen, wenn sie tot sind; Funken- und Partikel-Logik bei Kollision mit Spieler hinzugefügt
This commit is contained in:
parent
c6d4cef993
commit
3fe918c082
2 changed files with 25 additions and 7 deletions
18
game.py
18
game.py
|
|
@ -79,7 +79,7 @@ class Game:
|
|||
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(
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue