From c6fbb6b5b652f63bdd4e163aa2e1cda5b488748b Mon Sep 17 00:00:00 2001 From: flavio Date: Wed, 04 Apr 2012 00:41:10 +0000 Subject: Login --- diff --git a/BiblioJAM/JAMButton.py b/BiblioJAM/JAMButton.py index b302d51..efa4160 100644 --- a/BiblioJAM/JAMButton.py +++ b/BiblioJAM/JAMButton.py @@ -29,7 +29,8 @@ class JAMButton(pygame.sprite.Sprite): COLORCARA, COLORBAS, COLORBOR, GROSORBOR, DETALLE, ESPESOR= VG.get_default_jambutton_values() - self.base= {"tamanio":None, "colorbas":COLORBAS, "colorbor":COLORBOR, "grosorbor":GROSORBOR, "detalle":DETALLE, "espesor":ESPESOR} + self.base= {"tamanio":None, "colorbas":COLORBAS, "colorbor":COLORBOR, + "grosorbor":GROSORBOR, "detalle":DETALLE, "espesor":ESPESOR} self.cara= {"tamanio":None, "color":COLORCARA} self.borde_label= {"grosor": 0, "color":VG.get_negro()} @@ -38,7 +39,9 @@ class JAMButton(pygame.sprite.Sprite): self.etiqueta_select= JAMLabel(texto) self.etiqueta_select.set_contenedor(colorbas=self.base["colorbor"]) - self.JAMObjects = {"JAMLabelunselect": self.etiqueta_unselect, "JAMLabelselect": self.etiqueta_select, "Base": self.base, "Cara": self.cara, "Borde": self.borde_label} + self.JAMObjects = {"JAMLabelunselect": self.etiqueta_unselect, + "JAMLabelselect": self.etiqueta_select, "Base": self.base, + "Cara": self.cara, "Borde": self.borde_label} self.imagen_cara_unselect= None self.imagen_cara_select= None diff --git a/BiblioJAM/JAMDialog.py b/BiblioJAM/JAMDialog.py index c3cec16..ab9976b 100644 --- a/BiblioJAM/JAMDialog.py +++ b/BiblioJAM/JAMDialog.py @@ -19,7 +19,7 @@ class JAMDialog(pygame.sprite.OrderedUpdates): def __init__(self, mensaje="JAMDialog", funcion_ok=None, funcion_cancel=None): ''' Es un grupo de sprite que contiene: JAMButton aceptar, JAMButton cancelar, Base.''' pygame.sprite.OrderedUpdates.__init__(self) - self.resolucion= (800,600) + self.resolucion= (1200,900) self.mensaje= mensaje self.funcion_ok= None #funcion_ok self.funcion_cancel= None #funcion_cancel @@ -91,17 +91,17 @@ class JAMDialog(pygame.sprite.OrderedUpdates): self.boton_cancelar.set_imagen(origen=imagencancelar , tamanio=tamanio) self.Reconstruye_JAMDialog(["imagenbuttons"]) - def connect(self, funcion_ok=None, funcion_cancel=None): + def connect(self, funcion_ok = None, funcion_cancel = None): ''' Conecta los Botones a Funciones. ''' if funcion_ok != self.funcion_ok: - self.funcion_ok= funcion_ok - self.boton_aceptar.connect(callback=self.funcion_ok, sonido_select=VG.get_sound_select()) + self.funcion_ok = funcion_ok + self.boton_aceptar.connect(callback = self.funcion_ok, sonido_select = None) if funcion_cancel != self.funcion_cancel: - self.funcion_cancel= funcion_cancel - self.boton_cancelar.connect(callback=self.funcion_cancel, sonido_select=VG.get_sound_select()) + self.funcion_cancel = funcion_cancel + self.boton_cancelar.connect(callback = self.funcion_cancel, sonido_select = None) if not funcion_ok or not funcion_cancel: - self.boton_aceptar.connect(sonido_select=VG.get_sound_select()) - self.boton_cancelar.connect(sonido_select=VG.get_sound_select()) + self.boton_aceptar.connect(sonido_select = None) + self.boton_cancelar.connect(sonido_select = None) # ------ Botones def set_colors_dialog(self, base=None, bordes=None): diff --git a/BiblioJAM/JAMGlobals.py b/BiblioJAM/JAMGlobals.py index eda39b0..d9d9140 100644 --- a/BiblioJAM/JAMGlobals.py +++ b/BiblioJAM/JAMGlobals.py @@ -257,7 +257,8 @@ def get_estilo_papel_quemado(): # CALENDARIO def get_calendar(mes, anio): - ''' Devuelve una lista que representa los renglones para un calendario según mes y año, (anio y mes deben ser enteros). ''' + ''' Devuelve una lista que representa los renglones para + un calendario según mes y año, (anio y mes deben ser enteros). ''' import calendar calendario= calendar.Calendar() semanas= calendario.monthdayscalendar(anio, mes) diff --git a/BiblioJAM/JAMLabel.py b/BiblioJAM/JAMLabel.py index 7f5c7ef..da68753 100644 --- a/BiblioJAM/JAMLabel.py +++ b/BiblioJAM/JAMLabel.py @@ -25,7 +25,7 @@ class JAMLabel(pygame.sprite.Sprite): self.imagen = {"origen": None, "tamanio": None} self.texto = {"tipo": pygame.font.get_default_font(), "tamanio": 20, "color": VG.get_negro(), "texto": texto} - self.font_from_file= None # Agregado 15-06-2011 - Para cargar un tipo de letra desde un archivo.(os.getcwd()+"/Fuentes/fawn.ttf", 43) + self.font_from_file= None self.base = {"tamanio": None, "color": None} self.borde = {"grosor": None, "color": None} self.contenedor = {"base": self.base, "borde": self.borde} diff --git a/Crear_Usuario.py b/Crear_Usuario.py new file mode 100644 index 0000000..68026cc --- /dev/null +++ b/Crear_Usuario.py @@ -0,0 +1,539 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import pygame +import os +import gc +import sys +import gtk +import gobject + +from pygame.locals import * +import Globals as G +gc.enable() +import BiblioJAM +from BiblioJAM.JAMButton import JAMButton +from BiblioJAM.JAMLabel import JAMLabel +from BiblioJAM.JAMEntryText import JAMEntryText +from BiblioJAM.JAMBoardEntryText import JAMBoardEntryText +import BiblioJAM.JAMGlobals as JAMG + +class Crear_Usuario(gtk.Widget): + __gsignals__ = {"run":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), + "back":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [])} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.estado = False + self.fondo = None + self.reloj = None + self.frame = None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" + + def run(self): + self.ventana.blit(self.fondo, (0,0)) + self.frame.draw(self.ventana) + pygame.display.update() + while self.estado == "Intro": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + self.frame.clear(self.ventana, self.fondo) + self.frame.update() + self.handle_event_Intro() + pygame.event.clear() + self.frame.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def emit_volver(self, button=None): + self.estado = None + self.emit("back") + + def handle_event_Intro(self): + for event in pygame.event.get(pygame.KEYDOWN): + tecla = event.key + if tecla == pygame.K_ESCAPE: + return self.run_dialog_intro(None) + + def load(self): + pygame.display.set_mode( (0,0), pygame.DOUBLEBUF | pygame.FULLSCREEN, 0) + A, B = G.RESOLUCION + self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) + self.ventana_real = pygame.display.get_surface() + C = pygame.display.Info().current_w + D = pygame.display.Info().current_h + self.resolucionreal = (C,D) + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) + imagen = os.path.join(G.IMAGENES, "Login", "fondo.jpg") + self.fondo = pygame.transform.scale(pygame.image.load(imagen), G.RESOLUCION) + self.reloj = pygame.time.Clock() + self.frame = Frame(self) + self.frame.center(self.fondo.get_size()) + + def run_dialog_intro(self, button): + from BiblioJAM.JAMDialog import JAMDialog + dialog = JAMDialog(mensaje = "¿Abandonas el Juego?", + funcion_ok = self.ok_intro, funcion_cancel = self.cancel_intro) + fuente, tamanio = JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio = 40) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio = 25) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio = 25) + a,b,c = JAMG.get_estilo_papel_quemado() + dialog.set_colors_dialog(base = c, bordes = c) + dialog.set_colors_buttons(colorbas = a, colorbor = b, colorcara = c) + self.estado = "Dialog" + dialog.draw(self.ventana) + pygame.display.update() + while self.estado == "Dialog": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + dialog.clear(self.ventana, self.fondo) + dialog.update() + pygame.event.clear() + dialog.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def ok_intro(self, button): + return self.emit_volver() + def cancel_intro(self, button): + self.estado = "Intro" + + def crear_usuario(self, usuario): + self.estado = None + self.emit("run", usuario) + +class Frame(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + imagen = os.path.join(G.IMAGENES, "Login", "fondo_selecciona.png") + imagen = pygame.transform.scale(pygame.image.load(imagen), (800, 570)) + fuente, tamanio = JAMG.get_Font_fawn() + imagen_teclado = os.path.join(G.IMAGENES, "icono_teclado.jpg") + + self.main = main + self.estado = None + + self.usuario = { + 'nombre':'', + 'edad':'', + 'escuela':'', + 'clase':'', + 'departamento':'', + 'personaje':'' } + + self.jacinto = JAMButton('',None) + imagenusuario = os.path.join(G.IMAGENES, "Login", "jacinto.png") + self.jacinto.set_imagen(origen = imagenusuario) + self.jacinto.connect(callback = self.select_personaje, sonido_select = None) + + self.jose = JAMButton('',None) + imagenusuario = os.path.join(G.IMAGENES, "Login", "jose.png") + self.jose.set_imagen(origen = imagenusuario) + self.jose.connect(callback = self.select_personaje, sonido_select = None) + + self.natalia = JAMButton('',None) + imagenusuario = os.path.join(G.IMAGENES, "Login", "natalia.png") + self.natalia.set_imagen(origen = imagenusuario) + self.natalia.connect(callback = self.select_personaje, sonido_select = None) + + self.personajes = [self.jacinto, self.jose, self.natalia] + for personaje in self.personajes: + personaje.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + personaje.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + + self.entrys = [] + self.board = Board() + + self.fondo = pygame.sprite.Sprite() + self.fondo.image = (imagen) + self.fondo.rect = self.fondo.image.get_rect() + self.add(self.fondo) + imagen = G.get_Flecha() + salir = JAMButton("",None) + salir.set_imagen(origen = imagen, tamanio = (100,55)) + salir.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + salir.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + salir.set_posicion(punto = (10,10)) + salir.connect(callback = main.run_dialog_intro) + self.add(salir) + + # Ingresar nombre + self.label_nombre = JAMLabel("Nombre:") + self.label_nombre.set_text(color = (255,255,255,255)) + self.label_nombre.set_font_from_file(fuente, tamanio = 30) + self.add(self.label_nombre) + self.entry_nombre = JAMButton("",None) + self.entrys.append(self.entry_nombre) + self.add(self.entry_nombre) + + # Ingresar Edad + self.label_edad = JAMLabel("Edad:") + self.label_edad.set_text(color = (255,255,255,255)) + self.label_edad.set_font_from_file(fuente, tamanio = 30) + self.add(self.label_edad) + self.entry_edad = JAMButton("",None) + self.entrys.append(self.entry_edad) + self.add(self.entry_edad) + + # Ingresar escuela + self.label_escuela = JAMLabel("Escuela:") + self.label_escuela.set_text(color = (255,255,255,255)) + self.label_escuela.set_font_from_file(fuente, tamanio = 30) + self.add(self.label_escuela) + self.entry_escuela = JAMButton("",None) + self.entrys.append(self.entry_escuela) + self.add(self.entry_escuela) + + # Ingresar Clase + self.label_clase = JAMLabel("Clase:") + self.label_clase.set_text(color = (255,255,255,255)) + self.label_clase.set_font_from_file(fuente, tamanio = 30) + self.add(self.label_clase) + self.entry_clase = JAMButton("",None) + self.entrys.append(self.entry_clase) + self.add(self.entry_clase) + + # Ingresar departamento + self.label_departamento = JAMLabel("Departamento:") + self.label_departamento.set_text(color = (255,255,255,255)) + self.label_departamento.set_font_from_file(fuente, tamanio = 30) + self.add(self.label_departamento) + self.entry_departamento = JAMButton("",None) + self.entrys.append(self.entry_departamento) + self.add(self.entry_departamento) + + for boton in self.entrys: + boton.set_alineacion_label("izquierda") + boton.set_imagen(origen = imagen_teclado) + boton.set_font_from_file(fuente, tamanio = 25) + boton.set_tamanios(tamanio = (300, 35), grosorbor = 1, detalle = 1, espesor = 1) + boton.connect(callback = None, sonido_select = None) + + self.label_derecho = JAMLabel("Selecciona un Personaje:") + self.label_derecho.set_text(color = (255,255,255,255)) + self.label_derecho.set_font_from_file(fuente, tamanio = 30) + self.add(self.label_derecho) + + self.boton_crear = JAMButton("Crear",None) + self.boton_crear.set_font_from_file(fuente, tamanio = 30) + self.boton_crear.set_tamanios(tamanio = (200,40), grosorbor = 1, detalle = 1, espesor = 1) + self.boton_crear.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255)) + self.boton_crear.connect(callback = self.crear_usuario, sonido_select = None) + + self.add(self.boton_crear) + + self.add(self.jacinto) + self.add(self.jose) + self.add(self.natalia) + + self.entry_nombre.connect(callback = self.enter_nombre) + self.entry_edad.connect(callback = self.enter_edad) + self.entry_escuela.connect(callback = self.enter_escuela) + self.entry_clase.connect(callback = self.enter_clase) + self.entry_departamento.connect(callback = self.enter_departamento) + + def center(self, fondo_size): + sep = 10 + w,h = fondo_size + x, y = (w/2 - self.fondo.rect.w/2, h/2 - self.fondo.rect.h/2) + self.fondo.rect.x, self.fondo.rect.y = (x, y) + + x += sep*2 + y += sep*2 + + self.label_nombre.set_posicion( (x,y) ) + y += self.label_nombre.get_tamanio()[1] + self.entry_nombre.set_posicion( (x,y) ) + y += sep*3 + self.entry_nombre.get_tamanio()[1] + + self.label_edad.set_posicion( (x,y) ) + y += self.label_edad.get_tamanio()[1] + self.entry_edad.set_posicion( (x,y) ) + y += sep*3 + self.entry_edad.get_tamanio()[1] + + self.label_escuela.set_posicion( (x,y) ) + y += self.label_escuela.get_tamanio()[1] + self.entry_escuela.set_posicion( (x,y) ) + y += sep*3 + self.entry_escuela.get_tamanio()[1] + + self.label_clase.set_posicion( (x,y) ) + y += self.label_clase.get_tamanio()[1] + self.entry_clase.set_posicion( (x,y) ) + y += sep*3 + self.entry_clase.get_tamanio()[1] + + self.label_departamento.set_posicion( (x,y) ) + y += self.label_departamento.get_tamanio()[1] + self.entry_departamento.set_posicion( (x,y) ) + + w,h = fondo_size + mitad = self.fondo.rect.w/2 + ww,hh = self.label_derecho.get_tamanio() + x = self.fondo.rect.x + mitad + mitad/2 - ww/2 + y = self.fondo.rect.y + sep + self.label_derecho.set_posicion( (x,y) ) + + ww,hh = self.jacinto.get_tamanio() + x = self.fondo.rect.x + mitad + mitad/2 - ww - sep + y = self.label_derecho.get_posicion()[1] + self.label_derecho.get_tamanio()[1] + sep + self.jacinto.set_posicion( (x,y) ) + + x = self.jacinto.get_posicion()[0] + self.jacinto.get_tamanio()[0] + sep + self.natalia.set_posicion( (x,y) ) + + ww,hh = self.jose.get_tamanio() + x = self.fondo.rect.x + mitad + mitad/2 - ww/2 + y = self.natalia.get_posicion()[1] + self.natalia.get_tamanio()[1] + sep + self.jose.set_posicion( (x,y) ) + + ww,hh = self.boton_crear.get_tamanio() + x = self.fondo.rect.x + mitad + mitad/2 - ww/2 + y = self.jose.get_posicion()[1] + self.jose.get_tamanio()[1] + sep*5 + self.boton_crear.set_posicion( (x,y) ) + + def crear_usuario(self, button): + if self.usuario['nombre'] and self.usuario['edad'] \ + and self.usuario['escuela'] and self.usuario['clase'] \ + and self.usuario['departamento'] and self.usuario['personaje']: + self.main.crear_usuario(self.usuario) + else: + print "Hay un campo sin llenar" + + def select_personaje(self, button): + self.usuario['personaje'] = button.etiqueta_unselect.imagen["origen"] + for personaje in self.personajes: + if not personaje == button: + personaje.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + else: + personaje.set_colores(colorbas = (0,153,255,255), + colorbor = (255,255,255,255), colorcara = (255,255,0,255)) + + def enter_nombre(self, button): + x,y = button.get_posicion() + w,h = button.get_tamanio() + self.board.set_posicion(punto= (x+w,y)) + self.board.callback_enter = self.add_nombre + self.board.text_buffer = button.get_text() + self.add(self.board) + self.run_board(button) + def add_nombre(self, textbuffer): + self.estado = None + if textbuffer: self.usuario['nombre'] = textbuffer + def enter_edad(self, button): + x,y = button.get_posicion() + w,h = button.get_tamanio() + self.board.set_posicion(punto= (x+w,y)) + self.board.callback_enter = self.add_edad + self.board.text_buffer = button.get_text() + self.add(self.board) + self.run_board(button) + def add_edad(self, textbuffer): + self.estado = None + if textbuffer: self.usuario['edad'] = textbuffer + def enter_escuela(self, button): + x,y = button.get_posicion() + w,h = button.get_tamanio() + self.board.set_posicion(punto= (x+w,y)) + self.board.callback_enter = self.add_escuela + self.board.text_buffer = button.get_text() + self.add(self.board) + self.run_board(button) + def add_escuela(self, textbuffer): + self.estado = None + if textbuffer: self.usuario['escuela'] = textbuffer + def enter_clase(self, button): + x,y = button.get_posicion() + w,h = button.get_tamanio() + self.board.set_posicion(punto= (x+w,y)) + self.board.callback_enter = self.add_clase + self.board.text_buffer = button.get_text() + self.add(self.board) + self.run_board(button) + def add_clase(self, textbuffer): + self.estado = None + if textbuffer: self.usuario['clase'] = textbuffer + def enter_departamento(self, button): + x,y = button.get_posicion() + w,h = button.get_tamanio() + self.board.set_posicion(punto= (x+w,y)) + self.board.callback_enter = self.add_departamento + self.board.text_buffer = button.get_text() + self.add(self.board) + self.run_board(button) + def add_departamento(self, textbuffer): + self.estado = None + if textbuffer: self.usuario['departamento'] = textbuffer + + def run_board(self, button): + self.estado = "board" + self.board.draw(self.main.ventana) + pygame.display.update() + while self.estado == "board": + self.main.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.main.VA, self.main.VH) + self.clear(self.main.ventana, self.main.fondo) + self.board.update() + pygame.event.clear() + button.set_text( texto = self.board.text_buffer) + self.draw(self.main.ventana) + self.main.ventana_real.blit(pygame.transform.scale(self.main.ventana, self.main.resolucionreal), (0,0)) + pygame.display.update() + self.board.clear(self.main.ventana, self.main.fondo) + self.main.ventana_real.blit(pygame.transform.scale(self.main.ventana, self.main.resolucionreal), (0,0)) + pygame.display.update() + self.remove(self.board) + +class Board(pygame.sprite.OrderedUpdates): + def __init__(self): + pygame.sprite.OrderedUpdates.__init__(self) + self.fuente, tamanio = JAMG.get_Font_fawn() + + self.tamanio = None + self.base = None + self.text_buffer = "" + self.callback_enter = None + + self.letras, self.numeros, self.especiales = self.get_botones_letras() + botones = self.letras + self.numeros + self.especiales + self.set_normaliza_tamanios_botones(botones) + self.set_posicion() + + self.base = pygame.sprite.Sprite() + self.base.image = JAMG.get_Rectangulo_Transparente(self.tamanio) + self.base.rect = self.base.image.get_rect() + + self.add(self.base) + self.add(self.letras) + self.add(self.numeros) + self.add(self.especiales) + + def set_buffer(self, button): + if self.text_buffer == " ": self.text_buffer = "" + texto = button.get_text() + if texto and texto != "Ñ": self.text_buffer += texto # hay un error en Ñ + if self.text_buffer == " ": self.text_buffer = "" + + def set_back_space(self, button): + if self.text_buffer: + if len(self.text_buffer) > 1: + self.text_buffer = self.text_buffer[:-1] + else: + self.text_buffer = " " + + def set_enter(self, button): + if self.callback_enter: self.callback_enter(self.text_buffer) + + def get_botones_letras(self): + simbols = JAMG.get_letras_up() + botones_letras = [] + for letra in simbols: + boton = JAMButton(letra, None) + boton.set_font_from_file(self.fuente, tamanio = 20) + boton.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + boton.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255)) + #boton.set_text(color = (0,153,255,255)) + boton.connect(callback = self.set_buffer, sonido_select = None) + botones_letras.append(boton) + + simbols = JAMG.get_numeros() + botones_numeros = [] + for letra in simbols: + boton = JAMButton(letra, None) + boton.set_font_from_file(self.fuente, tamanio = 20) + boton.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + boton.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255)) + #boton.set_text(color = (0,153,255,255)) + boton.connect(callback = self.set_buffer, sonido_select = None) + botones_numeros.append(boton) + + botones_especiales = [] + for letra in ['', ' ', '']: + boton = JAMButton(letra, None) + #boton.set_font_from_file(self.fuente, tamanio = 20) + boton.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + boton.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255)) + #boton.set_text(color = (0,153,255,255)) + boton.connect(callback = self.set_buffer, sonido_select = None) + botones_especiales.append(boton) + + imagen = os.path.join(G.IMAGENES, "back.png") + boton = botones_especiales[0] + boton.set_imagen(origen = imagen) + boton.connect(callback = self.set_back_space, sonido_select = None) + + imagen = os.path.join(G.IMAGENES, "enter.png") + boton = botones_especiales[2] + boton.set_imagen(origen = imagen) + boton.connect(callback = self.set_enter, sonido_select = None) + + return (botones_letras, botones_numeros, botones_especiales) + + def set_normaliza_tamanios_botones(self, botones): + ''' Normaliza los Tamaños de los botones. ''' + lado = 0 + for button in botones: + button.set_tamanios(tamanio = (0,0)) + if button.rect.w > lado: + lado = button.rect.w + if button.rect.h > lado: + lado = button.rect.h + for button in botones: + button.set_tamanios(tamanio = (lado,lado)) + + def set_posicion(self, punto = (0,0)): + if self.base: + self.base.rect.x, self.base.rect.y = punto + x, y = punto + for boton in self.numeros: + boton.set_posicion( (x,y) ) + x += boton.get_tamanio()[0] + x, y = punto + y += boton.get_tamanio()[1] + for boton in self.letras[:9]: + boton.set_posicion( (x,y) ) + x += boton.get_tamanio()[0] + x = punto[0] + y += boton.get_tamanio()[1] + for boton in self.letras[9:18]: + boton.set_posicion( (x,y) ) + x += boton.get_tamanio()[0] + x = punto[0] + y += boton.get_tamanio()[1] + for boton in self.letras[18:]: + boton.set_posicion( (x,y) ) + x += boton.get_tamanio()[0] + w = self.numeros[0].get_tamanio()[0]*len(self.numeros) + h = self.numeros[0].get_tamanio()[1]*4 + self.tamanio = (w,h) + + boton = self.numeros[-1] + x,y = boton.get_posicion() + w,h = boton.get_tamanio() + y += h + self.especiales[0].set_posicion( (x,y) ) + y += h + self.especiales[1].set_posicion( (x,y) ) + y += h + self.especiales[2].set_posicion( (x,y) ) + diff --git a/Derecho_a_Transitar.py b/Derecho_a_Transitar.py index 832ead1..603c8a3 100644 --- a/Derecho_a_Transitar.py +++ b/Derecho_a_Transitar.py @@ -1,36 +1,39 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import os, gtk, pygtk, gobject, sys, socket, pygame +import os +import gtk +import gobject +import sys +import socket +import pygame +import shelve from pygame.locals import * from sugar.activity import activity -from Main import Main import Globals as G class Derecho_a_Transitar(activity.Activity): def __init__(self, handle): - activity.Activity.__init__(self, handle, False) - self.eventbox= PygameCanvas() - self.set_canvas(self.eventbox) - + activity.Activity.__init__(self, handle, False) + self.set_title("Derecho A Transitar") + self.socket = gtk.Socket() + self.set_canvas(self.socket) + self.gtkplug = gtkplug() + self.socket.add_id(self.gtkplug.get_id()) self.add_events(gtk.gdk.ALL_EVENTS_MASK) self.connect("destroy", self.salir) - + self.connect("set-focus-child", self.refresh) self.show_all() - self.realize() - - os.putenv('SDL_WINDOWID', str(self.eventbox.socket.get_id())) - gobject.idle_add(self.get_run_game) - - def get_run_game(self): - print "Lanzando Derecho a Transitar." - pygame.init() - Main() - return False - + def refresh(self, widget, datos): + try: + pygame.display.update() + except: + pass + self.queue_draw() + return True def salir(self, widget): - lambda w: gtk.main_quit() + pygame.quit() sys.exit() class PygameCanvas(gtk.EventBox): @@ -41,7 +44,7 @@ class PygameCanvas(gtk.EventBox): self.socket = gtk.Socket() self.add(self.socket) self.button_state = [0,0,0] - self.mouse_pos = (0,0) + self.mouse_pos = (0,0) def setup_events(self): self.set_events(gtk.gdk.KEY_PRESS | gtk.gdk.EXPOSE | gtk.gdk.POINTER_MOTION_MASK | \ @@ -56,16 +59,16 @@ class PygameCanvas(gtk.EventBox): self.connect("focus-in-event", self.set_focus) def keypress(self, selfmain, event, parametros= None): - nombre= gtk.gdk.keyval_name(event.keyval) - tipo= pygame.KEYDOWN - unic= str.lower(nombre) - valor= nombre + nombre = gtk.gdk.keyval_name(event.keyval) + tipo = pygame.KEYDOWN + unic = str.lower(nombre) + valor = nombre try: - valor= getattr(pygame, "K_%s" % (str.upper(nombre))) + valor = getattr(pygame, "K_%s" % (str.upper(nombre))) except: print "no has programado la traduccion de esta tecla: ", nombre return False - evt = pygame.event.Event(tipo, key= valor, unicode= unic, mod=None) + evt = pygame.event.Event(tipo, key = valor, unicode = unic, mod = None) try: pygame.event.post(evt) except: @@ -73,7 +76,8 @@ class PygameCanvas(gtk.EventBox): return False def mousedown(self, widget, event): - evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN, button= event.button, pos=(int(event.x), int(event.y))) + evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN, + button = event.button, pos=(int(event.x), int(event.y))) try: pygame.event.post(evt) except: @@ -83,13 +87,14 @@ class PygameCanvas(gtk.EventBox): def mousemotion(self, widget, event): x, y, state = event.window.get_pointer() rel = (x - self.mouse_pos[0], y - self.mouse_pos[1]) - self.mouse_pos= (int(x), int(y)) + self.mouse_pos = (int(x), int(y)) self.button_state = [ state & gtk.gdk.BUTTON1_MASK and 1 or 0, state & gtk.gdk.BUTTON2_MASK and 1 or 0, state & gtk.gdk.BUTTON3_MASK and 1 or 0, ] - evt = pygame.event.Event(pygame.MOUSEMOTION, pos= self.mouse_pos, rel=rel, buttons=self.button_state) + evt = pygame.event.Event(pygame.MOUSEMOTION, pos = self.mouse_pos, + rel = rel, buttons = self.button_state) try: pygame.event.post(evt) except: @@ -105,7 +110,9 @@ class PygameCanvas(gtk.EventBox): return False # continue processing def resize(self, widget, event): - evt = pygame.event.Event(pygame.VIDEORESIZE, size=(event.width,event.height), width=event.width, height=event.height) + evt = pygame.event.Event(pygame.VIDEORESIZE, + size = (event.width,event.height), + width = event.width, height=event.height) try: pygame.event.post(evt) except: @@ -120,26 +127,19 @@ class PygameCanvas(gtk.EventBox): self.queue_draw() return False -# ----------------------------------------------- -# ******** El Juego en gtk ******** -# ----------------------------------------------- class VentanaGTK(gtk.Window): def __init__(self): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.set_title("Derecho A Transitar") self.fullscreen() - - self.socket = gtk.Socket() - self.add(self.socket) - - self.gtkplug= gtkplug() + self.socket = gtk.Socket() + self.add(self.socket) + self.gtkplug = gtkplug() self.socket.add_id(self.gtkplug.get_id()) - self.add_events(gtk.gdk.ALL_EVENTS_MASK) self.connect("destroy", self.salir) self.connect("set-focus-child", self.refresh) self.show_all() - def refresh(self, widget, datos): try: pygame.display.update() @@ -147,7 +147,6 @@ class VentanaGTK(gtk.Window): pass self.queue_draw() return True - def salir(self, widget): pygame.quit() sys.exit() @@ -155,26 +154,118 @@ class VentanaGTK(gtk.Window): class gtkplug(gtk.Plug): def __init__(self): gtk.Plug.__init__(self, 0L) - self.set_title("Ventana de Plug") - self.resolucion= (self.get_screen().get_width(),self.get_screen().get_height()) - self.eventbox= PygameCanvas() + self.resolucion = (self.get_screen().get_width(),self.get_screen().get_height()) + self.eventbox = PygameCanvas() self.add(self.eventbox) - self.ventana= None + self.ventana = None self.show_all() - + self.usuario = None self.connect("embedded", self.embed_event) + os.putenv('SDL_WINDOWID', str(self.eventbox.socket.get_id())) + gobject.idle_add(self.run_derecho_a_transitar) - os.putenv('SDL_WINDOWID', str(self.eventbox.socket.get_id())) - gobject.idle_add(self.get_run_game) + def embed_event(self, widget): + pass - def get_run_game(self): + def run_derecho_a_transitar(self): + ''' Presentacion inicial.''' pygame.init() - self.eventbox.socket.window.set_cursor(None) - Main() + self.eventbox.socket.window.set_cursor(None) + from Main import Main + main = Main() + main.connect("run", self.run_login) + #main.connect("run", self.run_menu) + main.run() return False - def embed_event(self, widget): - print "Juego embebido" + def run_login(self, widget): + # Seleccionar un Usuario o llama a crear uno nuevo. + from Login import Login + login = Login() + login.connect("crear_usuario", self.crear_usuario) + login.connect("load_usuario", self.run_menu) + login.run() + return False + + def crear_usuario(self, widget): + # Crear un Nuevo Usuario y pasa al menú o vuelve al login. + widget.destroy() + from Crear_Usuario import Crear_Usuario + crear_usuario = Crear_Usuario() + crear_usuario.connect("back", self.run_login) + crear_usuario.connect("run", self.run_menu) + crear_usuario.run() + return False + + def run_menu(self, widget, usuario = None): + # Menú con grupos de actividades. + # Se llama desde login y crear usuario. + if usuario: self.usuario = usuario + filename = os.path.join(G.USERS, self.usuario['nombre']) + d = shelve.open(filename) + d['nombre'] = self.usuario['nombre'] + d['edad'] = self.usuario['edad'] + d['escuela'] = self.usuario['escuela'] + d['clase'] = self.usuario['clase'] + d['departamento'] = self.usuario['departamento'] + d['personaje'] = self.usuario['personaje'] + d.close() + os.chmod(filename, 0666) + widget.destroy() + from Menu import Menu + menu = Menu(self.usuario) + menu.connect("run_grupo", self.run_grupo) + menu.connect("back", self.run_login) + menu.run() + return False + + def run_grupo(self, widget, grupo, puntos = None): + # Menú de actividades para grupos. + widget.destroy() + if puntos: print ">>>>", puntos # Guardar por actividad + from Grupos import Grupos + grupos = Grupos(grupo, self.usuario) + grupos.connect("back", self.run_menu) + grupos.connect("run_game", self.run_game) + grupos.run() + return False + + def run_game(self, widget, game): + # Corre un juego. + widget.destroy() + if game == "FGR_T0101": + from FGR_T0101 import FGR_T0101 + juego = FGR_T0101() + if game == "FGR_T0102": + from FGR_T0102 import FGR_T0102 + juego = FGR_T0102() + if game == "FGR_T0201": + from FGR_T0201 import FGR_T0201 + juego = FGR_T0201() + if game == "FGR_T0202": + from FGR_T0202 import FGR_T0202 + juego = FGR_T0202() + if game == "FGR_T0301": + from FGR_T0301 import FGR_T0301 + juego = FGR_T0301() + if game == "FGR_T0302": + from FGR_T0302 import FGR_T0302 + juego = FGR_T0302() + if game == "FGR_T0303": + from FGR_T0303 import FGR_T0303 + juego = FGR_T0303() + if game == "FGR_T0401": + from FGR_T0401 import FGR_T0401 + juego = FGR_T0401() + if game == "FGR_T0402": + from FGR_T0402 import FGR_T0402 + juego = FGR_T0402() + if game == "FGR_T0501": + from FGR_T0501 import FGR_T0501 + juego = FGR_T0501() + juego.connect("run_grupo", self.run_grupo) + juego.run() + return False if __name__=="__main__": VentanaGTK() diff --git a/FGR_T0101.py b/FGR_T0101.py index 22c44ff..44d5e95 100644 --- a/FGR_T0101.py +++ b/FGR_T0101.py @@ -6,61 +6,62 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0101(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Señales de Tránsito" - self.estado= False - - self.main= main - self.ventana= self.main.ventana - - # Variables del Juego - self.fondo= None - self.reloj= None - self.puntos= 0 +class FGR_T0101(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.nombre = "Señales de Tránsito" + self.ventana = None + self.estado = False + self.fondo = None + self.reloj = None + self.puntos = 0 # Sprites - self.textos= None - self.botonesmenu= None - self.controles= None - self.seniales= None - self.carteles= None - self.senial_select= None + self.textos = None + self.botonesmenu = None + self.controles = None + self.seniales = None + self.carteles = None + self.senial_select = None # sonidos - self.sonido_error= None - self.sonido_exito= None - self.sound_select= None + self.sonido_error = None + self.sonido_exito = None + self.sound_select = None # Escalado - self.ventana_real= None - self.resolucionreal= None - self.VA= None - self.VH= None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado == "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado == "Game": + self.puntos = 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -112,20 +113,8 @@ class FGR_T0101(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): - self.puntos= 0 + self.puntos = 0 self.controles.init() self.seniales.init() @@ -133,31 +122,31 @@ class FGR_T0101(): self.sound_select.play() if not self.controles.recuadro_select in self.controles: self.controles.add(self.controles.recuadro_select) - self.senial_select= senial - self.controles.recuadro_select.rect.center= self.senial_select.rect.center + self.senial_select = senial + self.controles.recuadro_select.rect.center = self.senial_select.rect.center def deja_en(self, cartel): if self.senial_select: - if self.senial_select.name == cartel.name: + if self.senial_select.nombre == cartel.nombre: self.sonido_exito.play() - self.senial_select.ubicada= True + self.senial_select.ubicada = True self.controles.recuadro_select.remove(self.controles) - self.senial_select.rect.center= (cartel.rect.x, cartel.rect.y)#cartel.rect.center - self.senial_select= None - self.puntos+= 10 + self.senial_select.rect.center = (cartel.rect.x, cartel.rect.y)#cartel.rect.center + self.senial_select = None + self.puntos += 10 self.controles.actualiza_puntos() - fin= True + fin = True for senial in self.seniales: - if senial.ubicada== False: - fin= False + if senial.ubicada == False: + fin = False return if fin == True: return self.victory() else: self.sonido_error.play() self.controles.recuadro_select.remove(self.controles) - self.senial_select= None - self.controles.cronometro.cron.segundos_transcurridos+= 5 + self.senial_select = None + self.controles.cronometro.cron.segundos_transcurridos += 5 def suelta(self): if self.senial_select: @@ -237,33 +226,28 @@ class FGR_T0101(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): - A, B= G.RESOLUCION - self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) - self.ventana_real= pygame.display.get_surface() - C= pygame.display.Info().current_w - D= pygame.display.Info().current_h - self.resolucionreal= (C,D) - self.VA= float(C)/float(A) - self.VH= float(D)/float(B) - def load(self): - self.fondo1, self.fondo2= G.get_Fondos_FGR_T0101() - self.fondo2= JAMG.pegar_imagenes_centradas(self.fondo2, self.fondo1.copy()) - self.textos= Textos_Intro() - self.botonesmenu= ButtonsMenu(self) - self.controles= Controles(self) - self.seniales= Seniales(self) - self.carteles= Carteles(self) - self.sonido_error, self.sonido_exito= G.get_Sonidos() - self.sound_select= JAMG.get_sound_select() - self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) pygame.mouse.set_visible(True) + A, B= G.RESOLUCION + self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) + self.ventana_real = pygame.display.get_surface() + C = pygame.display.Info().current_w + D = pygame.display.Info().current_h + self.resolucionreal = (C,D) + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) + self.fondo1, self.fondo2 = G.get_Fondos_FGR_T0101() + self.fondo2 = JAMG.pegar_imagenes_centradas(self.fondo2, self.fondo1.copy()) + self.textos = Textos_Intro() + self.botonesmenu = ButtonsMenu(self) + self.controles = Controles(self) + self.seniales = Seniales(self) + self.carteles = Carteles(self) + self.sonido_error, self.sonido_exito = G.get_Sonidos() + self.sound_select = JAMG.get_sound_select() + self.reloj = pygame.time.Clock() # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -324,7 +308,7 @@ class FGR_T0101(): def ok_intro(self, button): return self.salir(False) def cancel_intro(self, button): - self.estado= "Intro" + self.estado = "Intro" # ----------- EVENTOS en MENU --------------- # ----------- EVENTOS en JUEGO --------------- @@ -366,7 +350,7 @@ class FGR_T0101(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -374,18 +358,21 @@ class FGR_T0101(): self.controles.play() def ok(self, button): - self.estado= "Intro" + self.estado = "Intro" def cancel(self, button): - self.estado= "Game" + self.estado = "Game" # ----------- EVENTOS en JUEGO --------------- - def salir(self, valor= None): - if valor: self.estado= True - if not valor: self.estado= False + def salir(self, valor = None): + ''' + if valor: self.estado = True + if not valor: self.estado = False pygame.mixer.music.unpause() self.seniales.empty() self.carteles.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo1", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -460,7 +447,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -498,7 +485,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -590,7 +577,7 @@ class Seniales(pygame.sprite.OrderedUpdates): posicion= random.choice(posiciones) posiciones.remove(posicion) sprite= Sprite_Seniales(imagen, self.main, posicion) - sprite.name= senial + sprite.nombre= senial self.add(sprite) # el sprite para seleccionar las señales self.main.controles.get_recuadro_select((w,h)) @@ -615,7 +602,7 @@ class Sprite_Seniales(pygame.sprite.Sprite): self.image= imagen self.rect= self.image.get_rect() self.ubicada= False - self.name= None + self.nombre= None self.init() def init(self): @@ -662,7 +649,7 @@ class Carteles(pygame.sprite.OrderedUpdates): posicion= random.choice(posiciones) sprite.rect.center= posicion posiciones.remove(posicion) - sprite.name= cartel + sprite.nombre= cartel self.main.controles.get_labels_carteles(cartel, posicion) self.add(sprite) @@ -673,7 +660,7 @@ class Sprite_Carteles(pygame.sprite.Sprite): self.main= main self.image= imagen self.rect= self.image.get_rect() - self.name= None + self.nombre= None def update(self): eventos= pygame.event.get(pygame.MOUSEBUTTONDOWN) @@ -780,7 +767,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): salir.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) salir.set_tamanios(tamanio=(0,0), grosorbor=1, detalle=1, espesor=1) salir.set_posicion(punto= (10,10)) - salir.connect (callback= self.main.run_dialog_intro) + salir.connect (callback = self.main.run_dialog_intro) self.add(salir) jugar= JAMButton("Jugar",None) @@ -804,7 +791,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -909,14 +896,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0101(self) - -if __name__ == "__main__": - Main() diff --git a/FGR_T0102.py b/FGR_T0102.py index 9173eb8..c26f2e8 100644 --- a/FGR_T0102.py +++ b/FGR_T0102.py @@ -6,61 +6,63 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import sys +import random +import gtk +import gobject from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0102(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Tipos de señales" - self.estado= False - - self.main= main - self.ventana= self.main.ventana - +class FGR_T0102(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "Tipos de señales" + self.estado = False # Variables del Juego - self.fondo= None - self.reloj= None - self.puntos= 0 + self.fondo = None + self.reloj = None + self.puntos = 0 # Sprites - self.textos= None - self.botonesmenu= None - self.controles= None - self.seniales= None - self.carteles= None - self.senial_select= None + self.textos = None + self.botonesmenu = None + self.controles = None + self.seniales = None + self.carteles = None + self.senial_select = None # sonidos - self.sonido_error= None - self.sonido_exito= None - self.sound_select= None + self.sonido_error = None + self.sonido_exito = None + self.sound_select = None # Escalado - self.ventana_real= None - self.resolucionreal= None - self.VA= None - self.VH= None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.estado = "Intro" + self.load() def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado == "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado == "Game": + self.puntos = 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -112,18 +114,6 @@ class FGR_T0102(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.controles.init() @@ -139,7 +129,7 @@ class FGR_T0102(): def deja_en(self, cartel): if self.senial_select: - if self.senial_select.name == cartel.name: + if self.senial_select.nombre == cartel.nombre: self.sonido_exito.play() self.senial_select.ubicada= True self.controles.recuadro_select.remove(self.controles) @@ -243,37 +233,32 @@ class FGR_T0102(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) - self.ventana_real= pygame.display.get_surface() - C= pygame.display.Info().current_w - D= pygame.display.Info().current_h + self.ventana_real = pygame.display.get_surface() + C = pygame.display.Info().current_w + D = pygame.display.Info().current_h self.resolucionreal= (C,D) - self.VA= float(C)/float(A) - self.VH= float(D)/float(B) - - def load(self): + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) self.fondo1, self.fondo2= G.get_Fondos_FGR_T0102() - self.textos= Textos_Intro() - self.botonesmenu= ButtonsMenu(self) - self.controles= Controles(self) - self.seniales= Seniales(self) - self.carteles= Carteles(self) + self.textos = Textos_Intro() + self.botonesmenu = ButtonsMenu(self) + self.controles = Controles(self) + self.seniales = Seniales(self) + self.carteles = Carteles(self) self.sonido_error, self.sonido_exito= G.get_Sonidos() - self.sound_select= JAMG.get_sound_select() + self.sound_select = JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): for event in pygame.event.get(pygame.KEYDOWN): - letra= pygame.key.name(event.key) + letra= pygame.key.nombre(event.key) if letra== "escape": pygame.event.clear() return self.run_dialog_intro(None) @@ -336,7 +321,7 @@ class FGR_T0102(): # ----------- EVENTOS en JUEGO --------------- def handle_event_Game(self): for event in pygame.event.get(pygame.KEYDOWN): - letra= pygame.key.name(event.key) + letra= pygame.key.nombre(event.key) if letra== "escape": pygame.event.clear() return self.run_dialog_game(None) @@ -372,7 +357,7 @@ class FGR_T0102(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -386,12 +371,15 @@ class FGR_T0102(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() self.carteles.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo1", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -450,7 +438,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -488,7 +476,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -580,7 +568,7 @@ class Seniales(pygame.sprite.OrderedUpdates): posicion= random.choice(posiciones) posiciones.remove(posicion) sprite= Sprite_Seniales(imagen, self.main, posicion) - sprite.name= seniales[senial][1] + sprite.nombre= seniales[senial][1] self.add(sprite) # el sprite para seleccionar las señales self.main.controles.get_recuadro_select((w,h)) @@ -605,7 +593,7 @@ class Sprite_Seniales(pygame.sprite.Sprite): self.image= imagen self.rect= self.image.get_rect() self.ubicada= False - self.name= None + self.nombre= None self.init() def init(self): @@ -651,7 +639,7 @@ class Carteles(pygame.sprite.OrderedUpdates): posicion= random.choice(posiciones) sprite.rect.center= posicion posiciones.remove(posicion) - sprite.name= cartel + sprite.nombre= cartel x,y,w,h= sprite.rect posicion= (x+w/2, y+h+20) self.main.controles.get_labels_carteles(cartel, posicion) @@ -669,7 +657,7 @@ class Sprite_Carteles(pygame.sprite.Sprite): self.main= main self.image= imagen self.rect= self.image.get_rect() - self.name= None + self.nombre= None self.posiciones= None def get_posiciones(self): @@ -815,7 +803,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -922,8 +910,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -if __name__ == "__main__": - FGR_T0102() diff --git a/FGR_T0201.py b/FGR_T0201.py index 63f49e1..8c7bd18 100644 --- a/FGR_T0201.py +++ b/FGR_T0201.py @@ -6,61 +6,63 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0201(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Caminando a la Escuela" - self.estado= False - - self.main= main - self.ventana= self.main.ventana - +class FGR_T0201(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "Caminando a la Escuela" + self.estado = False # Variables del Juego - self.fondo= None - self.reloj= None - self.puntos= 0 + self.fondo = None + self.reloj = None + self.puntos = 0 # Sprites - self.textos= None - self.botonesmenu= None - self.controles= None - self.seniales= None - self.carteles= None - self.senial_select= None + self.textos = None + self.botonesmenu = None + self.controles = None + self.seniales = None + self.carteles = None + self.senial_select = None # sonidos - self.sonido_error= None - self.sonido_exito= None - self.sound_select= None + self.sonido_error = None + self.sonido_exito = None + self.sound_select = None # Escalado self.ventana_real= None self.resolucionreal= None self.VA= None self.VH= None + self.load() + self.estado = "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado == "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado == "Game": + self.puntos = 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -112,18 +114,6 @@ class FGR_T0201(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.carteles.init() @@ -139,7 +129,7 @@ class FGR_T0201(): def deja_en(self, cartel): if self.senial_select: - if self.senial_select.name == cartel.name: + if self.senial_select.nombre == cartel.nombre: self.sonido_exito.play() self.senial_select.ubicada= True self.controles.recuadro_select.remove(self.controles) @@ -239,7 +229,10 @@ class FGR_T0201(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -248,8 +241,6 @@ class FGR_T0201(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0201() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -259,12 +250,6 @@ class FGR_T0201(): self.sonido_error, self.sonido_exito= G.get_Sonidos() self.sound_select= JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -367,7 +352,7 @@ class FGR_T0201(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -381,12 +366,15 @@ class FGR_T0201(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() self.carteles.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo2", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -462,7 +450,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -503,7 +491,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -639,7 +627,7 @@ class Sprite_Palabras(JAMButton): JAMButton.__init__(self, texto, None) self.main= main self.ubicada= False - self.name= self.get_text() + self.nombre= self.get_text() def update(self): if self == self.main.senial_select or self.ubicada: return @@ -715,10 +703,10 @@ class Sprites_Labels_Cartesles(JAMLabel): class Sprite_Carteles(JAMButton): ''' El cartel.''' - def __init__(self, main, name): + def __init__(self, main, nombre): JAMButton.__init__(self, ".................", None) self.main= main - self.name= name + self.nombre= nombre self.set_colores(colorbas= JAMG.get_negro(), colorbor= JAMG.get_blanco(), colorcara= JAMG.get_negro()) self.set_text(color= JAMG.get_blanco()) self.set_font_from_file(JAMG.get_Font_fawn()[0], tamanio= 25) @@ -836,7 +824,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -942,8 +930,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -if __name__ == "__main__": - FGR_T0201() diff --git a/FGR_T0202.py b/FGR_T0202.py index 5a4b86b..5872cda 100644 --- a/FGR_T0202.py +++ b/FGR_T0202.py @@ -6,60 +6,62 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0202(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Caminando a la Escuela II" - self.estado= False - - self.main= main - self.ventana= self.main.ventana - +class FGR_T0202(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "Caminando a la Escuela II" + self.estado = False # Variables del Juego - self.fondo= None - self.reloj= None - self.puntos= 0 + self.fondo = None + self.reloj = None + self.puntos = 0 # Sprites - self.textos= None - self.botonesmenu= None - self.controles= None - self.seniales= None - self.senial_select= None + self.textos = None + self.botonesmenu = None + self.controles = None + self.seniales = None + self.senial_select = None # sonidos - self.sonido_error= None - self.sonido_exito= None - self.sound_select= None + self.sonido_error = None + self.sonido_exito = None + self.sound_select = None # Escalado - self.ventana_real= None - self.resolucionreal= None - self.VA= None - self.VH= None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado== "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado== "Game": + self.puntos= 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -107,18 +109,6 @@ class FGR_T0202(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.controles.init() @@ -204,7 +194,10 @@ class FGR_T0202(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -213,8 +206,6 @@ class FGR_T0202(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0202() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -223,12 +214,6 @@ class FGR_T0202(): self.sonido_error, self.sonido_exito= G.get_Sonidos() self.sound_select= JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -331,7 +316,7 @@ class FGR_T0202(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -345,11 +330,14 @@ class FGR_T0202(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo2", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -388,7 +376,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -426,7 +414,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -726,7 +714,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -832,15 +820,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.init() - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0202(self) - -if __name__ == "__main__": - Main() diff --git a/FGR_T0301.py b/FGR_T0301.py index 3d23368..b0de625 100644 --- a/FGR_T0301.py +++ b/FGR_T0301.py @@ -6,61 +6,63 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0301(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Seré Conductor" - self.estado= False - - self.main= main - self.ventana= self.main.ventana - +class FGR_T0301(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "Seré Conductor" + self.estado = False # Variables del Juego - self.fondo= None - self.reloj= None - self.puntos= 0 + self.fondo = None + self.reloj = None + self.puntos = 0 # Sprites - self.textos= None - self.botonesmenu= None - self.controles= None - self.seniales= None - self.carteles= None - self.senial_select= None + self.textos = None + self.botonesmenu = None + self.controles = None + self.seniales = None + self.carteles = None + self.senial_select = None # sonidos - self.sonido_error= None - self.sonido_exito= None - self.sound_select= None + self.sonido_error = None + self.sonido_exito = None + self.sound_select = None # Escalado - self.ventana_real= None - self.resolucionreal= None - self.VA= None - self.VH= None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado== "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado== "Game": + self.puntos= 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -111,18 +113,6 @@ class FGR_T0301(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.carteles.init() @@ -211,7 +201,10 @@ class FGR_T0301(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -220,8 +213,6 @@ class FGR_T0301(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0301() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -231,12 +222,6 @@ class FGR_T0301(): self.sonido_error, self.sonido_exito= G.get_Sonidos() self.sound_select= JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -339,7 +324,7 @@ class FGR_T0301(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -353,12 +338,15 @@ class FGR_T0301(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() self.carteles.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo3", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -396,7 +384,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -434,7 +422,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -677,7 +665,7 @@ class Sprite_Imagen_Palabra(pygame.sprite.Sprite): self.kill() class Palabra(pygame.sprite.OrderedUpdates): - def __init__(self, main, name): + def __init__(self, main, nombre): pygame.sprite.OrderedUpdates.__init__(self) self.ubicada= False @@ -844,7 +832,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -950,15 +938,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.init() - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0301(self) - -if __name__ == "__main__": - Main() diff --git a/FGR_T0302.py b/FGR_T0302.py index b1cc0c4..e6887ec 100644 --- a/FGR_T0302.py +++ b/FGR_T0302.py @@ -6,60 +6,62 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0302(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Seré Conductor. ¡A Rodar!" - self.estado= False - - self.main= main - self.ventana= self.main.ventana - +class FGR_T0302(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "Seré Conductor. ¡A Rodar!" + self.estado = False # Variables del Juego - self.fondo= None - self.reloj= None - self.puntos= 0 + self.fondo = None + self.reloj = None + self.puntos = 0 # Sprites - self.textos= None - self.botonesmenu= None - self.controles= None - self.seniales= None - self.senial_select= None + self.textos = None + self.botonesmenu = None + self.controles = None + self.seniales = None + self.senial_select = None # sonidos - self.sonido_error= None - self.sonido_exito= None - self.sound_select= None + self.sonido_error = None + self.sonido_exito = None + self.sound_select = None # Escalado self.ventana_real= None self.resolucionreal= None - self.VA= None - self.VH= None + self.VA = None + self.VH = None + self.load() + self.estado= "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado== "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado== "Game": + self.puntos= 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -107,18 +109,6 @@ class FGR_T0302(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.controles.init() @@ -205,7 +195,10 @@ class FGR_T0302(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -214,8 +207,6 @@ class FGR_T0302(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0302() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -224,12 +215,6 @@ class FGR_T0302(): self.sonido_error, self.sonido_exito= G.get_Sonidos() self.sound_select= JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -332,7 +317,7 @@ class FGR_T0302(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -346,11 +331,14 @@ class FGR_T0302(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo3", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -389,7 +377,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -427,7 +415,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -794,7 +782,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -900,16 +888,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.init() - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0302(self) - -if __name__ == "__main__": - Main() - diff --git a/FGR_T0303.py b/FGR_T0303.py index ef2becd..2f80abb 100644 --- a/FGR_T0303.py +++ b/FGR_T0303.py @@ -6,27 +6,27 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0303(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "¡Ciclistas y peatones precavidos y expertos!" - self.estado= False - - self.main= main - self.ventana= self.main.ventana - +class FGR_T0303(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "¡Ciclistas y peatones precavidos y expertos!" + self.estado = False # Variables del Juego self.fondo= None self.reloj= None @@ -49,17 +49,19 @@ class FGR_T0303(): self.resolucionreal= None self.VA= None self.VH= None + self.load() + self.estado = "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado== "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado== "Game": + self.puntos= 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -107,18 +109,6 @@ class FGR_T0303(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.controles.init() @@ -205,7 +195,10 @@ class FGR_T0303(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -214,8 +207,6 @@ class FGR_T0303(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0303() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -224,12 +215,6 @@ class FGR_T0303(): self.sonido_error, self.sonido_exito= G.get_Sonidos() self.sound_select= JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -332,7 +317,7 @@ class FGR_T0303(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -346,11 +331,14 @@ class FGR_T0303(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo3", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -389,7 +377,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 25) @@ -427,7 +415,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -741,7 +729,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -847,16 +835,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.init() - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0303(self) - -if __name__ == "__main__": - Main() - diff --git a/FGR_T0401.py b/FGR_T0401.py index fa27d80..f62b330 100644 --- a/FGR_T0401.py +++ b/FGR_T0401.py @@ -6,26 +6,27 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0401(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Niñas y niños pasajeros!" - self.estado= False - - self.main= main - self.ventana= self.main.ventana +class FGR_T0401(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "Niñas y niños pasajeros!" + self.estado = False # Variables del Juego self.fondo= None @@ -49,17 +50,19 @@ class FGR_T0401(): self.resolucionreal= None self.VA= None self.VH= None + self.load() + self.estado= "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado== "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado== "Game": + self.puntos= 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -107,18 +110,6 @@ class FGR_T0401(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.controles.init() @@ -205,7 +196,10 @@ class FGR_T0401(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -214,8 +208,6 @@ class FGR_T0401(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0401() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -224,12 +216,6 @@ class FGR_T0401(): self.sonido_error, self.sonido_exito= G.get_Sonidos() self.sound_select= JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -332,7 +318,7 @@ class FGR_T0401(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -346,11 +332,14 @@ class FGR_T0401(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo4", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -389,7 +378,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -427,7 +416,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -779,7 +768,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -885,16 +874,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.init() - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0401(self) - -if __name__ == "__main__": - Main() - diff --git a/FGR_T0402.py b/FGR_T0402.py index aabe60d..349ba01 100644 --- a/FGR_T0402.py +++ b/FGR_T0402.py @@ -6,60 +6,63 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0402(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "¡Pasajeros sin responsabilidad ciudadana!" - self.estado= False - - self.main= main - self.ventana= self.main.ventana +class FGR_T0402(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "¡Pasajeros sin responsabilidad ciudadana!" + self.estado = False # Variables del Juego - self.fondo= None - self.reloj= None - self.puntos= 0 + self.fondo = None + self.reloj = None + self.puntos = 0 # Sprites - self.textos= None - self.botonesmenu= None - self.controles= None - self.seniales= None - self.senial_select= None + self.textos = None + self.botonesmenu = None + self.controles = None + self.seniales = None + self.senial_select = None # sonidos - self.sonido_error= None - self.sonido_exito= None - self.sound_select= None + self.sonido_error = None + self.sonido_exito = None + self.sound_select = None # Escalado - self.ventana_real= None - self.resolucionreal= None - self.VA= None - self.VH= None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado== "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado== "Game": + self.puntos= 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -107,18 +110,6 @@ class FGR_T0402(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.controles.init() @@ -209,7 +200,10 @@ class FGR_T0402(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -218,8 +212,6 @@ class FGR_T0402(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0402() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -228,12 +220,6 @@ class FGR_T0402(): self.sonido_error, self.sonido_exito= G.get_Sonidos() self.sound_select= JAMG.get_sound_select() self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): @@ -336,7 +322,7 @@ class FGR_T0402(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -350,11 +336,14 @@ class FGR_T0402(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo4", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -393,7 +382,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 25) @@ -431,7 +420,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -742,7 +731,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -848,16 +837,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.init() - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0402(self) - -if __name__ == "__main__": - Main() - diff --git a/FGR_T0501.py b/FGR_T0501.py index ce80812..1abacaf 100644 --- a/FGR_T0501.py +++ b/FGR_T0501.py @@ -6,26 +6,27 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import gc +import gobject +import sys +import random +import gtk from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton from BiblioJAM.JAMLabel import JAMLabel import BiblioJAM.JAMGlobals as JAMG -class FGR_T0501(): - def __init__(self, main): - # Variables para JAMatrix - self.ventana= None - self.name= "Paseando en Familia" - self.estado= False - - self.main= main - self.ventana= self.main.ventana +class FGR_T0501(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_INT))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.nombre = "Paseando en Familia" + self.estado = False # Variables del Juego self.fondo= None @@ -49,17 +50,19 @@ class FGR_T0501(): self.resolucionreal= None self.VA= None self.VH= None + self.load() + self.estado= "Intro" def run(self): - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() + if self.estado== "Intro": + self.controles.stop() + self.fondo = self.fondo1 + return self.run_menu() + elif self.estado== "Game": + self.puntos= 0 + self.fondo = self.fondo2 + self.reset() + return self.run_juego() def run_menu(self): self.ventana.blit(self.fondo, (0,0)) @@ -107,18 +110,6 @@ class FGR_T0501(): #self.victory() #self.game_over(None) - def switch(self): - if self.estado== "Intro": - self.controles.stop() - self.fondo = self.fondo1 - self.set_event_intro() - return self.run_menu() - elif self.estado== "Game": - self.puntos= 0 - self.fondo = self.fondo2 - self.reset() - return self.run_juego() - def reset(self): self.puntos= 0 self.controles.init() @@ -205,7 +196,10 @@ class FGR_T0501(): return self.salir(False) # ----------- SETEOS ------------- - def preset(self): + def load(self): + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) A, B= G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) self.ventana_real= pygame.display.get_surface() @@ -214,8 +208,6 @@ class FGR_T0501(): self.resolucionreal= (C,D) self.VA= float(C)/float(A) self.VH= float(D)/float(B) - - def load(self): self.fondo1, self.fondo2= G.get_Fondos_FGR_T0501() self.textos= Textos_Intro() self.botonesmenu= ButtonsMenu(self) @@ -226,11 +218,6 @@ class FGR_T0501(): self.reloj = pygame.time.Clock() self.estado= True - def set_event_intro(self): - pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) - pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) - pygame.mouse.set_visible(True) - # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): for event in pygame.event.get(pygame.KEYDOWN): @@ -332,7 +319,7 @@ class FGR_T0501(): dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - return self.switch() + return self.run() else: dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -346,11 +333,14 @@ class FGR_T0501(): # ----------- EVENTOS en JUEGO --------------- def salir(self, valor= None): + ''' if valor: self.estado= True if not valor: self.estado= False pygame.mixer.music.unpause() self.seniales.empty() - self.controles.empty() + self.controles.empty()''' + self.estado = False + self.emit("run_grupo", "grupo5", self.puntos) # -------- CONTROLES ---------- class Controles(pygame.sprite.OrderedUpdates): @@ -389,7 +379,7 @@ class Controles(pygame.sprite.OrderedUpdates): cartel_titulo.rect.y= -60 self.add(cartel_titulo) - self.titulo= JAMLabel(self.main.name) + self.titulo= JAMLabel(self.main.nombre) self.titulo.set_text(color=JAMG.get_blanco()) fuente, tamanio= JAMG.get_Font_fawn() self.titulo.set_font_from_file(fuente, tamanio= 40) @@ -427,7 +417,7 @@ class Controles(pygame.sprite.OrderedUpdates): def switching_game(self, button): self.main.estado= "Intro" - return self.main.switch() + return self.main.run() def init(self): sound= self.sonidos_reloj[0] @@ -778,7 +768,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): def switching(self, button): self.main.estado= "Game" pygame.event.clear() - return self.main.switch() + return self.main.run() # --------- Botones en Menu (Salir y Jugar) ------------------ # --------- Mensaje Final --------- @@ -884,16 +874,4 @@ class Mensaje(pygame.sprite.OrderedUpdates): self.label2.rect.x= self.x_final_label2 self.label1.rect.x= self.x_final_label1 self.estado= False -# --------- Mensaje Final --------- - -class Main(): - def __init__(self): - pygame.init() - pygame.display.set_mode(G.RESOLUCION , 0, 0) - self.ventana= pygame.display.get_surface() - FGR_T0501(self) - -if __name__ == "__main__": - Main() - diff --git a/Globals.py b/Globals.py index aa863f2..184ea58 100644 --- a/Globals.py +++ b/Globals.py @@ -6,100 +6,158 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, os, random, platform +import pygame +import gc +import sys +import os +import random +import platform +import gtk +import shelve + from pygame.locals import * gc.enable() +GRIS = gtk.gdk.Color(60156, 60156, 60156, 1) +AMARILLO1 = gtk.gdk.Color(65000,65000,40275,1) +NARANJA = gtk.gdk.Color(65000,26000,0,1) +BLANCO = gtk.gdk.Color(65535, 65535, 65535,1) +NEGRO = gtk.gdk.Color(0, 0, 0, 1) +CELESTE = gtk.gdk.Color(63000, 65535, 65535,1) + if "olpc" in platform.platform(): os.environ['SDL_AUDIODRIVER'] = 'alsa' -DIRECTORIO_BASE= os.path.dirname(__file__) +DIRECTORIO_BASE = os.path.dirname(__file__) +IMAGENES = os.path.join(DIRECTORIO_BASE, "Imagenes") +SONIDOS = os.path.join(DIRECTORIO_BASE, "Sonidos") + +USERS = os.path.join(os.environ["HOME"], "DerechoATransitar") +if not os.path.exists(USERS): + os.mkdir(USERS) + os.chmod(USERS, 0755) + +def get_users(): + archivos = os.listdir(USERS) + usuarios = [] + for archivo in archivos: + arch = shelve.open(os.path.join(USERS, archivo)) + usuario = dict(arch) + arch.close() + usuarios.append(usuario) + return usuarios def Traduce_posiciones(VA, VH): -# Escala eventos de Posición - eventos= pygame.event.get(pygame.MOUSEBUTTONDOWN) + eventos = pygame.event.get(pygame.MOUSEBUTTONDOWN) for event in eventos: x, y = event.pos - xx= x/VA - yy= y/VH - event_pos= (xx, yy) + xx = x/VA + yy = y/VH + event_pos = (xx, yy) for event in eventos: - evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN, pos= event_pos, button=event.button) + evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN, + pos = event_pos, button = event.button) pygame.event.post(evt) - eventos= pygame.event.get(pygame.MOUSEMOTION) + eventos = pygame.event.get(pygame.MOUSEMOTION) for event in eventos: x, y = event.pos - xx= x/VA - yy= y/VH - event_pos= (xx, yy) + xx = x/VA + yy = y/VH + event_pos = (xx, yy) for event in eventos: - evt = pygame.event.Event(pygame.MOUSEMOTION, pos= event_pos, rel=event.rel, buttons=event.buttons) + evt = pygame.event.Event(pygame.MOUSEMOTION, + pos = event_pos, rel = event.rel, buttons = event.buttons) pygame.event.post(evt) # ---- Generales RESOLUCION = (1200,900) def get_Fondo_Inicial(): - return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Pantalla-Inicio.jpg"), RESOLUCION) + imagen = os.path.join(IMAGENES, "Pantalla-Inicio.jpg") + return pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) def get_Fondo(): - return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/fondo1.jpg"), (1200,900)) + imagen = os.path.join(IMAGENES, "fondo1.jpg") + return pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) def get_Flecha(): - return (DIRECTORIO_BASE+"/Imagenes/flecha.png") + return os.path.join(IMAGENES, "flecha.png") def get_Sonidos(): - frenada1= pygame.mixer.Sound(DIRECTORIO_BASE+"/Sonidos/frenada1.ogg") - aplausos1= pygame.mixer.Sound(DIRECTORIO_BASE+"/Sonidos/aplausos1.ogg") + sonido = os.path.join(SONIDOS, "frenada1.ogg") + frenada1 = pygame.mixer.Sound(sonido) + sonido = os.path.join(SONIDOS, "aplausos1.ogg") + aplausos1 = pygame.mixer.Sound(sonido) return frenada1, aplausos1 def get_ambiente(): - ambiente= None#pygame.mixer.music.load(DIRECTORIO_BASE+"/Sonidos/ambiente.ogg") + ambiente = None + # pygame.mixer.music.load(DIRECTORIO_BASE+"/Sonidos/ambiente.ogg") return ambiente def get_Imagen_Cartel1(): - ''' Devuelve la imagen para los carteles. ''' - return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/cartel1.png"), (276,145)) + imagen = os.path.join(IMAGENES, "cartel1.png") + return pygame.transform.scale(pygame.image.load(imagen), (276,145)) def get_Imagen_CartelMenu(): - ''' Devuelve la imagen para los carteles. ''' - un= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/cartel2.png"), (250,162)) - dos= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/cartel3.png"), (250,162)) + imagen = os.path.join(IMAGENES, "cartel2.png") + un = pygame.transform.scale(pygame.image.load(imagen), (250,162)) + imagen = os.path.join(IMAGENES, "cartel3.png") + dos = pygame.transform.scale(pygame.image.load(imagen), (250,162)) return (un, dos) def get_Imagen_Gruber1(): - return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/cebra1.png"), (250,310)) + imagen = os.path.join(IMAGENES, "cebra1.png") + return pygame.transform.scale(pygame.image.load(imagen), (250,310)) def get_Imagen_Gruber2(): - return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/cebra2.png"), (250,310)) + imagen = os.path.join(IMAGENES, "cebra2.png") + return pygame.transform.scale(pygame.image.load(imagen), (250,310)) def get_Imagen_Gruber3(): - return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/cebra3.png"), (250,310)) + imagen = os.path.join(IMAGENES, "cebra3.png") + return pygame.transform.scale(pygame.image.load(imagen), (250,310)) def get_sound_clock(): - clock1= pygame.mixer.Sound(DIRECTORIO_BASE+"/Sonidos/clock_tick1.ogg") - clock2= pygame.mixer.Sound(DIRECTORIO_BASE+"/Sonidos/clock_tick2.ogg") - clock3= pygame.mixer.Sound(DIRECTORIO_BASE+"/Sonidos/clock_tick3.ogg") + sonido = os.path.join(SONIDOS, "clock_tick1.ogg") + clock1 = pygame.mixer.Sound(sonido) + sonido = os.path.join(SONIDOS, "clock_tick2.ogg") + clock2 = pygame.mixer.Sound(sonido) + sonido = os.path.join(SONIDOS, "clock_tick3.ogg") + clock3 = pygame.mixer.Sound(sonido) return [clock1, clock2, clock3] def get_instruc(name): - return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Instructivos/%s.jpg" % (name)), (1200,900)) + imagen = os.path.join(IMAGENES, "Instructivos/%s.jpg" % (name)) + return pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) + #return pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Instructivos/%s.jpg" % (name)), RESOLUCION) def get_Presentacion(): - directorio= DIRECTORIO_BASE+"/Imagenes/Presentacion/" - imagenes= [] + directorio = os.path.join(IMAGENES, "Presentacion") + imagenes = [] for archivo in os.listdir(directorio): - imagen= pygame.transform.scale(pygame.image.load(directorio + "%s" % (archivo)), (1200,900)) + img = os.path.join(directorio, "%s" % (archivo)) + imagen = pygame.transform.scale(pygame.image.load(img), RESOLUCION) imagenes.append(imagen) return imagenes +''' def get_cartel_presenta(): - img1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/pandilla1.png"), (175,175)) - img2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/pandilla2.png"), (175,175)) - return img1, img2 + imagen = os.path.join(IMAGENES, "pandilla1.png") + img1 = pygame.transform.scale(pygame.image.load(imagen), (175,175)) + imagen = os.path.join(IMAGENES, "pandilla2.png") + img2 = pygame.transform.scale(pygame.image.load(imagen), (175,175)) + return img1, img2''' # ------------- T0101 ------------- # Imagenes: def get_Fondos_FGR_T0101(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0101/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0101/fondo2.jpg"), (1200,900)) + imagen = os.path.join(IMAGENES, "FGR_T0101", "fondo1.jpg") + fondo1 = pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) + imagen = os.path.join(IMAGENES, "FGR_T0101", "fondo2.jpg") + fondo2 = pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) return (fondo1, fondo2) def get_Seniales_FGR_T0101(): ''' Devuelve las señales y sus posiciones. ''' - seniales= {} - seniales["Sentido obligatorio"]= (pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Seniales1/senial1.png"),(145,145))) - seniales["Curva Peligrosa"]= (pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Seniales1/senial2.png"),(145,145))) - seniales["Prohibido Adelantar o Rebasar"]= (pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Seniales1/senial3.png"),(145,145))) - seniales["¡Peligro! Paso a nivel sin barrera"]= (pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Seniales1/senial4.png"),(145,145))) - seniales["Prohibido acceso a peatones"]= (pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/Seniales1/senial5.png"),(145,145))) + seniales = {} + imagen = os.path.join(IMAGENES, "Seniales1", "senial1.png") + seniales["Sentido obligatorio"] = (pygame.transform.scale(pygame.image.load(imagen),(145,145))) + imagen = os.path.join(IMAGENES, "Seniales1", "senial2.png") + seniales["Curva Peligrosa"] = (pygame.transform.scale(pygame.image.load(imagen),(145,145))) + imagen = os.path.join(IMAGENES, "Seniales1", "senial3.png") + seniales["Prohibido Adelantar o Rebasar"] = (pygame.transform.scale(pygame.image.load(imagen),(145,145))) + imagen = os.path.join(IMAGENES, "Seniales1", "senial4.png") + seniales["¡Peligro! Paso a nivel sin barrera"] = (pygame.transform.scale(pygame.image.load(imagen),(145,145))) + imagen = os.path.join(IMAGENES, "Seniales1", "senial5.png") + seniales["Prohibido acceso a peatones"] = (pygame.transform.scale(pygame.image.load(imagen),(145,145))) return seniales def get_Posicion_Seniales_FGR_T0101(): return [(190,323), (395,272), (600,339), (805,269), (1010,338)] @@ -107,11 +165,11 @@ def get_Posicion_Seniales_FGR_T0101(): def get_Carteles_FGR_T0101(): ''' Devuelve los textos de los carteles. ''' carteles= {} - carteles["Sentido obligatorio"]= None - carteles["Curva Peligrosa"]= None - carteles["Prohibido Adelantar o Rebasar"]= None - carteles["¡Peligro! Paso a nivel sin barrera"]= None - carteles["Prohibido acceso a peatones"]= None + carteles["Sentido obligatorio"] = None + carteles["Curva Peligrosa"] = None + carteles["Prohibido Adelantar o Rebasar"] = None + carteles["¡Peligro! Paso a nivel sin barrera"] = None + carteles["Prohibido acceso a peatones"] = None return carteles def get_Posicion_Carteles_FGR_T0101(): ''' Devuelve las posiciones de los carteles. ''' @@ -135,8 +193,8 @@ def get_Textos_FGR_T0101(): # ------------- T0102 ------------- # Imagenes: def get_Fondos_FGR_T0102(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0102/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0102/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0102/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0102/fondo2.jpg"), RESOLUCION) return (fondo1, fondo2) def get_Seniales_FGR_T0102(): @@ -242,8 +300,8 @@ def get_Textos_FGR_T0102(): # ------------- T0103 ------------- # Imagenes: def get_Fondos_FGR_T0103(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0103/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0103/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0103/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0103/fondo2.jpg"), RESOLUCION) return (fondo1, fondo2) # Textos: @@ -264,8 +322,8 @@ def get_frases_FGR_T0103(): # ------------- T0201 ------------- # Imagenes: def get_Fondos_FGR_T0201(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0201/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0201/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0201/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0201/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) def get_Imagenes_FGR_T0201(): @@ -311,8 +369,8 @@ def get_Posicion_Palabras_FGR_T0201(): # ------------- T0202 ------------- # Imagenes: def get_Fondos_FGR_T0202(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0202/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0202/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0202/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0202/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) def get_afirmaciones_FGR_T0202(): @@ -368,8 +426,8 @@ def get_Textos_FGR_T0202(): # ------------- T0301 ------------- # Imagenes: def get_Fondos_FGR_T0301(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0301/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0301/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0301/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0301/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) def get_personajes_FGR_T0301(): @@ -397,8 +455,8 @@ def get_Textos_FGR_T0301(): # ------------- T0302 ------------- # Imagenes: def get_Fondos_FGR_T0302(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0302/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0302/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0302/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0302/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) # Textos: @@ -478,8 +536,8 @@ def get_afirmaciones_FGR_T0302(): # ------------- T0401 ------------- # Imagenes: def get_Fondos_FGR_T0401(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0401/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0401/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0401/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0401/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) # Textos: @@ -558,8 +616,8 @@ def get_afirmaciones_FGR_T0401(): # ------------- T0501 ------------- # Imagenes: def get_Fondos_FGR_T0501(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0501/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0501/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0501/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0501/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) # Textos: @@ -627,8 +685,8 @@ def get_afirmaciones_FGR_T0501(): # ------------- T0303 ------------- # Imagenes: def get_Fondos_FGR_T0303(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0303/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0303/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0303/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0303/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) # Textos: @@ -668,8 +726,8 @@ def get_afirmaciones_FGR_T0303(): # ------------- T0402 ------------- # Imagenes: def get_Fondos_FGR_T0402(): - fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0402/fondo1.jpg"), (1200,900)) - fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0402/fondo2.jpg"), (1200,900)) + fondo1= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0402/fondo1.jpg"), RESOLUCION) + fondo2= pygame.transform.scale(pygame.image.load(DIRECTORIO_BASE+"/Imagenes/FGR_T0402/fondo2.jpg"), RESOLUCION) return (fondo1,fondo2) # Textos: diff --git a/Grupos.py b/Grupos.py new file mode 100644 index 0000000..879d9be --- /dev/null +++ b/Grupos.py @@ -0,0 +1,452 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Main.py por: Flavio Danesse fdanesse@gmail.com +# https://sites.google.com/site/flaviodanesse/ +# https://sites.google.com/site/sugaractivities/ +# http://codigosdeejemplo.blogspot.com/ + +import pygame +import os +import gc +import sys +import random +import gtk +import gobject +from pygame.locals import * +import Globals as G +gc.enable() +import BiblioJAM +from BiblioJAM.JAMButton import JAMButton +import BiblioJAM.JAMGlobals as JAMG + +class Grupos(gtk.Widget): + __gsignals__ = {"run_game":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)), + "back":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [])} + def __init__(self, grupo, usuario): + gtk.Widget.__init__(self) + self.usuario = usuario + self.grupo = grupo + self.ventana = None + self.estado = False + self.fondo = None + self.reloj = None + self.botonesmenu = None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" + + def run(self): + self.ventana.blit(self.fondo, (0,0)) + self.botonesmenu.draw(self.ventana) + pygame.display.update() + while self.estado == "Intro": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + self.botonesmenu.clear(self.ventana, self.fondo) + self.botonesmenu.update() + self.handle_event_Intro() + pygame.event.clear() + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def presentacion(self, button): + presentacion = Presentacion(self) + self.ventana.blit(self.fondo, (0,0)) + presentacion.draw(self.ventana) + pygame.display.update() + while presentacion.estado: + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + presentacion.clear(self.ventana, self.fondo) + presentacion.update() + pygame.event.clear() + presentacion.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + imagen = os.path.join(G.IMAGENES, "Login", "fondo.jpg") + self.fondo = pygame.transform.scale(pygame.image.load(imagen), G.RESOLUCION) + self.ventana.blit(self.fondo, (0,0)) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def update(self): + self.ventana.blit(self.fondo, (0,0)) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def emit_volver(self, button=None): + self.estado = None + self.emit("back") + + # Juegos Grupo 1 + def run_game11(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0101") + def run_game12(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0102") + # Juegos Grupo 2 + def run_game21(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0201") + def run_game22(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0202") + # Juegos Grupo 3 + def run_game31(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0301") + def run_game32(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0302") + def run_game33(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0303") + # Juegos Grupo 4 + def run_game41(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0401") + def run_game42(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0402") + # Juegos Grupo 5 + def run_game51(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0501") + + def handle_event_Intro(self): + for event in pygame.event.get(pygame.KEYDOWN): + tecla = event.key + if tecla == pygame.K_ESCAPE: + pygame.event.clear() + self.run_dialog_intro(None) + + def load(self): + A, B = G.RESOLUCION + self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) + self.ventana_real = pygame.display.get_surface() + C = pygame.display.Info().current_w + D = pygame.display.Info().current_h + self.resolucionreal = (C,D) + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) + imagen = os.path.join(G.IMAGENES, "Login", "fondo.jpg") + self.fondo = pygame.transform.scale(pygame.image.load(imagen), G.RESOLUCION) + self.botonesmenu = ButtonsMenu(self) + self.reloj = pygame.time.Clock() + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN,KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) + + def run_dialog_intro(self, button): + from BiblioJAM.JAMDialog import JAMDialog + dialog = JAMDialog(mensaje = "¿Abandonas el Juego?", + funcion_ok = self.ok_intro, funcion_cancel = self.cancel_intro) + fuente, tamanio = JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio = 40) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio = 25) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio = 25) + a,b,c = JAMG.get_estilo_papel_quemado() + dialog.set_colors_dialog(base = c, bordes = c) + dialog.set_colors_buttons(colorbas = a, colorbor = b, colorcara = c) + self.estado = "Dialog" + dialog.draw(self.ventana) + pygame.display.update() + while self.estado == "Dialog": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + dialog.clear(self.ventana, self.fondo) + dialog.update() + pygame.event.clear() + dialog.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def ok_intro(self, button): + return self.emit_volver() + def cancel_intro(self, button): + self.estado = "Intro" + +class ButtonsMenu(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + imagen = G.get_Flecha() + salir = JAMButton("",None) + salir.set_imagen(origen = imagen, tamanio = (100,55)) + salir.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + salir.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + salir.set_posicion(punto = (10,10)) + salir.connect(callback = main.run_dialog_intro, sonido_select = None) + self.add(salir) + + imagen = main.usuario['personaje'] + user = JAMButton(main.usuario['nombre'],None) + user.set_imagen(origen = imagen, tamanio = (60,60)) + user.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + user.set_tamanios(tamanio = (80,80), grosorbor = 1, detalle = 1, espesor = 1) + ww, hh = user.get_tamanio() + w,h = G.RESOLUCION + user.set_posicion(punto = (w - ww - 10,10)) + user.connect(callback = None, sonido_select = None) + self.add(user) + + if main.grupo == "grupo1": + grupo = JAMButton('', None) + grupo.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img1.png") + grupo.set_imagen(origen = imagen) + grupo.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (255,255,255,255)) + grupo.connect(callback = None, sonido_select = None) + self.add(grupo) + + uno = JAMButton('T0101', None) + uno.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img1.png") + #uno.set_imagen(origen = imagen) + uno.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + uno.connect(callback = main.run_game11, sonido_select = None) + self.add(uno) + + dos = JAMButton('T0102', None) + dos.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img2.png") + #dos.set_imagen(origen = imagen) + dos.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + dos.connect(callback = main.run_game12, sonido_select = None) + self.add(dos) + + tres = JAMButton('', None) + tres.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img3.png") + #tres.set_imagen(origen = imagen) + tres.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + tres.connect(callback = None, sonido_select = None) + self.add(tres) + + cuatro = JAMButton('', None) + cuatro.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img4.png") + #cuatro.set_imagen(origen = imagen) + cuatro.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + cuatro.connect(callback = None, sonido_select = None) + self.add(cuatro) + + if main.grupo == "grupo2": + grupo = JAMButton('', None) + grupo.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img2.png") + grupo.set_imagen(origen = imagen) + grupo.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (255,255,255,255)) + grupo.connect(callback = None, sonido_select = None) + self.add(grupo) + + uno = JAMButton('T0201', None) + uno.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img1.png") + #uno.set_imagen(origen = imagen) + uno.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + uno.connect(callback = main.run_game21, sonido_select = None) + self.add(uno) + + dos = JAMButton('T0202', None) + dos.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img2.png") + #dos.set_imagen(origen = imagen) + dos.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + dos.connect(callback = main.run_game22, sonido_select = None) + self.add(dos) + + tres = JAMButton('', None) + tres.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img3.png") + #tres.set_imagen(origen = imagen) + tres.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + tres.connect(callback = None, sonido_select = None) + self.add(tres) + + cuatro = JAMButton('', None) + cuatro.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img4.png") + #cuatro.set_imagen(origen = imagen) + cuatro.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + cuatro.connect(callback = None, sonido_select = None) + self.add(cuatro) + + if main.grupo == "grupo3": + grupo = JAMButton('', None) + grupo.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img3.png") + grupo.set_imagen(origen = imagen) + grupo.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (255,255,255,255)) + grupo.connect(callback = None, sonido_select = None) + self.add(grupo) + + uno = JAMButton('T0301', None) + uno.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img1.png") + #uno.set_imagen(origen = imagen) + uno.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + uno.connect(callback = main.run_game31, sonido_select = None) + self.add(uno) + + dos = JAMButton('T0302', None) + dos.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img2.png") + #dos.set_imagen(origen = imagen) + dos.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + dos.connect(callback = main.run_game32, sonido_select = None) + self.add(dos) + + tres = JAMButton('T0303', None) + tres.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img3.png") + #tres.set_imagen(origen = imagen) + tres.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + tres.connect(callback = main.run_game33, sonido_select = None) + self.add(tres) + + cuatro = JAMButton('', None) + cuatro.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img4.png") + #cuatro.set_imagen(origen = imagen) + cuatro.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + cuatro.connect(callback = None, sonido_select = None) + self.add(cuatro) + + if main.grupo == "grupo4": + grupo = JAMButton('', None) + grupo.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img4.png") + grupo.set_imagen(origen = imagen) + grupo.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (255,255,255,255)) + grupo.connect(callback = None, sonido_select = None) + self.add(grupo) + + uno = JAMButton('T0401', None) + uno.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img1.png") + #uno.set_imagen(origen = imagen) + uno.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + uno.connect(callback = main.run_game41, sonido_select = None) + self.add(uno) + + dos = JAMButton('T0402', None) + dos.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img2.png") + #dos.set_imagen(origen = imagen) + dos.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + dos.connect(callback = main.run_game42, sonido_select = None) + self.add(dos) + + tres = JAMButton('', None) + tres.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img3.png") + #tres.set_imagen(origen = imagen) + tres.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + tres.connect(callback = None, sonido_select = None) + self.add(tres) + + cuatro = JAMButton('', None) + cuatro.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img4.png") + #cuatro.set_imagen(origen = imagen) + cuatro.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + cuatro.connect(callback = None, sonido_select = None) + self.add(cuatro) + + if main.grupo == "grupo5": + grupo = JAMButton('', None) + grupo.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img5.png") + grupo.set_imagen(origen = imagen) + grupo.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (255,255,255,255)) + grupo.connect(callback = None, sonido_select = None) + self.add(grupo) + + uno = JAMButton('T0501', None) + uno.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img1.png") + #uno.set_imagen(origen = imagen) + uno.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + uno.connect(callback = main.run_game51, sonido_select = None) + self.add(uno) + + dos = JAMButton('', None) + dos.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img2.png") + #dos.set_imagen(origen = imagen) + dos.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + dos.connect(callback = None, sonido_select = None) + self.add(dos) + + tres = JAMButton('', None) + tres.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img3.png") + #tres.set_imagen(origen = imagen) + tres.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + tres.connect(callback = None, sonido_select = None) + self.add(tres) + + cuatro = JAMButton('', None) + cuatro.set_tamanios(tamanio = (264,264), grosorbor = 1, detalle = 1, espesor = 1) + #imagen = os.path.join(G.IMAGENES, "Menu", "img4.png") + #cuatro.set_imagen(origen = imagen) + cuatro.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + cuatro.connect(callback = None, sonido_select = None) + self.add(cuatro) + + sep = 50 + w,h = G.RESOLUCION + a,b = salir.get_posicion() + c, d = salir.get_tamanio() + grupo.set_posicion( (a,b+d+sep ) ) + ww, hh = uno.get_tamanio() + uno.set_posicion( (w/2-ww/2, b+d+sep) ) + x, y = uno.get_posicion() + tres.set_posicion( (x, y + hh + sep) ) + dos.set_posicion( (x + ww + sep, y) ) + x, y = dos.get_posicion() + cuatro.set_posicion( (x, y + hh + sep) ) + diff --git a/Imagenes/Login/down.png b/Imagenes/Login/down.png new file mode 100644 index 0000000..96dc41e --- /dev/null +++ b/Imagenes/Login/down.png Binary files differ diff --git a/Imagenes/Login/fondo.jpg b/Imagenes/Login/fondo.jpg new file mode 100644 index 0000000..cd2ac78 --- /dev/null +++ b/Imagenes/Login/fondo.jpg Binary files differ diff --git a/Imagenes/Login/fondo_selecciona.png b/Imagenes/Login/fondo_selecciona.png new file mode 100644 index 0000000..cf32af6 --- /dev/null +++ b/Imagenes/Login/fondo_selecciona.png Binary files differ diff --git a/Imagenes/Login/jacinto.png b/Imagenes/Login/jacinto.png new file mode 100644 index 0000000..803ddf7 --- /dev/null +++ b/Imagenes/Login/jacinto.png Binary files differ diff --git a/Imagenes/Login/jose.png b/Imagenes/Login/jose.png new file mode 100644 index 0000000..e3ede21 --- /dev/null +++ b/Imagenes/Login/jose.png Binary files differ diff --git a/Imagenes/Login/natalia.png b/Imagenes/Login/natalia.png new file mode 100644 index 0000000..a8dd95a --- /dev/null +++ b/Imagenes/Login/natalia.png Binary files differ diff --git a/Imagenes/Login/up.png b/Imagenes/Login/up.png new file mode 100644 index 0000000..b8740e2 --- /dev/null +++ b/Imagenes/Login/up.png Binary files differ diff --git a/Imagenes/Menu/img1.png b/Imagenes/Menu/img1.png new file mode 100644 index 0000000..846438e --- /dev/null +++ b/Imagenes/Menu/img1.png Binary files differ diff --git a/Imagenes/Menu/img2.png b/Imagenes/Menu/img2.png new file mode 100644 index 0000000..91577d6 --- /dev/null +++ b/Imagenes/Menu/img2.png Binary files differ diff --git a/Imagenes/Menu/img3.png b/Imagenes/Menu/img3.png new file mode 100644 index 0000000..7ab3ee3 --- /dev/null +++ b/Imagenes/Menu/img3.png Binary files differ diff --git a/Imagenes/Menu/img4.png b/Imagenes/Menu/img4.png new file mode 100644 index 0000000..6b04ca4 --- /dev/null +++ b/Imagenes/Menu/img4.png Binary files differ diff --git a/Imagenes/Menu/img5.png b/Imagenes/Menu/img5.png new file mode 100644 index 0000000..d1844db --- /dev/null +++ b/Imagenes/Menu/img5.png Binary files differ diff --git a/Imagenes/back.png b/Imagenes/back.png new file mode 100644 index 0000000..7635f6b --- /dev/null +++ b/Imagenes/back.png Binary files differ diff --git a/Imagenes/enter.png b/Imagenes/enter.png new file mode 100644 index 0000000..dad24f6 --- /dev/null +++ b/Imagenes/enter.png Binary files differ diff --git a/Imagenes/fondo1.jpg b/Imagenes/fondo1.jpg deleted file mode 100644 index a05388f..0000000 --- a/Imagenes/fondo1.jpg +++ /dev/null Binary files differ diff --git a/Imagenes/fondo1.png b/Imagenes/fondo1.png new file mode 100644 index 0000000..810620b --- /dev/null +++ b/Imagenes/fondo1.png Binary files differ diff --git a/Imagenes/icono_teclado.jpg b/Imagenes/icono_teclado.jpg new file mode 100644 index 0000000..e92aefa --- /dev/null +++ b/Imagenes/icono_teclado.jpg Binary files differ diff --git a/Login.py b/Login.py new file mode 100644 index 0000000..7e40567 --- /dev/null +++ b/Login.py @@ -0,0 +1,282 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import pygame +import os +import gc +import sys +import gtk +import gobject + +from pygame.locals import * +import Globals as G +gc.enable() +import BiblioJAM +from BiblioJAM.JAMButton import JAMButton +from BiblioJAM.JAMLabel import JAMLabel +import BiblioJAM.JAMGlobals as JAMG + +class Login(gtk.Widget): + __gsignals__ = {"run":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, []), + "crear_usuario":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, []), + "load_usuario":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))} + def __init__(self): + gtk.Widget.__init__(self) + self.ventana = None + self.estado = False + self.fondo = None + self.reloj = None + self.selector = None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" + + def run(self): + self.ventana.blit(self.fondo, (0,0)) + self.selector.draw(self.ventana) + pygame.display.update() + while self.estado == "Intro": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + self.selector.clear(self.ventana, self.fondo) + self.selector.update() + self.handle_event_Intro() + pygame.event.clear() + self.selector.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def run_game(self, button): + self.estado = None + self.emit("run") + + def crear_usuario(self, button): + self.estado = None + self.emit("crear_usuario") + + def emit_load_usuario(self, usuario): + self.estado = None + self.emit("load_usuario", usuario) + + def handle_event_Intro(self): + for event in pygame.event.get(pygame.KEYDOWN): + tecla = event.key + if tecla == pygame.K_ESCAPE: + return self.run_dialog_intro(None) + + def load(self): + pygame.display.set_mode( (0,0), pygame.DOUBLEBUF | pygame.FULLSCREEN, 0) + A, B = G.RESOLUCION + self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) + self.ventana_real = pygame.display.get_surface() + C = pygame.display.Info().current_w + D = pygame.display.Info().current_h + self.resolucionreal = (C,D) + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) + pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) + pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) + pygame.mouse.set_visible(True) + imagen = os.path.join(G.IMAGENES, "Login", "fondo.jpg") + self.fondo = pygame.transform.scale(pygame.image.load(imagen), G.RESOLUCION) + self.reloj = pygame.time.Clock() + self.selector = Selector(self) + self.selector.center(self.fondo.get_size()) + + def run_dialog_intro(self, button): + from BiblioJAM.JAMDialog import JAMDialog + dialog = JAMDialog(mensaje = "¿Abandonas el Juego?", + funcion_ok = self.ok_intro, funcion_cancel = self.cancel_intro) + fuente, tamanio = JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio = 40) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio = 25) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio = 25) + a,b,c = JAMG.get_estilo_papel_quemado() + dialog.set_colors_dialog(base = c, bordes = c) + dialog.set_colors_buttons(colorbas = a, colorbor = b, colorcara = c) + self.estado = "Dialog" + dialog.draw(self.ventana) + pygame.display.update() + while self.estado == "Dialog": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + dialog.clear(self.ventana, self.fondo) + dialog.update() + pygame.event.clear() + dialog.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def ok_intro(self, button): + return self.salir() + def cancel_intro(self, button): + self.estado = "Intro" + def salir(self): + pygame.quit() + sys.exit() + +class Selector(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + fuente, tamanio= JAMG.get_Font_fawn() + self.main = main + self.posiciones_usuarios = (0,0) + imagen = os.path.join(G.IMAGENES, "Login", "fondo_selecciona.png") + imagen = pygame.transform.scale(pygame.image.load(imagen), (427,573)) + self.fondo = pygame.sprite.Sprite() + self.fondo.image = (imagen) + self.fondo.rect = self.fondo.image.get_rect() + self.add(self.fondo) + + self.label = JAMLabel("Selecciona tu Usuario") + self.label.set_font_from_file(fuente, tamanio = 40) + self.label.set_text(color = (255,255,255,255)) + self.add(self.label) + + imagen = G.get_Flecha() + salir = JAMButton("",None) + salir.set_imagen(origen = imagen, tamanio = (100,55)) + salir.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + salir.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + salir.set_posicion(punto = (10,10)) + salir.connect(callback = main.run_dialog_intro) + self.add(salir) + + self.upper = JAMButton("",None) + imagen = os.path.join(G.IMAGENES, "Login", "up.png")#"selecciona_arriba.png") + self.upper.set_tamanios(tamanio = (376, 30), grosorbor=1, detalle=1, espesor=1) + self.upper.set_imagen(origen = imagen, tamanio = (376, 30)) + self.upper.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + self.upper.connect(callback = self.up_user, sonido_select = None) + self.add(self.upper) + + self.down = JAMButton("",None) + imagen = os.path.join(G.IMAGENES, "Login", "down.png") + self.down.set_tamanios(tamanio = (376, 30), grosorbor=1, detalle=1, espesor=1) + self.down.set_imagen(origen = imagen, tamanio = (376, 30)) + #imagen = os.path.join(G.IMAGENES, "Login", "selecciona_abajo.png") + #self.down.set_tamanios(grosorbor=1, detalle=1, espesor=1) + self.down.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + self.down.set_imagen(origen = imagen) + self.down.connect(callback = self.down_user, sonido_select = None) + self.add(self.down) + + usuarios = G.get_users() + self.usuarios = [] + for user in usuarios: + usuario = Usuario(user) + usuario.connect(callback = self.emit_load_usuario, sonido_select = None) + self.usuarios.append(usuario) + + self.usuariosenmenu = None + if len(self.usuarios) <= 3: + self.usuariosenmenu = self.usuarios + else: + self.usuariosenmenu = self.usuarios[:3] + if self.usuariosenmenu: self.add(self.usuariosenmenu) + + self.crear = JAMButton("Crear Nuevo",None) + self.crear.set_tamanios(grosorbor = 1, detalle = 1, espesor = 1) + self.crear.set_font_from_file(fuente, tamanio = 25) + self.crear.connect(callback = main.crear_usuario, sonido_select = None) + self.add(self.crear) + + def up_user(self, button): + if len(self.usuarios) <= 3: + return + else: + indice = self.usuarios.index(self.usuariosenmenu[0]) + indice -= 1 + usuarios = [self.usuarios[indice], self.usuariosenmenu[0], self.usuariosenmenu[1]] + self.remove(self.usuariosenmenu) + self.usuariosenmenu = usuarios + self.set_posiciones_usuarios() + self.add(self.usuariosenmenu) + + def down_user(self, button): + if len(self.usuarios) <= 3: + return + else: + indice = self.usuarios.index(self.usuariosenmenu[-1]) + if indice == len(self.usuarios)-1: + indice = 0 + else: + indice += 1 + usuarios = [self.usuariosenmenu[1], self.usuariosenmenu[2], self.usuarios[indice]] + self.remove(self.usuariosenmenu) + self.usuariosenmenu = usuarios + self.set_posiciones_usuarios() + self.add(self.usuariosenmenu) + + def center(self, fondo_size): + sep = 10 + + a,b = self.label.get_tamanio() + self.label.set_posicion( (fondo_size[0]/2-a/2, sep*2) ) + x,y, fondow, fondoh = self.fondo.rect + ww,hh = fondo_size + x,y = (ww/2-fondow/2,hh/2-fondoh/2) + self.fondo.rect.x, self.fondo.rect.y = (x,y) + + w, h = self.upper.get_tamanio() + posx, posy = (x+(fondow/2-w/2), y+sep) + self.upper.set_posicion( (posx, posy) ) + + w, h = self.down.get_tamanio() + posx, posy = (x+(fondow/2-w/2), y+fondoh-h-sep) + self.down.set_posicion( (posx, posy) ) + + # usuarios + x,y = self.upper.get_posicion() + w,h = self.upper.get_tamanio() + xx,yy = self.down.get_posicion() + espacio = (yy-sep) - (y+h+sep) + altura = espacio/3 + + posy = y+h+sep + self.posiciones_usuarios = (x, posy) + for user in self.usuarios: + user.set_tamanios(tamanio = (w, altura), grosorbor = 1, detalle = 1, espesor = 1) + user.set_posicion( (x, posy) ) + posy += altura + + #self.crear.set_tamanios(tamanio=(w,h*2), grosorbor=1, detalle=1, espesor=1) + self.crear.set_tamanios(tamanio=(w,h), grosorbor=1, detalle=1, espesor=1) + x,y,ww,h = self.fondo.rect + self.crear.set_posicion( (fondo_size[0]/2-w/2, y+h+sep*2 ) ) + + def emit_load_usuario(self, widget): + self.main.emit_load_usuario(widget.usuario) + + def set_posiciones_usuarios(self): + x, posy = self.posiciones_usuarios + for user in self.usuariosenmenu: + user.set_posicion( (x, posy) ) + posy += user.get_tamanio()[1] + +class Usuario(JAMButton): + def __init__(self, usuario): + JAMButton.__init__(self, '', None) + fuente, tamanio= JAMG.get_Font_fawn() + self.usuario = usuario # diccionario cargado desde archivo shelve. + imagen = self.usuario['personaje'] + self.set_imagen(origen = imagen) + self.set_alineacion_label("izquierda") + self.set_font_from_file(fuente, tamanio = 25) + self.set_text(texto = self.usuario['nombre']) + self.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + + diff --git a/Main.py b/Main.py index ca5b677..4947a15 100644 --- a/Main.py +++ b/Main.py @@ -6,49 +6,36 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk -from pygame.locals import * +import pygame +import gc +import sys +import gtk +import gobject +from pygame.locals import * import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton import BiblioJAM.JAMGlobals as JAMG -from Menu import Menu -class Main(): +class Main(gtk.Widget): + __gsignals__ = {"run":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [])} def __init__(self): - # Variables para JAMatrix - self.ventana= None - self.name= "Derecho a Transitar" - self.estado= False - - # Variables del Juego - self.fondo= None - self.reloj= None - self.ambiente= None - - # Sprites - self.botonesmenu= None - - # Escalado - self.ventana_real= None - self.resolucionreal= None - self.VA= None - self.VH= None - - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() - - def run_menu(self): + gtk.Widget.__init__(self) + self.ventana = None + self.estado = False + self.fondo = None + self.reloj = None + self.botonesmenu = None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" + + def run(self): self.ventana.blit(self.fondo, (0,0)) self.botonesmenu.draw(self.ventana) pygame.display.update() @@ -66,66 +53,47 @@ class Main(): pygame.display.update() def run_game(self, button): - self.fondo= None - self.reloj= None - #self.ambiente= None - for boton in self.botonesmenu: - boton.kill() - self.botonesmenu= None - pygame.time.wait(5) - return Menu() - - def switch(self): - if self.estado== "Intro": - self.set_event_intro() - return self.run_menu() + self.estado = None + self.emit("run") - # ----------- EVENTOS en MENU --------------- def handle_event_Intro(self): for event in pygame.event.get(pygame.KEYDOWN): - tecla= event.key - if tecla== pygame.K_ESCAPE: + tecla = event.key + if tecla == pygame.K_ESCAPE: return self.run_dialog_intro(None) - # ----------- SETEOS ------------- - def preset(self): + def load(self): pygame.display.set_mode( (0,0), pygame.DOUBLEBUF | pygame.FULLSCREEN, 0) - A, B= G.RESOLUCION + A, B = G.RESOLUCION self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) - self.ventana_real= pygame.display.get_surface() - C= pygame.display.Info().current_w - D= pygame.display.Info().current_h - self.resolucionreal= (C,D) - self.VA= float(C)/float(A) - self.VH= float(D)/float(B) - - def load(self): - self.fondo= G.get_Fondo_Inicial() - self.ambiente= G.get_ambiente() - self.botonesmenu= ButtonsMenu(self) - self.reloj = pygame.time.Clock() - #pygame.mixer.music.play(-1) - self.estado= True - - def set_event_intro(self): + self.ventana_real = pygame.display.get_surface() + C = pygame.display.Info().current_w + D = pygame.display.Info().current_h + self.resolucionreal = (C,D) + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT]) pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) pygame.mouse.set_visible(True) + self.fondo = G.get_Fondo_Inicial() + self.botonesmenu = ButtonsMenu(self) + self.reloj = pygame.time.Clock() def run_dialog_intro(self, button): from BiblioJAM.JAMDialog import JAMDialog - dialog= JAMDialog(mensaje="¿Abandonas el Juego?", funcion_ok=self.ok_intro, funcion_cancel=self.cancel_intro) - fuente, tamanio= JAMG.get_Font_fawn() - dialog.set_font_from_file(fuente, tamanio= 40) - dialog.boton_aceptar.set_font_from_file(fuente, tamanio= 25) - dialog.boton_cancelar.set_font_from_file(fuente, tamanio= 25) - a,b,c= JAMG.get_estilo_papel_quemado() - dialog.set_colors_dialog(base=c, bordes=c) - dialog.set_colors_buttons(colorbas=a, colorbor=b, colorcara=c) - self.estado= "Dialog" + dialog = JAMDialog(mensaje = "¿Abandonas el Juego?", + funcion_ok = self.ok_intro, funcion_cancel = self.cancel_intro) + fuente, tamanio = JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio = 40) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio = 25) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio = 25) + a,b,c = JAMG.get_estilo_papel_quemado() + dialog.set_colors_dialog(base = c, bordes = c) + dialog.set_colors_buttons(colorbas = a, colorbor = b, colorcara = c) + self.estado = "Dialog" dialog.draw(self.ventana) pygame.display.update() - while self.estado== "Dialog": + while self.estado == "Dialog": self.reloj.tick(35) while gtk.events_pending(): gtk.main_iteration(False) @@ -136,7 +104,6 @@ class Main(): dialog.draw(self.ventana) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - dialog.clear(self.ventana, self.fondo) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() @@ -144,39 +111,32 @@ class Main(): def ok_intro(self, button): return self.salir() def cancel_intro(self, button): - self.estado= "Intro" - # ----------- EVENTOS en MENU --------------- - + self.estado = "Intro" def salir(self): pygame.quit() sys.exit() -# --------- Botones en Menu (Salir y juegos) ------------------ class ButtonsMenu(pygame.sprite.OrderedUpdates): def __init__(self, main): pygame.sprite.OrderedUpdates.__init__(self) - imagen= G.get_Flecha() - - salir= JAMButton("",None) - salir.set_imagen(origen= imagen, tamanio=(100,55)) - salir.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) - salir.set_tamanios(tamanio=(0,0), grosorbor=1, detalle=1, espesor=1) - salir.set_posicion(punto= (10,10)) - salir.connect (callback= main.run_dialog_intro) + imagen = G.get_Flecha() + salir = JAMButton("",None) + salir.set_imagen(origen = imagen, tamanio = (100,55)) + salir.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + salir.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + salir.set_posicion(punto = (10,10)) + salir.connect(callback = main.run_dialog_intro) self.add(salir) - - jugar= JAMButton("",None) - jugar.set_imagen(origen= imagen, tamanio=(100,55)) - jugar.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) - jugar.set_tamanios(tamanio=(0,0), grosorbor=1, detalle=1, espesor=1) - jugar.set_posicion(punto= (1000,800)) - jugar.connect (callback= main.run_game) + jugar = JAMButton("",None) + jugar.set_imagen(origen = imagen, tamanio = (100,55)) + jugar.set_colores(colorbas = JAMG.get_negro(), colorcara=JAMG.get_negro()) + jugar.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + w,h = G.RESOLUCION + ww, hh = jugar.get_tamanio() + jugar.set_posicion(punto = (w-ww-10,h-hh-10)) + jugar.connect (callback = main.run_game) self.add(jugar) - jugar.final_select= pygame.transform.flip(jugar.final_select, True, False) - jugar.final_unselect= pygame.transform.flip(jugar.final_unselect, True, False ) + jugar.final_select = pygame.transform.flip(jugar.final_select, True, False) + jugar.final_unselect = pygame.transform.flip(jugar.final_unselect, True, False ) jugar.image = jugar.final_unselect.copy() -# --------- Botones en Menu (Salir y juegos) ------------------ -if __name__ == "__main__": - pygame.init() - Main() diff --git a/Menu.py b/Menu.py index ce16494..49e6519 100644 --- a/Menu.py +++ b/Menu.py @@ -6,48 +6,39 @@ # https://sites.google.com/site/sugaractivities/ # http://codigosdeejemplo.blogspot.com/ -import pygame, gc, sys, random, gtk, pygtk +import pygame +import os +import gc +import sys +import random +import gtk +import gobject from pygame.locals import * - import Globals as G gc.enable() - import BiblioJAM from BiblioJAM.JAMButton import JAMButton import BiblioJAM.JAMGlobals as JAMG -class Menu(): - def __init__(self): +class Menu(gtk.Widget): + __gsignals__ = {"run_grupo":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)), + "back":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [])} + def __init__(self, usuario): + gtk.Widget.__init__(self) + self.usuario = usuario self.ventana = None - self.name= "Derecho a Transitar" - self.estado= False - - # Variables del Juego - self.fondo= None - self.reloj= None - - # Sprites - self.botonesmenu= None - self.game= None - - # Escalado - self.ventana_real= None - self.resolucionreal= None - self.VA= None - self.VH= None - - self.preset() - - from BiblioJAM.JAMatrix import JAMatrix - matrix= JAMatrix(self, self.ventana_real, self.resolucionreal) - matrix.set_imagen_matrix(None) - matrix.carga_game() - - self.estado= "Intro" - self.switch() - - def run_menu(self): - ''' loop del menú. ''' + self.estado = False + self.fondo = None + self.reloj = None + self.botonesmenu = None + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" + + def run(self): self.ventana.blit(self.fondo, (0,0)) self.botonesmenu.draw(self.ventana) pygame.display.update() @@ -65,7 +56,7 @@ class Menu(): pygame.display.update() def presentacion(self, button): - presentacion= Presentacion(self) + presentacion = Presentacion(self) self.ventana.blit(self.fondo, (0,0)) presentacion.draw(self.ventana) pygame.display.update() @@ -80,8 +71,8 @@ class Menu(): presentacion.draw(self.ventana) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - - self.fondo= G.get_Fondo() + imagen = os.path.join(G.IMAGENES, "Login", "fondo.jpg") + self.fondo = pygame.transform.scale(pygame.image.load(imagen), G.RESOLUCION) self.ventana.blit(self.fondo, (0,0)) self.botonesmenu.draw(self.ventana) self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) @@ -93,161 +84,65 @@ class Menu(): self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) pygame.display.update() - def run_T0101(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0101 import FGR_T0101 - juego= FGR_T0101(self) - juego.run() - self.update() - if juego.estado: self.run_T0102(None) - - def run_T0102(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0102 import FGR_T0102 - juego= FGR_T0102(self) - juego.run() - self.update() - #if juego.estado: self.run_T0103(None) - - ''' - def run_T0103(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0103 import FGR_T0103 - return FGR_T0103(self)''' - - def run_T0201(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0201 import FGR_T0201 - juego= FGR_T0201(self) - juego.run() - self.update() - if juego.estado: self.run_T0202(None) - - def run_T0202(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0202 import FGR_T0202 - juego= FGR_T0202(self) - juego.run() - self.update() - #if juego.estado: self.run_T0102(None) + def emit_volver(self, button=None): + self.estado = None + self.emit("back") + + def run_grupo1(self, jambutton): + self.estado = None + self.emit("run_grupo", "grupo1") + def run_grupo2(self, jambutton): + self.estado = None + self.emit("run_grupo", "grupo2") + def run_grupo3(self, jambutton): + self.estado = None + self.emit("run_grupo", "grupo3") + def run_grupo4(self, jambutton): + self.estado = None + self.emit("run_grupo", "grupo4") + def run_grupo5(self, jambutton): + self.estado = None + self.emit("run_grupo", "grupo5") - def run_T0301(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0301 import FGR_T0301 - juego= FGR_T0301(self) - juego.run() - self.update() - if juego.estado: self.run_T0302(None) - - def run_T0302(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0302 import FGR_T0302 - juego= FGR_T0302(self) - juego.run() - self.update() - if juego.estado: self.run_T0303(None) - - def run_T0303(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0303 import FGR_T0303 - juego= FGR_T0303(self) - juego.run() - self.update() - #if juego.estado: self.run_T0102(None) - - def run_T0401(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0401 import FGR_T0401 - juego= FGR_T0401(self) - juego.run() - self.update() - if juego.estado: self.run_T0402(None) - - def run_T0402(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0402 import FGR_T0402 - juego= FGR_T0402(self) - juego.run() - self.update() - #if juego.estado: self.run_T0403(None) - - def run_T0501(self, jambutton): - self.ventana.blit(self.fondo, (0,0)) - self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) - pygame.display.update() - from FGR_T0501 import FGR_T0501 - juego= FGR_T0501(self) - juego.run() - self.update() - #if juego.estado: self.run_T0102(None) - - def switch(self): - if self.estado== "Intro": - self.set_event_intro() - return self.run_menu() - def handle_event_Intro(self): for event in pygame.event.get(pygame.KEYDOWN): - tecla= event.key - if tecla== pygame.K_ESCAPE: + tecla = event.key + if tecla == pygame.K_ESCAPE: pygame.event.clear() self.run_dialog_intro(None) - def preset(self): - A, B= G.RESOLUCION - self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) - self.ventana_real= pygame.display.get_surface() - C= pygame.display.Info().current_w - D= pygame.display.Info().current_h - self.resolucionreal= (C,D) - self.VA= float(C)/float(A) - self.VH= float(D)/float(B) - def load(self): - self.fondo= G.get_Fondo() - self.botonesmenu= ButtonsMenu(self) + A, B = G.RESOLUCION + self.ventana = pygame.Surface( (A, B), flags=HWSURFACE ) + self.ventana_real = pygame.display.get_surface() + C = pygame.display.Info().current_w + D = pygame.display.Info().current_h + self.resolucionreal = (C,D) + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) + imagen = os.path.join(G.IMAGENES, "Login", "fondo.jpg") + self.fondo = pygame.transform.scale(pygame.image.load(imagen), G.RESOLUCION) + self.botonesmenu = ButtonsMenu(self) self.reloj = pygame.time.Clock() - self.estado= True - - def set_event_intro(self): pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN,KEYUP, USEREVENT]) pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT]) pygame.mouse.set_visible(True) def run_dialog_intro(self, button): from BiblioJAM.JAMDialog import JAMDialog - dialog= JAMDialog(mensaje="¿Abandonas el Juego?", funcion_ok=self.ok_intro, funcion_cancel=self.cancel_intro) - fuente, tamanio= JAMG.get_Font_fawn() - dialog.set_font_from_file(fuente, tamanio= 40) - dialog.boton_aceptar.set_font_from_file(fuente, tamanio= 25) - dialog.boton_cancelar.set_font_from_file(fuente, tamanio= 25) - a,b,c= JAMG.get_estilo_papel_quemado() - dialog.set_colors_dialog(base=c, bordes=c) - dialog.set_colors_buttons(colorbas=a, colorbor=b, colorcara=c) - self.estado= "Dialog" + dialog = JAMDialog(mensaje = "¿Abandonas el Juego?", + funcion_ok = self.ok_intro, funcion_cancel = self.cancel_intro) + fuente, tamanio = JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio = 40) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio = 25) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio = 25) + a,b,c = JAMG.get_estilo_papel_quemado() + dialog.set_colors_dialog(base = c, bordes = c) + dialog.set_colors_buttons(colorbas = a, colorbor = b, colorcara = c) + self.estado = "Dialog" dialog.draw(self.ventana) pygame.display.update() - while self.estado== "Dialog": + while self.estado == "Dialog": self.reloj.tick(35) while gtk.events_pending(): gtk.main_iteration(False) @@ -264,190 +159,159 @@ class Menu(): pygame.display.update() def ok_intro(self, button): - return self.salir() + return self.emit_volver() def cancel_intro(self, button): - self.estado= "Intro" - - def salir(self): - pygame.quit() - sys.exit() + self.estado = "Intro" class ButtonsMenu(pygame.sprite.OrderedUpdates): def __init__(self, main): pygame.sprite.OrderedUpdates.__init__(self) - imagen= G.get_Flecha() - - salir= JAMButton("",None) - salir.set_imagen(origen= imagen, tamanio=(100,55)) - salir.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) - salir.set_tamanios(tamanio=(0,0), grosorbor=1, detalle=1, espesor=1) - salir.set_posicion(punto= (10,10)) - salir.connect (callback= main.run_dialog_intro) + imagen = G.get_Flecha() + salir = JAMButton("",None) + salir.set_imagen(origen = imagen, tamanio = (100,55)) + salir.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + salir.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + salir.set_posicion(punto = (10,10)) + salir.connect(callback = main.run_dialog_intro) self.add(salir) - imagen_cartel_unselect, imagen_cartel_select= G.get_Imagen_CartelMenu() - - uno= Cartel(imagen_cartel_unselect.copy(), imagen_cartel_select.copy(), "Señales de Tránsito") - uno.connect(callback= main.run_T0101) - uno.rect.x, uno.rect.y= (50, 100) + imagen = main.usuario['personaje'] + user = JAMButton(main.usuario['nombre'],None) + user.set_imagen(origen = imagen, tamanio = (60,60)) + user.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) + user.set_tamanios(tamanio = (80,80), grosorbor = 1, detalle = 1, espesor = 1) + ww, hh = user.get_tamanio() + w,h = G.RESOLUCION + user.set_posicion(punto = (w - ww - 10,10)) + user.connect(callback = None, sonido_select = None) + self.add(user) + + uno = JAMButton('', None) + uno.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img1.png") + uno.set_imagen(origen = imagen) + uno.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + uno.connect(callback = main.run_grupo1, sonido_select = None) self.add(uno) - dos= Cartel(imagen_cartel_unselect.copy(), imagen_cartel_select.copy(), "Caminando a la Escuela") - dos.connect(callback= main.run_T0201) - dos.rect.x, dos.rect.y= (200, 270) + dos = JAMButton('', None) + dos.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img2.png") + dos.set_imagen(origen = imagen) + dos.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + dos.connect(callback = main.run_grupo2, sonido_select = None) self.add(dos) - tres= Cartel(imagen_cartel_unselect.copy(), imagen_cartel_select.copy(), "Seré Conductor") - tres.connect(callback= main.run_T0301) - tres.rect.x, tres.rect.y= (380, 180) + tres = JAMButton('', None) + tres.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img3.png") + tres.set_imagen(origen = imagen) + tres.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + tres.connect(callback = main.run_grupo3, sonido_select = None) self.add(tres) - cuatro= Cartel(imagen_cartel_unselect.copy(), imagen_cartel_select.copy(), "Niñas y niños pasajeros!") - cuatro.connect(callback= main.run_T0401) - cuatro.rect.x, cuatro.rect.y= (900, 200) + cuatro = JAMButton('', None) + cuatro.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img4.png") + cuatro.set_imagen(origen = imagen) + cuatro.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + cuatro.connect(callback = main.run_grupo4, sonido_select = None) self.add(cuatro) - cinco= Cartel(imagen_cartel_unselect.copy(), imagen_cartel_select.copy(), "Paseando en Familia") - cinco.connect(callback= main.run_T0501) - cinco.rect.x, cinco.rect.y= (650, 120) + cinco = JAMButton('', None) + cinco.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "Menu", "img5.png") + cinco.set_imagen(origen = imagen) + cinco.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + cinco.connect(callback = main.run_grupo5, sonido_select = None) self.add(cinco) - presenta1, presenta2= G.get_cartel_presenta() - w,h= G.RESOLUCION - presenta= Cartel(presenta1, presenta2, "") - presenta.connect(callback= main.presentacion) - ww,hh= (presenta.rect.w, presenta.rect.h) - presenta.rect.x, presenta.rect.y= (w-ww, h-hh) + presenta = JAMButton("", None) + presenta.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen = os.path.join(G.IMAGENES, "pandilla1.png") + presenta.set_imagen(origen = imagen) + presenta.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + presenta.connect(callback = main.presentacion, sonido_select = None) self.add(presenta) -class Cartel(pygame.sprite.Sprite): - def __init__(self, imagen_cartel_unselect, imagen_cartel_select, texto): - pygame.sprite.Sprite.__init__(self) - labels= self.get_labels(texto) - self.final_unselect, self.final_select= (imagen_cartel_unselect, imagen_cartel_select) - self.bliting_labels(self.final_unselect, labels) - self.bliting_labels(self.final_select, labels) - self.image= self.final_unselect - self.rect= self.image.get_rect() - self.select= False - self.callback= False + sep = 50 + w,h = G.RESOLUCION + ww, hh = uno.get_tamanio() + uno.set_posicion( (w/2-ww/2, sep) ) - def get_labels(self, texto): - from BiblioJAM.JAMLabel import JAMLabel - labels= [] - for text in texto.split("\n"): - label= JAMLabel(text) - label.set_text(color=JAMG.get_azul1()) - fuente, tamanio= JAMG.get_Font_fawn() - label.set_font_from_file(fuente, tamanio= 30) - labels.append(label) - return labels + x, y = uno.get_posicion() + dos.set_posicion( (x + ww + sep, y + hh - sep*2) ) + tres.set_posicion( (x - ww - sep, y + hh - sep*2) ) + cuatro.set_posicion( ((w/2 - ww) - sep, y + (hh * 2) - sep) ) + cinco.set_posicion( (w/2 + sep, y + (hh * 2) - sep) ) - def bliting_labels(self, imagen, labels): - x,y,w,h= imagen.get_rect() - y+= 10 - for label in labels: - w1,h1= label.get_tamanio() - imagen.blit(label.image, (w/2-w1/2, y)) - y+= h1 - - def connect(self, callback=None): - self.callback= callback - - def update(self): - eventos_republicar= [] - eventos= pygame.event.get(pygame.MOUSEBUTTONDOWN) - for event in eventos: - posicion = event.pos - if self.rect.collidepoint(posicion): - punto= (int(posicion[0]-self.rect.x), int(posicion[1]-self.rect.y)) - color= self.image.get_at( punto ) - if color[3] != 0: - if self.callback: - pygame.event.clear() - return self.callback(self) - else: - if not event in eventos_republicar: eventos_republicar.append(event) - - eventos= pygame.event.get(pygame.MOUSEMOTION) - for event in eventos: - posicion = event.pos - if self.rect.collidepoint(posicion): - punto= (int(posicion[0]-self.rect.x), int(posicion[1]-self.rect.y)) - color= self.image.get_at( punto ) - if color[3] != 0: - if self.select == False: - self.image = self.final_select - self.select = True - else: - if self.select == True: - self.image = self.final_unselect - self.select = False - if not event in eventos_republicar: eventos_republicar.append(event) - for event in eventos_republicar: - pygame.event.post(event) + ww,hh = presenta.get_tamanio() + presenta.set_posicion( (w-ww, h-hh) ) class Presentacion(pygame.sprite.OrderedUpdates): def __init__(self, main): pygame.sprite.OrderedUpdates.__init__(self) - self.main= main - self.imagenes= G.get_Presentacion() - siguiente= None - anterior= None - salir= None - self.imagen_actual= None - self.estado= True - - fuente, tamanio= JAMG.get_Font_fawn() - w,h= G.RESOLUCION - - siguiente= JAMButton("Siguiente", None) - siguiente.set_text(color=JAMG.get_blanco()) - siguiente.set_font_from_file(fuente, tamanio= 40) - siguiente.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) - siguiente.set_tamanios(tamanio=(150,0), grosorbor=1, detalle=1, espesor=1) - ww,hh= siguiente.get_tamanio() - siguiente.set_posicion(punto= (w-ww-20,h-hh-20)) - siguiente.connect (callback= self.next) + self.main = main + self.imagenes = G.get_Presentacion() + siguiente = None + anterior = None + salir = None + self.imagen_actual = None + self.estado = True + fuente, tamanio = JAMG.get_Font_fawn() + w,h = G.RESOLUCION + siguiente = JAMButton("Siguiente", None) + siguiente.set_text(color = JAMG.get_blanco()) + siguiente.set_font_from_file(fuente, tamanio = 40) + siguiente.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + siguiente.set_tamanios(tamanio = (150,0), grosorbor = 1, detalle = 1, espesor = 1) + ww,hh = siguiente.get_tamanio() + siguiente.set_posicion(punto = (w-ww-20,h-hh-20)) + siguiente.connect(callback = self.next) self.add(siguiente) - - anterior= JAMButton("Anterior", None) - anterior.set_text(color=JAMG.get_blanco()) - anterior.set_font_from_file(fuente, tamanio= 40) - anterior.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) - anterior.set_tamanios(tamanio=(150,0), grosorbor=1, detalle=1, espesor=1) - ww,hh= anterior.get_tamanio() - anterior.set_posicion(punto= (20,h-hh-20)) - anterior.connect (callback= self.previous) + anterior = JAMButton("Anterior", None) + anterior.set_text(color = JAMG.get_blanco()) + anterior.set_font_from_file(fuente, tamanio = 40) + anterior.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + anterior.set_tamanios(tamanio = (150,0), grosorbor = 1, detalle = 1, espesor = 1) + ww,hh = anterior.get_tamanio() + anterior.set_posicion(punto = (20,h-hh-20)) + anterior.connect (callback = self.previous) self.add(anterior) - - salir= JAMButton("Salir", None) - salir.set_text(color=JAMG.get_blanco()) - salir.set_font_from_file(fuente, tamanio= 40) - salir.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) - salir.set_tamanios(tamanio=(150,0), grosorbor=1, detalle=1, espesor=1) - ww,hh= salir.get_tamanio() - salir.set_posicion(punto= (w/2-ww/2,20)) - salir.connect (callback= self.volver) + salir = JAMButton("Salir", None) + salir.set_text(color = JAMG.get_blanco()) + salir.set_font_from_file(fuente, tamanio = 40) + salir.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro()) + salir.set_tamanios(tamanio = (150,0), grosorbor = 1, detalle = 1, espesor = 1) + ww,hh = salir.get_tamanio() + salir.set_posicion(punto = (w/2-ww/2,20)) + salir.connect(callback = self.volver) self.add(salir) - - self.imagen_actual= self.imagenes[0] - self.main.fondo= self.imagen_actual + self.imagen_actual = self.imagenes[0] + self.main.fondo = self.imagen_actual def volver(self, button): for sprite in self.sprites(): sprite.kill() self.empty() - self.estado= False + self.estado = False def next(self, button): try: - indice= self.imagenes.index(self.imagen_actual) + indice = self.imagenes.index(self.imagen_actual) if indice < len(self.imagenes)-1: - self.imagen_actual= self.imagenes[indice+1] - self.main.fondo= self.imagen_actual + self.imagen_actual = self.imagenes[indice+1] + self.main.fondo = self.imagen_actual else: - self.imagen_actual= self.imagenes[0] + self.imagen_actual = self.imagenes[0] + self.main.fondo = self.imagen_actual self.main.ventana.blit(self.main.fondo, (0,0)) pygame.display.update() except: @@ -455,12 +319,13 @@ class Presentacion(pygame.sprite.OrderedUpdates): def previous(self, button): try: - indice= self.imagenes.index(self.imagen_actual) + indice = self.imagenes.index(self.imagen_actual) if indice > 1: - self.imagen_actual= self.imagenes[indice-1] - self.main.fondo= self.imagen_actual + self.imagen_actual = self.imagenes[indice-1] + self.main.fondo = self.imagen_actual else: - self.imagen_actual= self.imagenes[-1] + self.imagen_actual = self.imagenes[-1] + self.main.fondo = self.imagen_actual self.main.ventana.blit(self.main.fondo, (0,0)) pygame.display.update() except: -- cgit v0.9.1