/
vechnoilive
/
RuleForge_GenAI_Lab
Обзор
Документация
Войти
/
vechnoilive
/
RuleForge_GenAI_Lab
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
engine.py
74 строки
3 KB
vechnoilive
upload files
20 ноя 2025, 01:00
20 ноя 2025, 01:00
823b56d
Код
Авторство
О чём код?
# engine.py — ИСПРАВЛЕННАЯ ВЕРСИЯ (полное заполнение экрана без полос) import pygame from scenes import MenuScene # Импорт MenuScene для main.py from settings import FPS, VIRTUAL_WIDTH, VIRTUAL_HEIGHT, DEFAULT_TIME_SCALE class Scene: def __init__(self, game): self.game = game def enter(self): pass def exit(self): pass def handle_event(self, event): pass def update(self, dt): pass def render(self, surface): pass class Game: def __init__(self): pygame.init() self.virtual_surface = pygame.Surface((VIRTUAL_WIDTH, VIRTUAL_HEIGHT)) # Фиксированная виртуальная поверхность self.surface = pygame.display.set_mode((VIRTUAL_WIDTH, VIRTUAL_HEIGHT)) # Начальный реальный экран pygame.display.set_caption("Ruleforge: Суд Богов (enhanced prototype)") self.clock = pygame.time.Clock() self.running = True self.scene = None self.total_kills = 0 self.next_god_kill = 3 self.room_history = [] self.current_room_id = 0 self.room_states = {} self.time_scale = DEFAULT_TIME_SCALE self.rule_system = None self.storage = {"echos": 0, "perks": [], "perk_levels": {}} self.player = None # Стартуем с главного меню self.set_scene(MenuScene(self)) def set_scene(self, scene): if self.scene: self.scene.exit() self.scene = scene if self.scene: self.scene.enter() def run(self): while self.running: dt = self.clock.tick(FPS) / 1000.0 scaled_dt = dt * self.time_scale for event in pygame.event.get(): if event.type == pygame.QUIT: self.running = False else: if self.scene: self.scene.handle_event(event) if self.scene: self.scene.update(scaled_dt) self.scene.render(self.virtual_surface) # Рендерим на виртуальную поверхность (всегда 1024x640) # Масштабируем на реальный экран (стретчинг — заполняет весь экран без полос!) scaled = pygame.transform.scale(self.virtual_surface, self.surface.get_size()) self.surface.blit(scaled, (0, 0)) # Blit без offsets — полный стретчинг pygame.display.flip() def quit(self): pygame.quit()