import pygame from display import Display from status import Status from player import Player from field import Field from enemies import Enemies from stats import Stats from screens import levelup_screen, gameover_screen, level_screen from .gameplay import Gameplay from .anykey import anykey class Level: """ One level that can be played """ def __init__(self, display = None): self.display = display self.status = Status() self.field = Field() self.enemies = Enemies() self.player = Player() self.gameplay = Gameplay( player = self.player, status = self.status, field = self.field, enemies = self.enemies) self.obj_classes = [ self.status, self.field, self.enemies] self.level_info = level_screen() self.level_over = None def step(self, dt): for obj in self.obj_classes: obj.update(dt = dt) self.enemies.hit_walls(self.field.active_sprites()) objs = self.obj_classes[:] if self.level_info: if anykey(): self.level_info = None else: objs += [self.level_info] elif self.level_over: objs += [self.level_over] if anykey(): return False else: objs += [pygame.sprite.GroupSingle( sprite = self.player.get_top_sprite())] Stats.update_bonus(dt) if self.gameplay.step(): if Stats.lives: self.level_over = levelup_screen() else: self.level_over = gameover_screen() self.display.update(objs) return True