Created
June 19, 2019 21:23
-
-
Save ppsirg/78b0894a8240217d7479f9b5e6e75747 to your computer and use it in GitHub Desktop.
boilerplate for multi scenes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Módulos | |
import pygame | |
import scene | |
import pygame | |
import sys | |
class baseScene(scene.Scene): | |
"""Escena inicial del juego, esta es la primera que se carga cuando inicia""" | |
def __init__(self, director): | |
scene.Scene.__init__(self, director) | |
def on_update(self): | |
pass | |
def on_event(self): | |
pass | |
def on_draw(self, screen): | |
pass | |
class SceneHome(baseScene): | |
def change_to_settings(self): | |
# codigo para emitir que necesitas | |
# cambiar de pagina | |
pass | |
class SceneSettings(baseScene): | |
def change_to_home(self): | |
# codigo para emitir que necesitas | |
# cambiar de pagina | |
pass | |
class Director: | |
"""Representa el objeto principal del juego. | |
El objeto Director mantiene en funcionamiento el juego, se | |
encarga de actualizar, dibuja y propagar eventos. | |
Tiene que utilizar este objeto en conjunto con objetos | |
derivados de Scene.""" | |
def __init__(self): | |
self.screen = pygame.display.set_mode((640, 480)) | |
pygame.display.set_caption("Nombre Proyecto") | |
self.scene = None | |
self.fullscreen = False | |
self.quit_flag = False | |
self.clock = pygame.time.Clock() | |
self.scene_list = { | |
'home': SceneHome(self), | |
'settings': SceneSettings(self) | |
} | |
def loop(self): | |
"Pone en funcionamiento el juego." | |
while not self.quit_flag: | |
time = self.clock.tick(60) | |
# Eventos de Salida | |
for event in pygame.event.get(): | |
if event.type == pygame.QUIT: | |
self.quit() | |
if event.type == pygame.KEYDOWN: | |
if event.key == pygame.K_ESCAPE: | |
self.quit() | |
# detecta eventos | |
self.scene.on_event() | |
# actualiza la escena | |
self.scene.on_update() | |
# dibuja la pantalla | |
self.scene.on_draw(self.screen) | |
pygame.display.flip() | |
def change_scene_handler(self, identifier): | |
# metodo que responde a los eventos de cambio de escena | |
change_scene(self.scene_list['identifier']) | |
def change_scene(self, scene): | |
"Altera la escena actual." | |
self.scene = scene | |
def quit(self): | |
self.quit_flag = True | |
def main_loop(self): | |
#inicializa home | |
self.change_scene(self.scene_list['home']) | |
self.loop() | |
def main(): | |
dir = Director() | |
dir.main_loop() | |
if __name__ == '__main__': | |
pygame.init() | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment