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 = ( "{:02d}\x12 {:02d}\xfe {:02d}\x03 " "{:02d}\x0e {:08d}\x0f").format( self.level, 99 if 100 == 100 else 99, self.lives, self.bonus // 1000, self.score) self.sprites = TextGroup( score_str, (0, 282_000), size = 16_000, font = '8x8') 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