""" Игра "Призрачный лабиринт: сокровища небесного замка" Призрак в лабиринте, управление стрелками и WASD, выход Esc или Q. Чтобы пройти уровень, нужно дойти до выхода, желательно собрав все монетки. После прохождения уровня можно начать новый (кнопкой N) или выйти из игры. Также можно управлять мышкой, перетаскивая героя (зажав ЛКМ) и кликая на надпись, для начала новой игры. Это универсальная версия. Подходит для сборки в виде WASM (для браузера) игры, с помощью pygbag и для запуска напрямую. pip install pygame pygbag потом make (в Linux/WSL) """ import asyncio import os from contextlib import contextmanager from game import Scene from coords import Coords import pygame FPS = 30 @contextmanager def get_assets_direct(names): """передача файлов картинок 1 в 1""" assets_dir = "assets" yield {asset: os.path.join(assets_dir, asset) for asset in names} async def game(assets): screen_sz = Coords(1000, 1000) maze_sz = Coords(6, 6) coins_count = 10 pygame.display.set_caption("Призрачный лабиринт: сокровища небесного замка") total_levels = 0 total_coins = 0 want_new_level = True while want_new_level: scene = Scene(assets, screen_sz, maze_sz, coins_count, FPS) scene.total_levels, scene.total_coins = total_levels, total_coins await scene.event_loop() want_new_level = scene.want_new_level total_levels = scene.total_levels total_coins = scene.total_coins pygame.quit() async def main(): pygame.init() required_assets = [ "bg1k.png", "ghost.png", "brick.png", "win.png", "coin.png", ] with get_assets_direct(required_assets) as assets: await game(assets) asyncio.run(main())