Übergang zum nächsten Level hinzugefügt; Level wird automatisch geladen, wenn alle Feinde besiegt sind
This commit is contained in:
parent
5e2287c459
commit
199eef74df
1 changed files with 25 additions and 1 deletions
26
game.py
26
game.py
|
|
@ -2,6 +2,7 @@ import pygame # ty: ignore[unresolved-import]
|
||||||
import sys
|
import sys
|
||||||
import random
|
import random
|
||||||
import math
|
import math
|
||||||
|
import os
|
||||||
from scripts.entities import Enemy, Player
|
from scripts.entities import Enemy, Player
|
||||||
from scripts.utils import load_image
|
from scripts.utils import load_image
|
||||||
from scripts.utils import load_images
|
from scripts.utils import load_images
|
||||||
|
|
@ -76,7 +77,7 @@ class Game:
|
||||||
|
|
||||||
self.tilemap: Tilemap = Tilemap(game=self, tile_size=16)
|
self.tilemap: Tilemap = Tilemap(game=self, tile_size=16)
|
||||||
|
|
||||||
self.level: int | str = 0
|
self.level: int = 0
|
||||||
|
|
||||||
self.load_level(map_id=self.level)
|
self.load_level(map_id=self.level)
|
||||||
self.screenshake = 0
|
self.screenshake = 0
|
||||||
|
|
@ -102,6 +103,7 @@ class Game:
|
||||||
for spawner in self.tilemap.extract(id_pairs=[("spawners", 0), ("spawners", 1)]):
|
for spawner in self.tilemap.extract(id_pairs=[("spawners", 0), ("spawners", 1)]):
|
||||||
if spawner["variant"] == 0:
|
if spawner["variant"] == 0:
|
||||||
self.player.pos = spawner["pos"]
|
self.player.pos = spawner["pos"]
|
||||||
|
self.player.air_time = 0
|
||||||
else:
|
else:
|
||||||
self.enemies.append(Enemy(game=self, pos=spawner["pos"], size=(8, 15)))
|
self.enemies.append(Enemy(game=self, pos=spawner["pos"], size=(8, 15)))
|
||||||
|
|
||||||
|
|
@ -110,6 +112,9 @@ class Game:
|
||||||
self.sparks: list[Spark] = []
|
self.sparks: list[Spark] = []
|
||||||
self.dead: int = 0
|
self.dead: int = 0
|
||||||
self.scroll: list[float] = [0, 0]
|
self.scroll: list[float] = [0, 0]
|
||||||
|
self.transition: int = -30
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
while self.running:
|
while self.running:
|
||||||
|
|
@ -123,6 +128,14 @@ class Game:
|
||||||
|
|
||||||
self.screenshake = max(0, self.screenshake - 1)
|
self.screenshake = max(0, self.screenshake - 1)
|
||||||
|
|
||||||
|
if not len(self.enemies):
|
||||||
|
self.transition += 1
|
||||||
|
if self.transition > 30:
|
||||||
|
self.level = min(self.level + 1, len(os.listdir("data/maps")) - 1)
|
||||||
|
self.load_level(self.level)
|
||||||
|
if self.transition < 0:
|
||||||
|
self.transition += 1
|
||||||
|
|
||||||
self.scroll[0] += (
|
self.scroll[0] += (
|
||||||
self.player.rect().centerx
|
self.player.rect().centerx
|
||||||
- self.display.get_width() / 2
|
- self.display.get_width() / 2
|
||||||
|
|
@ -272,6 +285,17 @@ class Game:
|
||||||
if event.key == pygame.K_m:
|
if event.key == pygame.K_m:
|
||||||
self.boost = False
|
self.boost = False
|
||||||
|
|
||||||
|
if self.transition:
|
||||||
|
transition_surface = pygame.Surface(self.display.get_size())
|
||||||
|
pygame.draw.circle(
|
||||||
|
transition_surface,
|
||||||
|
(255, 255, 255),
|
||||||
|
(self.display.get_width() // 2, self.display.get_height() // 2),
|
||||||
|
(30 - abs(self.transition)) * 8,
|
||||||
|
)
|
||||||
|
transition_surface.set_colorkey((255, 255, 255))
|
||||||
|
self.display.blit(transition_surface, (0, 0))
|
||||||
|
|
||||||
screenshake_offset = (
|
screenshake_offset = (
|
||||||
random.random() * self.screenshake - self.screenshake / 2,
|
random.random() * self.screenshake - self.screenshake / 2,
|
||||||
random.random() * self.screenshake - self.screenshake / 2,
|
random.random() * self.screenshake - self.screenshake / 2,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue