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.load_level("map")
|
||||||
|
|
||||||
self.leaf_spawners: list[pygame.Rect] = []
|
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):
|
for tree in self.tilemap.extract([("large_decor", 2)], keep=True):
|
||||||
self.leaf_spawners.append(
|
self.leaf_spawners.append(
|
||||||
|
|
@ -90,7 +90,7 @@ class Game:
|
||||||
if spawner["variant"] == 0:
|
if spawner["variant"] == 0:
|
||||||
self.player.pos = spawner["pos"]
|
self.player.pos = spawner["pos"]
|
||||||
else:
|
else:
|
||||||
self.enemys.append(Enemy(self, spawner["pos"], (8, 15)))
|
self.enemies.append(Enemy(self, spawner["pos"], (8, 15)))
|
||||||
|
|
||||||
self.particles: list[Particle] = []
|
self.particles: list[Particle] = []
|
||||||
self.projectiles: list = []
|
self.projectiles: list = []
|
||||||
|
|
@ -101,7 +101,7 @@ class Game:
|
||||||
self.scroll: list[float] = [0, 0]
|
self.scroll: list[float] = [0, 0]
|
||||||
# self.boost: bool = False
|
# self.boost: bool = False
|
||||||
|
|
||||||
def load_level(self, map_id: str|int):
|
def load_level(self, map_id: str | int):
|
||||||
try:
|
try:
|
||||||
self.tilemap.load(path="data/maps/" + str(map_id) + ".json")
|
self.tilemap.load(path="data/maps/" + str(map_id) + ".json")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|
@ -142,9 +142,11 @@ class Game:
|
||||||
self.clouds.update()
|
self.clouds.update()
|
||||||
self.clouds.render(surface=self.display, offset=render_scroll)
|
self.clouds.render(surface=self.display, offset=render_scroll)
|
||||||
self.tilemap.render(surface=self.display, offset=render_scroll)
|
self.tilemap.render(surface=self.display, offset=render_scroll)
|
||||||
for enemy in self.enemys.copy():
|
for enemy in self.enemies.copy():
|
||||||
enemy.update(self.tilemap, (0, 0))
|
kill = enemy.update(self.tilemap, (0, 0))
|
||||||
enemy.render(self.display, offset=render_scroll)
|
enemy.render(self.display, offset=render_scroll)
|
||||||
|
if kill:
|
||||||
|
self.enemies.remove(enemy)
|
||||||
self.player.update(
|
self.player.update(
|
||||||
self.tilemap, movement=((self.movement[1] - self.movement[0]), 0)
|
self.tilemap, movement=((self.movement[1] - self.movement[0]), 0)
|
||||||
)
|
)
|
||||||
|
|
@ -183,7 +185,11 @@ class Game:
|
||||||
angle = random.random() * math.pi * 2
|
angle = random.random() * math.pi * 2
|
||||||
speed = random.random() * 5
|
speed = random.random() * 5
|
||||||
self.sparks.append(
|
self.sparks.append(
|
||||||
Spark(self.player.rect().center, angle, 2 + random.random())
|
Spark(
|
||||||
|
self.player.rect().center,
|
||||||
|
angle,
|
||||||
|
2 + random.random(),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
self.particles.append(
|
self.particles.append(
|
||||||
Particle(
|
Particle(
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,18 @@ class Enemy(PhysicsEntity):
|
||||||
else:
|
else:
|
||||||
self.set_action("idle")
|
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)):
|
def render(self, surface: pygame.Surface, offset: tuple = (0, 0)):
|
||||||
super().render(surface, offset)
|
super().render(surface, offset)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue