Код IT Загрузка примера кода…

Python main.py
import pygame

from core.config import SCREEN_HEIGHT, SCREEN_WIDTH, UI_HP_BG, UI_HP_FILL, UI_MP_FILL, UI_TEXT


class HUD:
    def __init__(self, renderer) -> None:
        self.r = renderer

    def draw(self, player, floor: int, portal_hint: str | None = None) -> None:
        bar_w = 280
        x, y = 24, 24
        self._bar(x, y, bar_w, 18, player.stats.hp, player.stats.max_hp, UI_HP_FILL, UI_HP_BG)
        self._bar(
            x,
            y + 26,
            bar_w,
            14,
            player.stats.mana,
            player.stats.max_mana,
            UI_MP_FILL,
            (22, 28, 52),
        )
        font = pygame.font.SysFont("Segoe UI", 17, bold=True)
        txt = font.render(f"Ур. {player.experience.level}  ·  Этаж {floor}", True, UI_TEXT)
        self.r.screen.blit(txt, (x, y + 48))
        self.draw_skill_bar(player, portal_hint)

    def _bar(self, x, y, w, h, cur, mx, fill, bg) -> None:
        pygame.draw.rect(self.r.screen, bg, (x, y, w, h), border_radius=4)
        if mx > 0:
            pygame.draw.rect(self.r.screen, fill, (x, y, int(w * cur / mx), h), border_radius=4)

    def draw_skill_bar(self, player, portal_hint: str | None) -> None:
        font = pygame.font.SysFont("Segoe UI", 14)
        pygame.draw.circle(self.r.screen, (255, 120, 40), (SCREEN_WIDTH - 80, SCREEN_HEIGHT - 40), 18)
        label = font.render("F", True, UI_TEXT)
        self.r.screen.blit(label, (SCREEN_WIDTH - 86, SCREEN_HEIGHT - 48))
        if portal_hint:
            hint = font.render(portal_hint, True, (255, 204, 96))
            self.r.screen.blit(hint, (24, SCREEN_HEIGHT - 32))
import pygame

from core.config import SCREEN_HEIGHT, SCREEN_WIDTH, UI_HP_BG, UI_HP_FILL, UI_MP_FILL, UI_TEXT


class HUD:
    def __init__(self, renderer) -> None:
        self.r = renderer

    def draw(self, player, floor: int, portal_hint: str | None = None) -> None:
        bar_w = 280
        x, y = 24, 24
        self._bar(x, y, bar_w, 18, player.stats.hp, player.stats.max_hp, UI_HP_FILL, UI_HP_BG)
        self._bar(
            x,
            y + 26,
            bar_w,
            14,
            player.stats.mana,
            player.stats.max_mana,
            UI_MP_FILL,
            (22, 28, 52),
        )
        font = pygame.font.SysFont("Segoe UI", 17, bold=True)
        txt = font.render(f"Ур. {player.experience.level}  ·  Этаж {floor}", True, UI_TEXT)
        self.r.screen.blit(txt, (x, y + 48))
        self.draw_skill_bar(player, portal_hint)

    def _bar(self, x, y, w, h, cur, mx, fill, bg) -> None:
        pygame.draw.rect(self.r.screen, bg, (x, y, w, h), border_radius=4)
        if mx > 0:
            pygame.draw.rect(self.r.screen, fill, (x, y, int(w * cur / mx), h), border_radius=4)

    def draw_skill_bar(self, player, portal_hint: str | None) -> None:
        font = pygame.font.SysFont("Segoe UI", 14)
        pygame.draw.circle(self.r.screen, (255, 120, 40), (SCREEN_WIDTH - 80, SCREEN_HEIGHT - 40), 18)
        label = font.render("F", True, UI_TEXT)
        self.r.screen.blit(label, (SCREEN_WIDTH - 86, SCREEN_HEIGHT - 48))
        if portal_hint:
            hint = font.render(portal_hint, True, (255, 204, 96))
            self.r.screen.blit(hint, (24, SCREEN_HEIGHT - 32))