import os import pygame from display import Scaling from images import Images, Fonts class LetterSprite(pygame.sprite.Sprite): def __init__(self, image, pos): super().__init__() self.image = image self.rect = self.image.get_rect().move(pos) class TextGroup(pygame.sprite.Group): def __init__(self, text, pos, size = 8_000, spacing = None, font = 'lcd'): super().__init__() if spacing == None: spacing = size for i in range(len(text)): image = pygame.transform.scale_by( Fonts.fonts[font].get(text[i]), size/8 * Scaling.factor) image_pos = Scaling.scale_to_display( (pos[0]+i*spacing, pos[1]) ) self.add(LetterSprite(image, image_pos)) class Status(): def __init__(self, level = 1): self.score = 0 self.bonus = 20_000 self.lives = 3 self.level = level self.sprites = pygame.sprite.Group() def update(self, dt): """ Update sprites basis of dt. dt = milliseconds from last update """ self.bonus = max(0, self.bonus - dt) score_str="LEVEL{:02d}LIVES{:02d}{:010d}".format(self.level, self.lives, self.bonus) self.sprites = TextGroup( score_str, (0, 280_000), size = 10_000) def lose_life(self): """ Lose 1 life and return true if no lives left """ self.lives -= 1 return not self.lives def gain_life(self): """ Gain 1 life """ self.lives += 1