Skip to content

Instantly share code, notes, and snippets.

@ppsirg
Created June 19, 2019 21:23
Show Gist options
  • Save ppsirg/78b0894a8240217d7479f9b5e6e75747 to your computer and use it in GitHub Desktop.
Save ppsirg/78b0894a8240217d7479f9b5e6e75747 to your computer and use it in GitHub Desktop.
boilerplate for multi scenes
#!/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