import pygame import pygame_gui from game.util import * from game.tilemap import Tilemap from game.screens.main_menu import MainMenu from game.screens.game_play import GamePlay FPS=60 WINDOW_SIZE=(960,540) TILE=16 class Game: def __init__(self): pygame.init() self.window = pygame.display.set_mode(WINDOW_SIZE) self.clock = pygame.time.Clock() self.ui_manager = pygame_gui.UIManager( WINDOW_SIZE, "assets/theme/theme.json" ) self.tilemap = Tilemap(self) self.assets={ "base": load_images('/tiles/test'), "jungle": load_images('/tiles/jungle'), "desert": load_images('/tiles/desert'), "enemy": load_image('/entities/enemies/enemy.png'), "cannon": load_image('/entities/towers/cannon/shoot/0.png'), "red_cannon": load_image('/entities/towers/cannon/red_cannon.png'), "cannon/shoot": Animation(load_images_alpha('/entities/towers/cannon/shoot'), 10, False) } self.screens = { "menu": MainMenu(self), "game": GamePlay(self) } self.current_screen = self.screens["menu"] def change_screen(self, name): self.current_screen.hide() self.current_screen = self.screens[name] self.current_screen.show() def run(self): running = True while running: dt = self.clock.tick(FPS) / 1000.0 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False self.ui_manager.process_events(event) self.current_screen.process_event(event) self.current_screen.update(dt) self.ui_manager.update(dt) self.window.fill((20, 20, 20)) self.current_screen.draw(self.window) self.ui_manager.draw_ui(self.window) pygame.display.update() pygame.quit()