From 742a6599d8dc0cf47c27ce89b1431467dd4f93c9 Mon Sep 17 00:00:00 2001 From: Giovani Rodriguez Date: Fri, 11 Jun 2021 23:48:55 -0400 Subject: [PATCH] feat: create sheet splice part of text generator --- resource/font/retro-font.bmp | Bin 0 -> 196662 bytes tetris/game.py | 8 +++++--- tetris/util.py | 29 +++++++++++++++++++++++++++-- 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 resource/font/retro-font.bmp diff --git a/resource/font/retro-font.bmp b/resource/font/retro-font.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3cd2d48605f30b6c6186ebbcdec38f9f2602e6b3 GIT binary patch literal 196662 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 literal 0 HcmV?d00001 diff --git a/tetris/game.py b/tetris/game.py index d58f60d..dc8e6be 100644 --- a/tetris/game.py +++ b/tetris/game.py @@ -1,7 +1,9 @@ import sys +from typing import Text import pygame from pygame import mixer from tetris.util import ConfigurationManager +from tetris.util import TextGenerator from tetris.entity import PieceGenerator from tetris.entity import Well from tetris.entity import Stack @@ -21,6 +23,7 @@ class Game: def initialize(self) -> None: pygame.init() + TextGenerator.load("resource/font/retro-font.bmp", (20, 30)) win_width = ConfigurationManager.get("window", "width") win_height = ConfigurationManager.get("window", "height") @@ -119,9 +122,8 @@ class Game: if self.current_piece: self.current_piece.draw(self.screen) - self.sheet = pygame.image.load("resource/font/gravity-font.bmp").convert() - self.screen.blit(self.sheet, (0, 0), pygame.Rect(30, 30, 30, 30)) - + TextGenerator.draw("SCORE", (0, 0), self.screen) + # update display pygame.display.update() diff --git a/tetris/util.py b/tetris/util.py index 52b94d1..3f54741 100644 --- a/tetris/util.py +++ b/tetris/util.py @@ -1,5 +1,5 @@ -import random import yaml +import pygame from typing import Tuple """ @@ -20,4 +20,29 @@ class ConfigurationManager: if sub_key: return cls.configuration[key][sub_key] else: - return cls.configuration[key] \ No newline at end of file + return cls.configuration[key] + +class TextGenerator: + + sheet = None + glyph_size = -1 + letters = { } + numbers = { } + + @classmethod + def load(cls, file: str, glyph_size: Tuple) -> None: + cls.sheet = pygame.image.load(file) + cls.glyph_size = glyph_size + + cls.letters["S"] = (3 * glyph_size[0], 6 * glyph_size[1]) + cls.letters["C"] = (3 * glyph_size[0], 4 * glyph_size[1]) + cls.letters["O"] = (7 * glyph_size[0], 5 * glyph_size[1]) + cls.letters["R"] = (2 * glyph_size[0], 6 * glyph_size[1]) + cls.letters["E"] = (5 * glyph_size[0], 4 * glyph_size[1]) + + @classmethod + def draw(cls, text: str, position: Tuple, surface: pygame.Surface) -> None: + x_position = 0 + for char_ in text: + surface.blit(cls.sheet, (position[0] + x_position, position[1]), pygame.Rect(cls.letters[char_.upper()], (cls.glyph_size[0], cls.glyph_size[1]))) + x_position += cls.glyph_size[0] \ No newline at end of file