Код IT
← Каталог

Python — карточная стратегия — Этап 8 — боевой UI (рука, энергия, журнал)

Фрагмент из «Python — карточная стратегия»: Этап 8 — боевой UI (рука, энергия, журнал).

python spinoffencyclopedia9-04-razrabotka-igr-praktikum-razrabotki-igr-7 embed URL статья в энциклопедии
Python main.py
import pygame
import settings
from classes.player import Player
from classes.combat import CombatManager
from classes.enemy import create_encounter
from classes.ui import UI


def main():
    pygame.init()
    screen = pygame.display.set_mode((settings.SCREEN_WIDTH, settings.SCREEN_HEIGHT))
    clock = pygame.time.Clock()
    player = Player()
    combat = CombatManager(player, create_encounter("slime"))
    ui = UI(screen)
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_e:
                    combat.end_player_turn()
                if event.key == pygame.K_ESCAPE:
                    running = False
            elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
                if hasattr(combat, "_hand_rects"):
                    for i, rect in enumerate(combat._hand_rects):
                        if rect.collidepoint(event.pos):
                            combat.play_card(i, 0)
        if combat.combat_over:
            running = False
        hitboxes = ui.draw_combat(player, combat)
        pygame.display.flip()
        clock.tick(settings.FPS)
    pygame.quit()


if __name__ == "__main__":
    main()
import pygame
import settings
from classes.player import Player
from classes.combat import CombatManager
from classes.enemy import create_encounter
from classes.ui import UI


def main():
    pygame.init()
    screen = pygame.display.set_mode((settings.SCREEN_WIDTH, settings.SCREEN_HEIGHT))
    clock = pygame.time.Clock()
    player = Player()
    combat = CombatManager(player, create_encounter("slime"))
    ui = UI(screen)
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_e:
                    combat.end_player_turn()
                if event.key == pygame.K_ESCAPE:
                    running = False
            elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
                if hasattr(combat, "_hand_rects"):
                    for i, rect in enumerate(combat._hand_rects):
                        if rect.collidepoint(event.pos):
                            combat.play_card(i, 0)
        if combat.combat_over:
            running = False
        hitboxes = ui.draw_combat(player, combat)
        pygame.display.flip()
        clock.tick(settings.FPS)
    pygame.quit()


if __name__ == "__main__":
    main()