From f0f49e4e77dd4d3d97ece8b04e88690c80224dcf Mon Sep 17 00:00:00 2001 From: flavio Date: Thu, 05 Apr 2012 23:29:36 +0000 Subject: Crucigrama --- diff --git a/Derecho_a_Transitar.py b/Derecho_a_Transitar.py index 603c8a3..2f5078a 100644 --- a/Derecho_a_Transitar.py +++ b/Derecho_a_Transitar.py @@ -236,33 +236,42 @@ class gtkplug(gtk.Plug): if game == "FGR_T0101": from FGR_T0101 import FGR_T0101 juego = FGR_T0101() - if game == "FGR_T0102": + elif game == "FGR_T0102": from FGR_T0102 import FGR_T0102 juego = FGR_T0102() - if game == "FGR_T0201": + elif game == "FGR_T0201": from FGR_T0201 import FGR_T0201 juego = FGR_T0201() - if game == "FGR_T0202": + elif game == "FGR_T0202": from FGR_T0202 import FGR_T0202 juego = FGR_T0202() - if game == "FGR_T0301": + elif game == "FGR_T0301": from FGR_T0301 import FGR_T0301 juego = FGR_T0301() - if game == "FGR_T0302": + elif game == "FGR_T0302": from FGR_T0302 import FGR_T0302 juego = FGR_T0302() - if game == "FGR_T0303": + elif game == "FGR_T0303": from FGR_T0303 import FGR_T0303 juego = FGR_T0303() - if game == "FGR_T0401": + elif game == "FGR_T0401": from FGR_T0401 import FGR_T0401 juego = FGR_T0401() - if game == "FGR_T0402": + elif game == "FGR_T0402": from FGR_T0402 import FGR_T0402 juego = FGR_T0402() - if game == "FGR_T0501": + elif game == "FGR_T0501": from FGR_T0501 import FGR_T0501 juego = FGR_T0501() + elif game == "FGR_T0502": + from FGR_T0502 import FGR_T0502 + juego = FGR_T0502() + elif game == "FGR_T0503": + from FGR_T0503 import FGR_T0503 + juego = FGR_T0503() + elif game == "FGR_T0504": + from FGR_T0504 import FGR_T0504 + juego = FGR_T0504() juego.connect("run_grupo", self.run_grupo) juego.run() return False diff --git a/FGR_T0101.py b/FGR_T0101.py index 44d5e95..bfb6ae3 100644 --- a/FGR_T0101.py +++ b/FGR_T0101.py @@ -778,7 +778,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0102.py b/FGR_T0102.py index c26f2e8..3b356e9 100644 --- a/FGR_T0102.py +++ b/FGR_T0102.py @@ -790,7 +790,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-5,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0201.py b/FGR_T0201.py index 8c7bd18..0498843 100644 --- a/FGR_T0201.py +++ b/FGR_T0201.py @@ -811,7 +811,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0202.py b/FGR_T0202.py index 5872cda..a0b1a1e 100644 --- a/FGR_T0202.py +++ b/FGR_T0202.py @@ -701,7 +701,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0301.py b/FGR_T0301.py index b0de625..ba20d7a 100644 --- a/FGR_T0301.py +++ b/FGR_T0301.py @@ -819,7 +819,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0302.py b/FGR_T0302.py index e6887ec..7aaf0f7 100644 --- a/FGR_T0302.py +++ b/FGR_T0302.py @@ -769,7 +769,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0303.py b/FGR_T0303.py index 2f80abb..da6b598 100644 --- a/FGR_T0303.py +++ b/FGR_T0303.py @@ -716,7 +716,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0401.py b/FGR_T0401.py index f62b330..b8e6f78 100644 --- a/FGR_T0401.py +++ b/FGR_T0401.py @@ -755,7 +755,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0402.py b/FGR_T0402.py index 349ba01..7b958e2 100644 --- a/FGR_T0402.py +++ b/FGR_T0402.py @@ -718,7 +718,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50, h-hh-50)) + jugar.set_posicion(punto= (w-ww-10, h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0501.py b/FGR_T0501.py index 1abacaf..5fdc7ef 100644 --- a/FGR_T0501.py +++ b/FGR_T0501.py @@ -755,7 +755,7 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): jugar.set_tamanios(tamanio=(200,0), grosorbor=1, detalle=1, espesor=1) w,h= G.RESOLUCION ww,hh= jugar.get_tamanio() - jugar.set_posicion(punto= (w-ww-50,h-hh-50)) + jugar.set_posicion(punto= (w-ww-10,h-hh-10)) jugar.connect (callback= self.run_Instruc) self.add(jugar) diff --git a/FGR_T0502.py b/FGR_T0502.py new file mode 100644 index 0000000..5e39ca8 --- /dev/null +++ b/FGR_T0502.py @@ -0,0 +1,772 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# FGR_T0502.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 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_T0502(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 = "Memory" + 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.senial1_select = None + self.senial2_select = None + + # sonidos + 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): + 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)) + self.textos.draw(self.ventana) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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.textos.clear(self.ventana, self.fondo) + self.botonesmenu.clear(self.ventana, self.fondo) + self.botonesmenu.update() + self.handle_event_Intro() + pygame.event.clear() + self.textos.draw(self.ventana) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def run_juego(self): + pygame.mixer.music.pause() + self.ventana.blit(self.fondo, (0,0)) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + while self.estado == "Game": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + self.seniales.clear(self.ventana, self.fondo) + self.controles.clear(self.ventana, self.fondo) + self.seniales.update() + self.controles.update() + self.handle_event_Game() + pygame.event.clear() + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def reset(self): + self.puntos = 0 + self.controles.init() + self.seniales.init() + + def toma(self, senial): + if not self.senial1_select: + self.sound_select.play() + self.senial1_select = senial + self.senial1_select.seleccionar() + self.verificar() + def deja(self, senial): + if not self.senial2_select: + self.sound_select.play() + self.senial2_select = senial + self.senial2_select.seleccionar() + self.verificar() + def verificar(self): + if self.senial1_select and self.senial2_select: + self.ventana.blit(self.fondo, (0,0)) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + self.ventana.blit(self.fondo, (0,0)) + if self.senial1_select.nombre == self.senial2_select.nombre: + self.sonido_exito.play() + self.puntos += 10 + self.controles.actualiza_puntos() + self.senial1_select.kill() + self.senial2_select.kill() + self.senial1_select = None + self.senial2_select = None + if not self.seniales.sprites(): + return self.victory() + else: + self.sonido_error.play() + self.controles.cronometro.cron.segundos_transcurridos += 5 + self.senial1_select.reset() + self.senial2_select.reset() + self.senial1_select = None + self.senial2_select = None + + def victory(self): + pygame.mixer.music.unpause() + self.controles.stop() + self.puntos+= (10*self.controles.cronometro.get_tiempo_restante()) + self.controles.actualiza_puntos() + self.ventana.blit(self.fondo, (0,0)) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + text1= "Muy bien! Ahora formas parte de la pandilla." + text2= "Natalia, José y Jacinto están muy contentos, sigue con ellos adelante." + mensaje= Mensaje(self, "Victory", text1, text2) + self.fondo= self.fondo1 + self.ventana.blit(self.fondo, (0,0)) + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + while mensaje.estado == True: + self.reloj.tick(35) + mensaje.clear(self.ventana, self.fondo) + mensaje.update() + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(6000) + return self.salir(True) + + def game_over(self, jamcron): + pygame.mixer.music.unpause() + self.controles.update() + self.controles.stop() + self.controles.actualiza_puntos() + self.ventana.blit(self.fondo, (0,0)) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + text1= "Te han Faltado Unos Segundos Para Completar la Actividad." + text2= "Prueba Nuevamente." + mensaje= Mensaje(self, "End", text1, text2) + self.fondo= self.fondo1 + self.ventana.blit(self.fondo, (0,0)) + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + while mensaje.estado == True: + self.reloj.tick(35) + mensaje.clear(self.ventana, self.fondo) + mensaje.update() + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(6000) + return self.salir(False) + + # ----------- SETEOS ------------- + 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.resolucionreal = (C,D) + self.VA = float(C)/float(A) + self.VH = float(D)/float(B) + self.fondo1, self.fondo2 = G.get_Fondos_FGR_T0502() + 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.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): + for event in pygame.event.get(pygame.KEYDOWN): + tecla = event.key + if tecla == pygame.K_ESCAPE: + pygame.event.clear() + return self.run_dialog_intro(None) + + def run_Instruc(self): + self.fondo = G.get_instruc("101") + 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() + while self.estado == "Instruc": + 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() + 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 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) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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(False) + def cancel_intro(self, button): + self.estado = "Intro" + # ----------- EVENTOS en MENU --------------- + + # ----------- EVENTOS en JUEGO --------------- + def handle_event_Game(self): + for event in pygame.event.get(pygame.KEYDOWN): + tecla= event.key + if tecla== pygame.K_ESCAPE: + pygame.event.clear() + return self.run_dialog_game(None) + + def run_dialog_game(self, button): + self.controles.stop() + from BiblioJAM.JAMDialog import JAMDialog + dialog= JAMDialog(mensaje="¿Abandonas el Juego?", funcion_ok=self.ok, funcion_cancel=self.cancel) + fuente, tamanio= JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio= 30) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio= 30) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio= 30) + 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) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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() + + if self.estado== "Intro": + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + return self.run() + else: + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + self.controles.play() + + def ok(self, button): + self.estado = "Intro" + def cancel(self, button): + self.estado = "Game" + # ----------- EVENTOS en JUEGO --------------- + + def salir(self, valor = None): + self.estado = False + self.emit("run_grupo", "grupo5", self.puntos) + +# -------- CONTROLES ---------- +class Controles(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main = main + self.flecha = None + self.titulo = None + self.puntaje = None + self.cronometro = None + self.progress_reloj = None + self.sonidos_reloj = None + + self.load_sprites() + + def load_sprites(self): + imagen= G.get_Flecha() + self.flecha= JAMButton("",None) + self.flecha.set_imagen(origen= imagen, tamanio=(100,55)) + self.flecha.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) + self.flecha.set_tamanios(tamanio=(0,0), grosorbor=1, detalle=1, espesor=1) + self.flecha.set_posicion(punto= (10,10)) + self.flecha.connect (callback= self.main.run_dialog_game) + self.add(self.flecha) + + x,y= self.flecha.posicion + w,h= self.flecha.get_tamanio() + x+= w + ancho= G.RESOLUCION[0]/2 - x + cartel_titulo= pygame.sprite.Sprite() + cartel_titulo.image= G.get_Imagen_Cartel1() + cartel_titulo.image= pygame.transform.scale(cartel_titulo.image.copy(), (ancho,cartel_titulo.image.get_size()[1])) + cartel_titulo.rect= cartel_titulo.image.get_rect() + cartel_titulo.rect.x= x + cartel_titulo.rect.y= -60 + self.add(cartel_titulo) + + 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) + w,h= G.RESOLUCION + x,y= (cartel_titulo.rect.x + 50, 10) + self.titulo.set_posicion(punto= (x,y)) + self.add(self.titulo) + + self.puntaje= JAMLabel("%s" %(self.main.puntos)) + self.puntaje.set_text(color=JAMG.get_blanco()) + fuente, tamanio= JAMG.get_Font_fawn() + self.puntaje.set_font_from_file(fuente, tamanio= 40) + w,h= G.RESOLUCION + self.add(self.puntaje) + + self.sonidos_reloj= G.get_sound_clock() + + from BiblioJAM.JAMCron import JAMCron + self.cronometro= JAMCron() + x,y= (0-self.cronometro.cron.rect.w-1, 0-self.cronometro.cron.rect.h-1) + self.cronometro.cron.set_posicion(punto= (x,y)) + self.cronometro.set_callback(self.main.game_over) + self.cronometro.set_alarma(tiempo = (1,30), duracion = 3) + self.add(self.cronometro) + + self.progress_reloj= ProgressBar(self.main) + self.add(self.progress_reloj) + + def actualiza_puntos(self): + puntos= "%s" %(self.main.puntos) + self.puntaje.set_text(texto= puntos) + w,h= G.RESOLUCION + x,y= (w-self.puntaje.rect.w-20, 25) + self.puntaje.set_posicion(punto= (x,y)) + + def switching_game(self, button): + self.main.estado= "Intro" + return self.main.run() + + def init(self): + sound= self.sonidos_reloj[0] + self.cronometro.set_sound(sound) + self.cronometro.reset() + self.actualiza_puntos() + self.cronometro.play() + def stop(self): + self.cronometro.pause() + def play(self): + self.cronometro.play() + +class ProgressBar(pygame.sprite.Sprite): + def __init__(self, main): + pygame.sprite.Sprite.__init__(self) + self.main = main + self.acumula = 0 + w,h = G.RESOLUCION + self.tamanio = (w/2-10,10) + self.posicion = (w/2,10) + rect1 = JAMG.get_Rectangulo( JAMG.get_verde1(), self.tamanio) + w,y = rect1.get_size() + a = w/6*3 + rect2 = JAMG.get_Rectangulo( JAMG.get_amarillo1(), (a,self.tamanio[1])) + imagen = JAMG.pegar_imagenes_alineado_derecha(rect2, rect1) + a = w/6 + rect3 = JAMG.get_Rectangulo( JAMG.get_rojo1(), (a,self.tamanio[1])) + self.imagen_original = JAMG.pegar_imagenes_alineado_derecha(rect3, imagen) + self.image = self.imagen_original.copy() + self.rect = self.image.get_rect() + self.rect.x, self.rect.y= self.posicion + + def update(self): + tiempo = self.main.controles.cronometro.cron.segundos_final + transcurridos = self.main.controles.cronometro.get_tiempo_transcurrido() + faltan = self.main.controles.cronometro.cron.segundos_faltan + mitad = tiempo/2 + cuarto = tiempo/4 + if faltan <= mitad: + if faltan > cuarto: + if not self.main.controles.cronometro.sonido == self.main.controles.sonidos_reloj[1]: + self.main.controles.stop() + self.main.controles.cronometro.set_sound(self.main.controles.sonidos_reloj[1]) + self.main.controles.play() + elif faltan <= cuarto: + if not self.main.controles.cronometro.sonido == self.main.controles.sonidos_reloj[2]: + self.main.controles.stop() + self.main.controles.cronometro.set_sound(self.main.controles.sonidos_reloj[2]) + self.main.controles.play() + ancho, alto = self.tamanio + ind = float(float(ancho)/float(self.main.controles.cronometro.cron.segundos_final)) + ancho = float(float(ancho)- float(self.main.controles.cronometro.get_tiempo_transcurrido())*ind) + dif = float(float(self.tamanio[0]) - float(ancho)) + try: + self.image = self.imagen_original.copy().subsurface((dif,0,int(ancho), int(alto))) + except: + self.image = self.imagen_original.copy().subsurface((dif,0,0,0)) + self.rect = self.image.get_rect() + x,y = self.posicion + x += dif + self.rect.x, self.rect.y= (x,y) +# -------- CONTROLES ---------- + +# -------- SEÑALES ---------- +class Seniales(pygame.sprite.OrderedUpdates): + # Grupo de Señales. + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main = main + self.seniales1 = [] + self.seniales2 = [] + self.load_sprites() + + def load_sprites(self): + self.empty() + self.seniales1 = [] + self.seniales2 = [] + for senial in G.get_seniales_FGR_T0502(): + boton = Senial(senial) + boton.connect(callback = self.main.toma, sonido_select = None) + self.seniales1.append(boton) + self.add(boton) + for senial in G.get_seniales_FGR_T0502(): + boton = Senial(senial) + boton.connect(callback = self.main.deja, sonido_select = None) + self.seniales2.append(boton) + self.add(boton) + + def init(self): + seniales = self.seniales1 + w,h = G.RESOLUCION + sep = 30 + x, y = sep, h + contador = 0 + for z in range(len(seniales)): + contador += 1 + random.seed() + senial = random.choice(seniales) + y -= senial.get_tamanio()[1] + sep + senial.set_posicion( (x,y) ) + seniales.remove(senial) + if contador == 3: + contador = 0 + x += senial.get_tamanio()[0] + sep + y = h + seniales = self.seniales2 + contador = 0 + for z in range(len(seniales)): + contador += 1 + random.seed() + senial = random.choice(seniales) + y -= senial.get_tamanio()[1] + sep + senial.set_posicion( (x,y) ) + seniales.remove(senial) + if contador == 3: + contador = 0 + x += senial.get_tamanio()[0] + sep + y = h + +class Senial(JAMButton): + def __init__(self, senial): + JAMButton.__init__(self, '',None) + self.imagen2, self.nombre = senial + self.imagen1 = os.path.join(G.IMAGENES, "FGR_T0502", "memory_logo.jpg") + self.set_tamanios(tamanio = (175, 175), grosorbor=1, detalle=1, espesor=1) + self.reset() + + def reset(self): + self.set_imagen(origen = self.imagen1, tamanio=(175, 175)) + self.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + + def seleccionar(self): + self.set_imagen(origen = self.imagen2, tamanio=(175, 175)) + self.set_colores(colorbas = (0,153,255,255), + colorbor = (0,153,255,255), colorcara = (0,153,255,255)) +# -------- SEÑALES ---------- + +# --------- TEXTOS ---------------- +class Textos_Intro(pygame.sprite.OrderedUpdates): + def __init__(self): + pygame.sprite.OrderedUpdates.__init__(self) + self.base = None + self.labels = [] + self.gruber = None + + self.load_textos() + self.set_posicion_labels() + self.base = self.get_base() + self.gruber = self.get_gruber() + + self.add(self.base) + self.add(self.labels) + self.add(self.gruber) + + def get_gruber(self): + gruber = pygame.sprite.Sprite() + gruber.image = G.get_Imagen_Gruber1() + gruber.rect = gruber.image.get_rect() + w,h = G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def get_base(self): + w,h = self.get_dimensiones() + w += 20 + h += 20 + base = pygame.sprite.Sprite() + superficie = pygame.Surface( (w,h), flags=SRCALPHA ) + superficie.fill((0,0,0,150)) + base.image = superficie + base.rect = base.image.get_rect() + base.rect.x, base.rect.y = (G.RESOLUCION[0]/2-base.rect.w/2, self.labels[0].rect.y-10) + return base + + def load_textos(self): + textos = G.get_Textos_FGR_T0101() + for linea in textos: + label = Sprite_Texto(linea) + self.labels.append(label) + + def set_posicion_labels(self): + w,h = G.RESOLUCION + x, y = (0,h/2-30) + for label in self.labels: + x = w/2-label.rect.w/2 + label.rect.x = x + label.rect.y = y + y += label.rect.h + + def get_dimensiones(self): + w,h = (0,0) + for label in self.labels: + if label.rect.w > w: w = label.rect.w + h += label.rect.h + return (w,h) + +class Sprite_Texto(pygame.sprite.Sprite): + def __init__(self, texto): + pygame.sprite.Sprite.__init__(self) + string_to_render = "" + fuente = self.get_Font() + string_to_render = unicode( texto.decode("utf-8") ) + self.image = fuente.render(string_to_render, 1, JAMG.get_blanco()) + self.rect = self.image.get_rect() + + def get_Font(self): + fuente, tamanio = JAMG.get_Font_fawn() + return pygame.font.Font(fuente, tamanio) +# --------- TEXTOS ---------------- + +# --------- Botones en Menu (Salir y Jugar) ------------------ +class ButtonsMenu(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main = main + 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 = self.main.run_dialog_intro) + self.add(salir) + + jugar = JAMButton("Jugar",None) + jugar.set_text(color=JAMG.get_blanco()) + fuente, tamanio = JAMG.get_Font_fawn() + jugar.set_font_from_file(fuente, tamanio= 50) + jugar.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) + jugar.set_tamanios(tamanio=(200,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= self.run_Instruc) + self.add(jugar) + + def run_Instruc(self, button): + button.connect (callback= self.switching) + self.main.estado= "Instruc" + pygame.event.clear() + return self.main.run_Instruc() + + def switching(self, button): + self.main.estado= "Game" + pygame.event.clear() + return self.main.run() +# --------- Botones en Menu (Salir y Jugar) ------------------ + +# --------- Mensaje Final --------- +class Mensaje(pygame.sprite.OrderedUpdates): + def __init__(self, main, opcion, text1, text2): + pygame.sprite.OrderedUpdates.__init__(self) + self.estado= True + self.base= None + self.label1= None + self.label2= None + self.labels= [] + self.gruber= None + self.label1= Sprite_Texto(text1) + self.label2= Sprite_Texto(text2) + self.labels= [self.label1, self.label2] + self.x_final_label1= 0 + self.x_final_label2= 0 + self.init() + self.base= self.get_base() + if opcion== "Victory": + self.gruber= self.get_gruber2() + elif opcion== "End": + self.gruber= self.get_gruber3() + self.add(self.base) + self.add(self.labels) + self.add(self.gruber) + + def init(self): + w,h= G.RESOLUCION + w1,h1= (self.label1.rect.w, self.label1.rect.h) + w2,h2= (self.label2.rect.w, self.label2.rect.h) + x= 0-w + y= h/2-h2/2 + self.label2.rect.x, self.label2.rect.y= (x,y) + self.x_final_label2= w/2-w2/2 + x= w + y= self.label2.rect.y - h2 + self.label1.rect.x, self.label1.rect.y= (x,y) + self.x_final_label1= w/2-w1/2 + + def get_base(self): + w,h= self.get_dimensiones() + w+= 20 + h+= 20 + base= pygame.sprite.Sprite() + superficie = pygame.Surface( (w,h), flags=SRCALPHA ) + superficie.fill((0,0,0,150)) + base.image= superficie + base.rect= base.image.get_rect() + base.rect.x, base.rect.y= (G.RESOLUCION[0]/2-base.rect.w/2, self.labels[0].rect.y-10) + return base + + def get_dimensiones(self): + w,h= (0,0) + for label in self.labels: + if label.rect.w > w: w= label.rect.w + h+= label.rect.h + return (w,h) + + def get_gruber2(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber2() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def get_gruber3(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber3() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def update(self): + x,y,w,h= self.label2.rect + final= True + if x < self.x_final_label2: + x+= 60 + self.label2.rect.x, self.label2.rect.y= (x,y) + final= False + else: + self.label2.rect.x= self.x_final_label2 + x,y,w,h= self.label1.rect + if x > self.x_final_label1: + x-= 60 + self.label1.rect.x, self.label1.rect.y= (x,y) + final= False + else: + self.label1.rect.x= self.x_final_label1 + if final== True: + self.label2.rect.x= self.x_final_label2 + self.label1.rect.x= self.x_final_label1 + self.estado= False + diff --git a/FGR_T0503.py b/FGR_T0503.py new file mode 100644 index 0000000..a8488fd --- /dev/null +++ b/FGR_T0503.py @@ -0,0 +1,945 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# FGR_T0503.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 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_T0503(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 + 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 + + # sonidos + 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): + 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)) + self.textos.draw(self.ventana) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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.textos.clear(self.ventana, self.fondo) + self.botonesmenu.clear(self.ventana, self.fondo) + self.botonesmenu.update() + self.handle_event_Intro() + pygame.event.clear() + self.textos.draw(self.ventana) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def run_juego(self): + pygame.mixer.music.pause() + self.ventana.blit(self.fondo, (0,0)) + #self.carteles.draw(self.ventana) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + while self.estado == "Game": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + #self.carteles.clear(self.ventana, self.fondo) + self.seniales.clear(self.ventana, self.fondo) + self.controles.clear(self.ventana, self.fondo) + self.seniales.update() + self.controles.update() + self.handle_event_Game() + pygame.event.clear() + #self.carteles.draw(self.ventana) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def reset(self): + self.puntos= 0 + self.controles.init() + #self.seniales.init() + + def toma(self, boton): + if boton.ubicado: return + self.sound_select.play() + self.senial_select = boton + self.seniales.seleccionar(self.senial_select) + + def deja(self, flecha): + if not self.senial_select: return + if self.senial_select.get_text() == flecha.nombre: + self.sonido_exito.play() + self.puntos += 10 + self.controles.actualiza_puntos() + self.senial_select.marcar() + self.senial_select = None + self.seniales.marcar(flecha) + self.verificar() + else: + self.sonido_error.play() + self.controles.cronometro.cron.segundos_transcurridos += 5 + + def verificar(self): + faltan = False + for boton in self.seniales.botones: + if not boton.ubicado: + faltan = True + break + if not faltan: + self.ventana.blit(self.fondo, (0,0)) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + self.ventana.blit(self.fondo, (0,0)) + return self.victory() + + def victory(self): + pygame.mixer.music.unpause() + self.controles.stop() + self.puntos+= (10*self.controles.cronometro.get_tiempo_restante()) + self.controles.actualiza_puntos() + self.ventana.blit(self.fondo, (0,0)) + #self.carteles.draw(self.ventana) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + text1= "Muy bien, ahora saben cuáles son las partes más importantes de una bici y " + text2= "gracias a eso consiguieron 1 sticker más. Sigan adelante!" + mensaje= Mensaje(self, "Victory", text1, text2) + self.fondo= self.fondo1 + self.ventana.blit(self.fondo, (0,0)) + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + while mensaje.estado == True: + self.reloj.tick(35) + mensaje.clear(self.ventana, self.fondo) + mensaje.update() + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(6000) + return self.salir(True) + + def game_over(self, jamcron): + pygame.mixer.music.unpause() + self.controles.update() # para actualizar imagen de progressbar del reloj + self.controles.stop() + self.controles.actualiza_puntos() + self.ventana.blit(self.fondo, (0,0)) + #self.carteles.draw(self.ventana) + self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + text1= "Te han Faltado Unos Segundos Para Completar la Actividad." + text2= "Prueba Nuevamente." + mensaje= Mensaje(self, "End", text1, text2) + self.fondo= self.fondo1 + self.ventana.blit(self.fondo, (0,0)) + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + while mensaje.estado == True: + self.reloj.tick(35) + mensaje.clear(self.ventana, self.fondo) + mensaje.update() + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(6000) + return self.salir(False) + + # ----------- SETEOS ------------- + 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.resolucionreal= (C,D) + self.VA= float(C)/float(A) + self.VH= float(D)/float(B) + self.fondo1, self.fondo2= G.get_Fondos_FGR_T0503() + 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): + for event in pygame.event.get(pygame.KEYDOWN): + tecla= event.key + if tecla== pygame.K_ESCAPE: + pygame.event.clear() + return self.run_dialog_intro(None) + + def run_Instruc(self): + self.fondo= G.get_instruc("301") + 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() + while self.estado== "Instruc": + 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() + 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 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) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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(False) + def cancel_intro(self, button): + self.estado= "Intro" + # ----------- EVENTOS en MENU --------------- + + # ----------- EVENTOS en JUEGO --------------- + def handle_event_Game(self): + for event in pygame.event.get(pygame.KEYDOWN): + tecla= event.key + if tecla== pygame.K_ESCAPE: + pygame.event.clear() + return self.run_dialog_game(None) + + def run_dialog_game(self, button): + self.controles.stop() + from BiblioJAM.JAMDialog import JAMDialog + dialog= JAMDialog(mensaje="¿Abandonas el Juego?", funcion_ok=self.ok, funcion_cancel=self.cancel) + fuente, tamanio= JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio= 30) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio= 30) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio= 30) + 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) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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() + if self.estado== "Intro": + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + return self.run() + else: + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + self.controles.play() + + def ok(self, button): + self.estado= "Intro" + def cancel(self, button): + self.estado= "Game" + # ----------- EVENTOS en JUEGO --------------- + + def salir(self, valor= None): + self.estado = False + self.emit("run_grupo", "grupo5", self.puntos) + +# -------- CONTROLES ---------- +class Controles(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main= main + self.flecha= None + self.titulo= None + self.puntaje= None + self.cronometro= None + self.progress_reloj= None + self.sonidos_reloj= None + self.load_sprites() + + def load_sprites(self): + imagen= G.get_Flecha() + self.flecha= JAMButton("",None) + self.flecha.set_imagen(origen= imagen, tamanio=(100,55)) + self.flecha.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) + self.flecha.set_tamanios(tamanio=(0,0), grosorbor=1, detalle=1, espesor=1) + self.flecha.set_posicion(punto= (10,10)) + self.flecha.connect (callback= self.main.run_dialog_game) + self.add(self.flecha) + + x,y= self.flecha.posicion + w,h= self.flecha.get_tamanio() + x+= w + ancho= G.RESOLUCION[0]/2 - x + cartel_titulo= pygame.sprite.Sprite() + cartel_titulo.image= G.get_Imagen_Cartel1() + cartel_titulo.image= pygame.transform.scale(cartel_titulo.image.copy(), (ancho,cartel_titulo.image.get_size()[1])) + cartel_titulo.rect= cartel_titulo.image.get_rect() + cartel_titulo.rect.x= x + cartel_titulo.rect.y= -60 + self.add(cartel_titulo) + + 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) + w,h= G.RESOLUCION + x,y= (cartel_titulo.rect.x + 50, 10) + self.titulo.set_posicion(punto= (x,y)) + self.add(self.titulo) + + self.puntaje= JAMLabel("%s" %(self.main.puntos)) + self.puntaje.set_text(color=JAMG.get_blanco()) + fuente, tamanio= JAMG.get_Font_fawn() + self.puntaje.set_font_from_file(fuente, tamanio= 40) + w,h= G.RESOLUCION + self.add(self.puntaje) + + self.sonidos_reloj= G.get_sound_clock() + + from BiblioJAM.JAMCron import JAMCron + self.cronometro= JAMCron() + x,y= (0-self.cronometro.cron.rect.w-1, 0-self.cronometro.cron.rect.h-1) + self.cronometro.cron.set_posicion(punto= (x,y)) + self.cronometro.set_callback(self.main.game_over) + self.cronometro.set_alarma(tiempo= (1,40), duracion= 3) + self.add(self.cronometro) + + self.progress_reloj= ProgressBar(self.main) + self.add(self.progress_reloj) + + def actualiza_puntos(self): + puntos= "%s" %(self.main.puntos) + self.puntaje.set_text(texto= puntos) + w,h= G.RESOLUCION + x,y= (w-self.puntaje.rect.w-20, 25) + self.puntaje.set_posicion(punto= (x,y)) + + def switching_game(self, button): + self.main.estado= "Intro" + return self.main.run() + + def init(self): + sound= self.sonidos_reloj[0] + self.cronometro.set_sound(sound) + self.cronometro.reset() + self.actualiza_puntos() + self.cronometro.play() + def stop(self): + self.cronometro.pause() + def play(self): + self.cronometro.play() + +class ProgressBar(pygame.sprite.Sprite): + def __init__(self, main): + pygame.sprite.Sprite.__init__(self) + self.main= main + self.acumula= 0 + w,h= G.RESOLUCION + self.tamanio= (w/2-10,10) + self.posicion= (w/2,10) + rect1= JAMG.get_Rectangulo( JAMG.get_verde1(), self.tamanio) + w,y= rect1.get_size() + a= w/6*3 + rect2= JAMG.get_Rectangulo( JAMG.get_amarillo1(), (a,self.tamanio[1])) + imagen= JAMG.pegar_imagenes_alineado_derecha(rect2, rect1) + a= w/6 + rect3= JAMG.get_Rectangulo( JAMG.get_rojo1(), (a,self.tamanio[1])) + self.imagen_original= JAMG.pegar_imagenes_alineado_derecha(rect3, imagen) + self.image= self.imagen_original.copy() + self.rect= self.image.get_rect() + self.rect.x, self.rect.y= self.posicion + + def update(self): + tiempo= self.main.controles.cronometro.cron.segundos_final + transcurridos= self.main.controles.cronometro.get_tiempo_transcurrido() + faltan= self.main.controles.cronometro.cron.segundos_faltan + mitad= tiempo/2 + cuarto= tiempo/4 + if faltan <= mitad: + if faltan > cuarto: + if not self.main.controles.cronometro.sonido == self.main.controles.sonidos_reloj[1]: + self.main.controles.stop() + self.main.controles.cronometro.set_sound(self.main.controles.sonidos_reloj[1]) + self.main.controles.play() + elif faltan <= cuarto: + if not self.main.controles.cronometro.sonido == self.main.controles.sonidos_reloj[2]: + self.main.controles.stop() + self.main.controles.cronometro.set_sound(self.main.controles.sonidos_reloj[2]) + self.main.controles.play() + ancho, alto= self.tamanio + ind= float(float(ancho)/float(self.main.controles.cronometro.cron.segundos_final)) + ancho= float(float(ancho)- float(self.main.controles.cronometro.get_tiempo_transcurrido())*ind) + dif= float(float(self.tamanio[0]) - float(ancho)) + try: + self.image= self.imagen_original.copy().subsurface((dif,0,int(ancho), int(alto))) + except: + self.image= self.imagen_original.copy().subsurface((dif,0,0,0)) + self.rect= self.image.get_rect() + x,y= self.posicion + x+= dif + self.rect.x, self.rect.y= (x,y) +# -------- CONTROLES ---------- + +# -------- SOPADELETRAS ---------- +class Seniales(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main = main + self.palabras = {} + self.botones = [] + self.flechas = {} + self.matriz_letras = [] + self.textos = [] + self.load_sprites() + self.set_posicion((105, 170)) + + def load_sprites(self): + self.empty() + self.botones = [] + self.palabras = {} + self.flechas = {} + self.matriz_letras = [] + self.textos = [] + matriz = G.get_letras_FGR_T0503() + for linea in matriz: + fila = [] + for letra in linea: + l = Letra(letra) + fila.append(l) + if bool(letra): self.add(l) + self.matriz_letras.append(fila) + # Verticales + chaleco = [] + for linea in self.matriz_letras[0:7]: + chaleco.append(linea[0]) + self.palabras['CHALECO'] = chaleco + mate = [] + for linea in self.matriz_letras[4:]: + mate.append(linea[5]) + self.palabras['MATE'] = mate + sri = [] + for linea in self.matriz_letras[4:7]: + sri.append(linea[7]) + self.palabras['SRI'] = sri + bocina = [] + for linea in self.matriz_letras[2:]: + bocina.append(linea[9]) + self.palabras['BOCINA'] = bocina + # Horizontales + self.palabras['CELULAR'] = self.matriz_letras[0][0:7] + self.palabras['ATRAS'] = self.matriz_letras[2][0:5] + self.palabras['CODERA'] = self.matriz_letras[5][0:6] + self.palabras['MUSICA'] = self.matriz_letras[4][5:] + + for key in self.palabras.keys(): + boton = Boton(key) + boton.connect(callback = self.main.toma, sonido_select = None) + self.botones.append(boton) + self.add(boton) + + directorio = os.path.join(G.IMAGENES, 'FGR_T0503') + self.flechas['CHALECO'] = Flecha('CHALECO', os.path.join(directorio, 'v_flecha1.png')) + self.flechas['MATE'] = Flecha('MATE', os.path.join(directorio, 'v_flecha5.png')) + self.flechas['SRI'] = Flecha('SRI', os.path.join(directorio, 'v_flecha7.png')) + self.flechas['BOCINA'] = Flecha('BOCINA', os.path.join(directorio, 'v_flecha8.png')) + self.flechas['CELULAR'] = Flecha('CELULAR', os.path.join(directorio, 'flecha2.png')) + self.flechas['ATRAS'] = Flecha('ATRAS', os.path.join(directorio, 'flecha3.png')) + self.flechas['CODERA'] = Flecha('CODERA', os.path.join(directorio, 'flecha4.png')) + self.flechas['MUSICA'] = Flecha('MUSICA', os.path.join(directorio, 'flecha6.png')) + for key in self.flechas.keys(): + flecha = self.flechas[key] + flecha.connect(callback = self.main.deja, sonido_select = None) + self.add(flecha) + + fuente, tamanio = JAMG.get_Font_fawn() + for linea in G.get_Texto_FGR_T0503(): + label = JAMLabel(linea) + label.set_font_from_file(fuente, tamanio = 28) + label.set_text(color = (255,255,255,255)) + self.textos.append(label) + + def set_posicion(self, punto = (0,0)): + pos = punto + x, y = pos + w, h = (0,0) + for fila in self.matriz_letras: + for letra in fila: + letra.set_posicion( (x,y) ) + w,h = letra.get_tamanio() + x += w + y += h + x = pos[0] + + # Verticales + flecha = self.flechas['CHALECO'] + elemento = self.matriz_letras[0][0] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a,b-d) ) + flecha = self.flechas['MATE'] + elemento = self.matriz_letras[4][5] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a,b-d) ) + flecha = self.flechas['SRI'] + elemento = self.matriz_letras[4][7] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a,b-d) ) + flecha = self.flechas['BOCINA'] + elemento = self.matriz_letras[2][9] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a,b-d) ) + # Horizontales + flecha = self.flechas['CELULAR'] + elemento = self.matriz_letras[0][0] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a-c,b) ) + flecha = self.flechas['ATRAS'] + elemento = self.matriz_letras[2][0] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a-c,b) ) + flecha = self.flechas['CODERA'] + elemento = self.matriz_letras[5][0] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a-c,b) ) + flecha = self.flechas['MUSICA'] + elemento = self.matriz_letras[4][5] + ((a,b), (c,d)) = (elemento.get_posicion(), flecha.get_tamanio()) + flecha.set_posicion( (a-c,b) ) + + ultimo = self.matriz_letras[-1][-1] + x, y = ultimo.get_posicion() + w, h = ultimo.get_tamanio() + posbuttons = (x+w,y+h) + + for fila in self.matriz_letras: + for letra in fila: + if not letra.letra: + fila.remove(letra) + letra.kill() + y = posbuttons[1] + 50 + for boton in self.botones[4:]: + w,h = boton.get_tamanio() + x = posbuttons[0] - w + boton.set_posicion( (x, y) ) + y += h + 10 + y = posbuttons[1] + 50 + posbuttons = (posbuttons[0] - (w+10), posbuttons[1]) + for boton in self.botones[:4]: + w,h = boton.get_tamanio() + x = posbuttons[0] - w + boton.set_posicion( (x, y) ) + y += h + 10 + + x, y = (G.RESOLUCION[0]/2 + 115, 130) + for label in self.textos: + label.set_posicion((x,y)) + y += label.get_tamanio()[1]+10 + + a,b,c,d = (0,0,0,0) + a,b = self.textos[0].get_posicion() + for label in self.textos: + e,f = label.get_tamanio() + if e > c: c = e + if f > d: d = f + sombra = JAMG.get_Sombra((c+40, self.textos[-1].get_posicion()[1]-b + d + 40), (0,0,0,0), 80) + sombra = sombra.sprites()[0] + sombra.rect.x, sombra.rect.y = (a-20, b-20) + self.add(sombra) + for label in self.textos: + self.add(label) + + def seleccionar(self, boton): + for bot in self.botones: + if not bot.ubicado: + bot.connect(callback = self.main.toma, sonido_select = None) + bot.reset() + boton.connect(callback = None, sonido_select = None) + boton.seleccionar() + + def marcar(self, flecha): + for letra in self.palabras[flecha.nombre]: + letra.set_text(texto = letra.letra) + flecha.kill() + +class Boton(JAMButton): + def __init__(self, texto): + JAMButton.__init__(self, texto, None) + self.ubicado = False + fuente, tamanio = JAMG.get_Font_fawn() + self.set_font_from_file(fuente, tamanio = 30) + self.set_tamanios(tamanio = (150, 25), grosorbor=1, detalle=1, espesor=1) + self.colorcara, self.colorbase, self.colorborde, g, d, e = JAMG.get_default_jambutton_values() + self.reset() + def reset(self): + self.set_colores(colorbas = self.colorbase, + colorbor = self.colorborde, colorcara = self.colorcara) + def seleccionar(self): + self.set_colores(colorbas = self.colorbase, + colorbor = self.colorborde, colorcara = self.colorbase) + def marcar(self): + self.ubicado = True + self.connect(callback = None, sonido_select = None) + self.set_colores(colorbas = self.colorbase, + colorbor = self.colorbase, colorcara = self.colorbase) + +class Flecha(JAMButton): + def __init__(self, nombre, imagen): + JAMButton.__init__(self, '',imagen) + self.nombre = nombre + self.set_tamanios(tamanio = (50, 50), grosorbor=1, detalle=1, espesor=1) + imagen = pygame.image.load(imagen) + self.final_select = JAMG.get_Rectangulo((240,150,0,255), (50,50)) + self.final_select.blit(imagen,(0,0)) + self.final_unselect = imagen + self.image = self.final_unselect + self.rect = self.image.get_rect() + +class Letra(JAMButton): + def __init__(self, letra): + JAMButton.__init__(self, '',None) + fuente, tamanio = JAMG.get_Font_fawn() + self.set_font_from_file(fuente, tamanio = 30) + self.letra = letra + #if self.letra: self.set_text(texto = self.letra) + self.set_tamanios(tamanio = (50, 50), grosorbor=1, detalle=1, espesor=1) + def update(self): + pass + +# --------- TEXTOS ---------------- +class Textos_Intro(pygame.sprite.OrderedUpdates): + def __init__(self): + pygame.sprite.OrderedUpdates.__init__(self) + self.base= None + self.labels= [] + self.gruber= None + self.base= None + + self.load_textos() + self.set_posicion_labels() + self.base= self.get_base() + self.gruber= self.get_gruber() + + self.add(self.base) + self.add(self.labels) + self.add(self.gruber) + + def get_gruber(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber1() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def get_base(self): + w,h= self.get_dimensiones() + w+= 20 + h+= 20 + base= pygame.sprite.Sprite() + superficie = pygame.Surface( (w,h), flags=SRCALPHA ) + superficie.fill((0,0,0,150)) + base.image= superficie + base.rect= base.image.get_rect() + base.rect.x, base.rect.y= (G.RESOLUCION[0]/2-base.rect.w/2, self.labels[0].rect.y-10) + return base + + def load_textos(self): + textos= G.get_Textos_FGR_T0301() + for linea in textos: + label= Sprite_Texto(linea) + self.labels.append(label) + + def set_posicion_labels(self): + w,h= G.RESOLUCION + x, y= (0,h/2-30) + for label in self.labels: + x= w/2-label.rect.w/2 + label.rect.x= x + label.rect.y= y + y+= label.rect.h + + def get_dimensiones(self): + w,h= (0,0) + for label in self.labels: + if label.rect.w > w: w= label.rect.w + h+= label.rect.h + return (w,h) + +class Sprite_Texto(pygame.sprite.Sprite): + def __init__(self, texto): + pygame.sprite.Sprite.__init__(self) + string_to_render= "" + fuente= self.get_Font() + string_to_render = unicode( texto.decode("utf-8") ) + self.image = fuente.render(string_to_render, 1, JAMG.get_blanco()) + self.rect= self.image.get_rect() + + def get_Font(self): + fuente, tamanio= JAMG.get_Font_fawn() + return pygame.font.Font(fuente, tamanio) +# --------- TEXTOS ---------------- + +# --------- Botones en Menu (Salir y Jugar) ------------------ +class ButtonsMenu(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main = main + 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 = self.main.run_dialog_intro) + self.add(salir) + + jugar= JAMButton("Jugar",None) + jugar.set_text(color=JAMG.get_blanco()) + fuente, tamanio= JAMG.get_Font_fawn() + jugar.set_font_from_file(fuente, tamanio= 50) + jugar.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) + jugar.set_tamanios(tamanio=(200,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= self.run_Instruc) + self.add(jugar) + + ''' + 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)''' + + def run_Instruc(self, button): + button.connect (callback= self.switching) + self.main.estado= "Instruc" + pygame.event.clear() + return self.main.run_Instruc() + + def switching(self, button): + self.main.estado= "Game" + pygame.event.clear() + return self.main.run() +# --------- Botones en Menu (Salir y Jugar) ------------------ + +# --------- Mensaje Final --------- +class Mensaje(pygame.sprite.OrderedUpdates): + def __init__(self, main, opcion, text1, text2): + pygame.sprite.OrderedUpdates.__init__(self) + self.main= main + self.estado= True + + self.base= None + self.label1= None + self.label2= None + self.labels= [] + self.gruber= None + + self.label1= Sprite_Texto(text1) + self.label2= Sprite_Texto(text2) + self.labels= [self.label1, self.label2] + + self.x_final_label1= 0 + self.x_final_label2= 0 + + self.init() + self.base= self.get_base() + if opcion== "Victory": + self.gruber= self.get_gruber2() + elif opcion== "End": + self.gruber= self.get_gruber3() + + self.add(self.base) + self.add(self.labels) + self.add(self.gruber) + + def init(self): + w,h= G.RESOLUCION + w1,h1= (self.label1.rect.w, self.label1.rect.h) + w2,h2= (self.label2.rect.w, self.label2.rect.h) + + x= 0-w + y= h/2-h2/2 + self.label2.rect.x, self.label2.rect.y= (x,y) + self.x_final_label2= w/2-w2/2 + + x= w + y= self.label2.rect.y - h2 + self.label1.rect.x, self.label1.rect.y= (x,y) + self.x_final_label1= w/2-w1/2 + + def get_base(self): + w,h= self.get_dimensiones() + w+= 20 + h+= 20 + base= pygame.sprite.Sprite() + superficie = pygame.Surface( (w,h), flags=SRCALPHA ) + superficie.fill((0,0,0,150)) + base.image= superficie + base.rect= base.image.get_rect() + base.rect.x, base.rect.y= (G.RESOLUCION[0]/2-base.rect.w/2, self.labels[0].rect.y-10) + return base + + def get_dimensiones(self): + w,h= (0,0) + for label in self.labels: + if label.rect.w > w: w= label.rect.w + h+= label.rect.h + return (w,h) + + def get_gruber2(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber2() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def get_gruber3(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber3() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def update(self): + x,y,w,h= self.label2.rect + final= True + if x < self.x_final_label2: + x+= 60 + self.label2.rect.x, self.label2.rect.y= (x,y) + final= False + else: + self.label2.rect.x= self.x_final_label2 + + x,y,w,h= self.label1.rect + if x > self.x_final_label1: + x-= 60 + self.label1.rect.x, self.label1.rect.y= (x,y) + final= False + else: + self.label1.rect.x= self.x_final_label1 + + if final== True: + self.label2.rect.x= self.x_final_label2 + self.label1.rect.x= self.x_final_label1 + self.estado= False + diff --git a/FGR_T0504.py b/FGR_T0504.py new file mode 100644 index 0000000..d54a008 --- /dev/null +++ b/FGR_T0504.py @@ -0,0 +1,937 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# FGR_T0504.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 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_T0504(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 + + # Sprites + 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 + + # Escalado + self.ventana_real = None + self.resolucionreal = None + self.VA = None + self.VH = None + self.load() + self.estado = "Intro" + + def run(self): + 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)) + self.textos.draw(self.ventana) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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.textos.clear(self.ventana, self.fondo) + self.botonesmenu.clear(self.ventana, self.fondo) + self.botonesmenu.update() + self.handle_event_Intro() + pygame.event.clear() + self.textos.draw(self.ventana) + self.botonesmenu.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def run_juego(self): + pygame.mixer.music.pause() + self.ventana.blit(self.fondo, (0,0)) + #self.carteles.draw(self.ventana) + #self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + while self.estado == "Game": + self.reloj.tick(35) + while gtk.events_pending(): + gtk.main_iteration(False) + G.Traduce_posiciones(self.VA, self.VH) + #self.carteles.clear(self.ventana, self.fondo) + #self.seniales.clear(self.ventana, self.fondo) + self.controles.clear(self.ventana, self.fondo) + #self.seniales.update() + self.controles.update() + self.handle_event_Game() + pygame.event.clear() + #self.carteles.draw(self.ventana) + #self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + def reset(self): + self.puntos= 0 + #self.carteles.init() + self.controles.init() + #self.seniales.init() + + def correct(self): + self.sonido_exito.play() + self.puntos+= 10 + self.controles.actualiza_puntos() + + def error(self): + self.sonido_error.play() + self.controles.cronometro.cron.segundos_transcurridos+= 5 + + def victory(self): + pygame.mixer.music.unpause() + self.controles.stop() + self.puntos+= (10*self.controles.cronometro.get_tiempo_restante()) + self.controles.actualiza_puntos() + + self.ventana.blit(self.fondo, (0,0)) + #self.carteles.draw(self.ventana) + #self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + + text1= "Muy bien, ahora saben cuáles son las partes más importantes de una bici y " + text2= "gracias a eso consiguieron 1 sticker más. Sigan adelante!" + + mensaje= Mensaje(self, "Victory", text1, text2) + self.fondo= self.fondo1 + + self.ventana.blit(self.fondo, (0,0)) + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + while mensaje.estado == True: + self.reloj.tick(35) + mensaje.clear(self.ventana, self.fondo) + mensaje.update() + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + pygame.time.wait(6000) + return self.salir(True) + + def game_over(self, jamcron): + pygame.mixer.music.unpause() + self.controles.update() # para actualizar imagen de progressbar del reloj + self.controles.stop() + self.controles.actualiza_puntos() + + self.ventana.blit(self.fondo, (0,0)) + #self.carteles.draw(self.ventana) + #self.seniales.draw(self.ventana) + self.controles.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + pygame.time.wait(1000) + + text1= "Te han Faltado Unos Segundos Para Completar la Actividad." + text2= "Prueba Nuevamente." + + mensaje= Mensaje(self, "End", text1, text2) + self.fondo= self.fondo1 + + self.ventana.blit(self.fondo, (0,0)) + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + while mensaje.estado == True: + self.reloj.tick(35) + mensaje.clear(self.ventana, self.fondo) + mensaje.update() + mensaje.draw(self.ventana) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + + pygame.time.wait(6000) + return self.salir(False) + + # ----------- SETEOS ------------- + 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.resolucionreal= (C,D) + self.VA= float(C)/float(A) + self.VH= float(D)/float(B) + self.fondo1, self.fondo2= G.get_Fondos_FGR_T0301() + self.textos= Textos_Intro() + self.botonesmenu= ButtonsMenu(self) + self.controles= Controles(self) + #self.seniales= SopadeLetras(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): + for event in pygame.event.get(pygame.KEYDOWN): + tecla= event.key + if tecla== pygame.K_ESCAPE: + pygame.event.clear() + return self.run_dialog_intro(None) + + def run_Instruc(self): + self.fondo= G.get_instruc("301") + 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() + while self.estado== "Instruc": + 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() + 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 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) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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(False) + def cancel_intro(self, button): + self.estado= "Intro" + # ----------- EVENTOS en MENU --------------- + + # ----------- EVENTOS en JUEGO --------------- + def handle_event_Game(self): + for event in pygame.event.get(pygame.KEYDOWN): + tecla= event.key + if tecla== pygame.K_ESCAPE: + pygame.event.clear() + return self.run_dialog_game(None) + + def run_dialog_game(self, button): + self.controles.stop() + from BiblioJAM.JAMDialog import JAMDialog + dialog= JAMDialog(mensaje="¿Abandonas el Juego?", funcion_ok=self.ok, funcion_cancel=self.cancel) + fuente, tamanio= JAMG.get_Font_fawn() + dialog.set_font_from_file(fuente, tamanio= 30) + dialog.boton_aceptar.set_font_from_file(fuente, tamanio= 30) + dialog.boton_cancelar.set_font_from_file(fuente, tamanio= 30) + 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) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + 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() + + if self.estado== "Intro": + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + return self.run() + else: + dialog.clear(self.ventana, self.fondo) + self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0)) + pygame.display.update() + self.controles.play() + + def ok(self, button): + self.estado= "Intro" + def cancel(self, button): + self.estado= "Game" + # ----------- EVENTOS en JUEGO --------------- + + def salir(self, valor= None): + self.estado = False + self.emit("run_grupo", "grupo5", self.puntos) + +# -------- CONTROLES ---------- +class Controles(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main= main + self.flecha= None + self.titulo= None + self.puntaje= None + self.cronometro= None + self.progress_reloj= None + self.sonidos_reloj= None + + self.load_sprites() + + def load_sprites(self): + imagen= G.get_Flecha() + self.flecha= JAMButton("",None) + self.flecha.set_imagen(origen= imagen, tamanio=(100,55)) + self.flecha.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) + self.flecha.set_tamanios(tamanio=(0,0), grosorbor=1, detalle=1, espesor=1) + self.flecha.set_posicion(punto= (10,10)) + self.flecha.connect (callback= self.main.run_dialog_game) + self.add(self.flecha) + + x,y= self.flecha.posicion + w,h= self.flecha.get_tamanio() + x+= w + ancho= G.RESOLUCION[0]/2 - x + cartel_titulo= pygame.sprite.Sprite() + cartel_titulo.image= G.get_Imagen_Cartel1() + cartel_titulo.image= pygame.transform.scale(cartel_titulo.image.copy(), (ancho,cartel_titulo.image.get_size()[1])) + cartel_titulo.rect= cartel_titulo.image.get_rect() + cartel_titulo.rect.x= x + cartel_titulo.rect.y= -60 + self.add(cartel_titulo) + + 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) + w,h= G.RESOLUCION + x,y= (cartel_titulo.rect.x + 50, 10) + self.titulo.set_posicion(punto= (x,y)) + self.add(self.titulo) + + self.puntaje= JAMLabel("%s" %(self.main.puntos)) + self.puntaje.set_text(color=JAMG.get_blanco()) + fuente, tamanio= JAMG.get_Font_fawn() + self.puntaje.set_font_from_file(fuente, tamanio= 40) + w,h= G.RESOLUCION + self.add(self.puntaje) + + self.sonidos_reloj= G.get_sound_clock() + + from BiblioJAM.JAMCron import JAMCron + self.cronometro= JAMCron() + x,y= (0-self.cronometro.cron.rect.w-1, 0-self.cronometro.cron.rect.h-1) + self.cronometro.cron.set_posicion(punto= (x,y)) + self.cronometro.set_callback(self.main.game_over) + self.cronometro.set_alarma(tiempo= (1,40), duracion= 3) + self.add(self.cronometro) + + self.progress_reloj= ProgressBar(self.main) + self.add(self.progress_reloj) + + def actualiza_puntos(self): + puntos= "%s" %(self.main.puntos) + self.puntaje.set_text(texto= puntos) + w,h= G.RESOLUCION + x,y= (w-self.puntaje.rect.w-20, 25) + self.puntaje.set_posicion(punto= (x,y)) + + def switching_game(self, button): + self.main.estado= "Intro" + return self.main.run() + + def init(self): + sound= self.sonidos_reloj[0] + self.cronometro.set_sound(sound) + self.cronometro.reset() + self.actualiza_puntos() + self.cronometro.play() + def stop(self): + self.cronometro.pause() + def play(self): + self.cronometro.play() + +class ProgressBar(pygame.sprite.Sprite): + def __init__(self, main): + pygame.sprite.Sprite.__init__(self) + self.main= main + self.acumula= 0 + + w,h= G.RESOLUCION + self.tamanio= (w/2-10,10) + self.posicion= (w/2,10) + + rect1= JAMG.get_Rectangulo( JAMG.get_verde1(), self.tamanio) + w,y= rect1.get_size() + a= w/6*3 + rect2= JAMG.get_Rectangulo( JAMG.get_amarillo1(), (a,self.tamanio[1])) + imagen= JAMG.pegar_imagenes_alineado_derecha(rect2, rect1) + a= w/6 + rect3= JAMG.get_Rectangulo( JAMG.get_rojo1(), (a,self.tamanio[1])) + self.imagen_original= JAMG.pegar_imagenes_alineado_derecha(rect3, imagen) + + self.image= self.imagen_original.copy() + self.rect= self.image.get_rect() + self.rect.x, self.rect.y= self.posicion + + def update(self): + tiempo= self.main.controles.cronometro.cron.segundos_final + transcurridos= self.main.controles.cronometro.get_tiempo_transcurrido() + faltan= self.main.controles.cronometro.cron.segundos_faltan + mitad= tiempo/2 + cuarto= tiempo/4 + if faltan <= mitad: + if faltan > cuarto: + if not self.main.controles.cronometro.sonido == self.main.controles.sonidos_reloj[1]: + self.main.controles.stop() + self.main.controles.cronometro.set_sound(self.main.controles.sonidos_reloj[1]) + self.main.controles.play() + elif faltan <= cuarto: + if not self.main.controles.cronometro.sonido == self.main.controles.sonidos_reloj[2]: + self.main.controles.stop() + self.main.controles.cronometro.set_sound(self.main.controles.sonidos_reloj[2]) + self.main.controles.play() + + ancho, alto= self.tamanio + ind= float(float(ancho)/float(self.main.controles.cronometro.cron.segundos_final)) + ancho= float(float(ancho)- float(self.main.controles.cronometro.get_tiempo_transcurrido())*ind) + dif= float(float(self.tamanio[0]) - float(ancho)) + try: + self.image= self.imagen_original.copy().subsurface((dif,0,int(ancho), int(alto))) + except: + self.image= self.imagen_original.copy().subsurface((dif,0,0,0)) + + self.rect= self.image.get_rect() + x,y= self.posicion + x+= dif + self.rect.x, self.rect.y= (x,y) +# -------- CONTROLES ---------- + +# -------- SOPADELETRAS ---------- +''' +class SopadeLetras(pygame.sprite.OrderedUpdates): + # Grupo de Señales. + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main= main + self.filadebotones= [] + self.palabras= None + self.posicion= (150,330) + self.palabra_select= None + self.imagen= None + self.imagen_palabra_select= None + self.Construye() + + def Construye(self): + self.imagen= pygame.sprite.Sprite() + self.imagen.image= G.get_personajes_FGR_T0301() + self.imagen.rect= self.imagen.image.get_rect() + self.add(self.imagen) + + filas = ["ZOMSALEMDA","ELAPEDALES","INFLADORSO", "AECUADROFZ", + "BOACECDARV", "POSEDENIEA", "ALISODTANA", "RIASIENTOF", + "OCETANOASD", "MAGYOATSGH"] + self.filadebotones= [] + for fila in filas: + newfila= [] + for letra in fila: + boton= Sprite_Button(self, letra) + newfila.append(boton) + self.add(boton) + self.filadebotones.append(newfila) + w,h = (0,0) + lado= 0 + for fila in self.filadebotones: + for boton in fila: + w1,h1= boton.get_tamanio() + if w1> w: w= w1 + if h1> h: h= h1 + if lado < w: lado= w + if lado < h: lado= h + + for fila in self.filadebotones: + for boton in fila: + boton.set_tamanios(tamanio=(lado,lado), grosorbor= 1, detalle= 1, espesor= 1) + + self.set_posiciones(punto= self.posicion) + + self.palabras={ + "PEDALES":self.filadebotones[1][3:], + "INFLADOR":self.filadebotones[2][0:8], + "CUADRO":self.filadebotones[3][2:8], + "LUCES":[self.filadebotones[2][3], self.filadebotones[3][3], + self.filadebotones[4][3], self.filadebotones[5][3], self.filadebotones[6][3]], + "FRENOS":[self.filadebotones[3][8],self.filadebotones[4][8], self.filadebotones[5][8], + self.filadebotones[6][8], self.filadebotones[7][8], self.filadebotones[8][8]], + "ASIENTO":self.filadebotones[7][2:9], + "PLATO":[self.filadebotones[5][0], self.filadebotones[6][1], + self.filadebotones[7][2], self.filadebotones[8][3], self.filadebotones[9][4]]} + + for palabra in self.palabras: + # reconvierte el diccionario a grupos de sprites + grupopalabra= Palabra(self.main, palabra) + grupopalabra.add(self.palabras[palabra]) + self.palabras[palabra]= grupopalabra + + def get_posicion(self): + return self.posicion + + def get_tamanio(self): + # Devuelve el tamaño total de la sopa de letras. + w,h= self.filadebotones[0][0].get_tamanio() + w= w*len(self.filadebotones[0]) + h= h*len(self.filadebotones) + return w,h + + def set_posiciones(self, punto= (0,0)): + self.posicion= punto + x,y= self.posicion + a,b,c,d= self.imagen.rect + self.imagen.rect.x= x-50 + self.imagen.rect.y= y-d + for fila in self.filadebotones: + x= self.posicion[0] + w,h= (0,0) + for boton in fila: + boton.set_posicion(punto= (x,y)) + w,h= boton.get_tamanio() + x+= w + y+= h + + def verifica(self, boton): + if boton.ubicada: return + if self.palabra_select: + # Si hay una palabra seleccionada + if boton in self.palabra_select: + # Si este botón está en la palabra seleccionada + boton.paint_select() + return self.verifica_palabra() + else: + # Si este botón no está en la palabra seleccionada + self.deselect_palabras_botones() + return self.verifica(boton) + else: + # Si no hay una palabra seleccionada + for palabra in self.palabras: + pal= self.palabras[palabra] + if not pal.ubicada: + if boton in pal: + # seleccionamos la palabra + self.palabra_select= pal + return self.verifica(boton) # recursividad + return self.main.error() + + def verifica_palabra(self): + for letra in self.palabra_select: + if not letra.ubicada: return + # Si todos se han ubicado + self.palabra_select.ubicada= True + palabra= "" + for pal in self.palabra_select.sprites(): + palabra+= pal.get_text() + + for plbra in self.main.carteles.sprites(): + # tacha la palabra encontrada + if palabra== plbra.get_text(): + plbra.set_text(color= JAMG.get_verde1()) + #plbra.tacha() + + if self.imagen_palabra_select: self.imagen_palabra_select.kill() + self.imagen_palabra_select= Sprite_Imagen_Palabra(self, palabra) + self.add(self.imagen_palabra_select) + self.palabra_select= None + self.main.correct() + + fin= True + for palabra in self.palabras: + pal= self.palabras[palabra] + if not pal.ubicada: return + if fin == True: + return self.main.victory() + + def deselect_palabras_botones(self): + for letra in self.palabra_select: + letra.init() + letra.ubicada= False + self.palabra_select= None + + def init(self): + for palabra in self.palabras: + self.palabra_select= None + if self.imagen_palabra_select: self.imagen_palabra_select.kill() + self.palabras[palabra].init() + +class Sprite_Imagen_Palabra(pygame.sprite.Sprite): + def __init__(self, main, palabra): + pygame.sprite.Sprite.__init__(self) + self.main= main + self.image= G.get_imagen_FGR_T0301(palabra) + self.rect= self.image.get_rect() + self.rect.x= 860 + self.rect.y= 400 + from BiblioJAM.JAMCron import JAMCron + self.cronometro= JAMCron() + self.cronometro.set_sound(None) + self.cronometro.set_alarma(tiempo= (0,6), sound= None, duracion= 1) + self.cronometro.set_callback(self.killer) + self.cronometro.play() + + def update(self): + self.cronometro.update() + def killer(self, cron): + cron.pause() + for sprite in cron.sprites(): + sprite.kill() + self.kill() + +class Palabra(pygame.sprite.OrderedUpdates): + def __init__(self, main, nombre): + pygame.sprite.OrderedUpdates.__init__(self) + self.ubicada= False + + def init(self): + self.ubicada= False + for boton in self.sprites(): + boton.init() + +class Sprite_Button(JAMButton): + def __init__(self, main, texto): + JAMButton.__init__(self, texto, None) + self.main= main + self.ubicada= False + + self.set_font_from_file(JAMG.get_Font_fawn()[0], tamanio= 30) + self.set_tamanios(tamanio=(0,0), grosorbor= 1, detalle= 1, espesor= 1) + self.connect(callback= self.main.verifica, sonido_select= None) + + def paint_select(self): + self.ubicada= True + a,b,c= JAMG.get_estilo_naranja() + self.set_colores(colorbas= a, colorbor= b, colorcara= c) + + def init(self): + self.ubicada= False + a,b,c,d,e,f= JAMG.get_default_jambutton_values() + self.set_colores(colorbas= b, colorbor= c, colorcara= a)''' +# -------- SOPADELETRAS ---------- + +# --------- PALABRAS A BUSCAR ---------------------------- +''' +class Carteles(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main= main + self.load_sprites() + + def load_sprites(self): + palabras= ["PEDALES", "INFLADOR", "CUADRO", "LUCES", "FRENOS", "ASIENTO", "PLATO"] + x,y= self.main.seniales.get_posicion() + w,h= self.main.seniales.get_tamanio() + x+= w+5 + for pal in palabras: + label= JAMLabel(pal) + label.set_font_from_file(JAMG.get_Font_fawn()[0], tamanio= 50) + label.set_text(color= JAMG.get_blanco()) + label.set_posicion(punto= (x,y)) + y+= label.get_tamanio()[1]+5 + self.add(label) + + def init(self): + for sprite in self.sprites(): + sprite.kill() + self.empty() + self.load_sprites()''' +# --------- PALABRAS A BUSCAR ---------------------------- + +# --------- TEXTOS ---------------- +class Textos_Intro(pygame.sprite.OrderedUpdates): + def __init__(self): + pygame.sprite.OrderedUpdates.__init__(self) + self.base= None + self.labels= [] + self.gruber= None + self.base= None + + self.load_textos() + self.set_posicion_labels() + self.base= self.get_base() + self.gruber= self.get_gruber() + + self.add(self.base) + self.add(self.labels) + self.add(self.gruber) + + def get_gruber(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber1() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def get_base(self): + w,h= self.get_dimensiones() + w+= 20 + h+= 20 + base= pygame.sprite.Sprite() + superficie = pygame.Surface( (w,h), flags=SRCALPHA ) + superficie.fill((0,0,0,150)) + base.image= superficie + base.rect= base.image.get_rect() + base.rect.x, base.rect.y= (G.RESOLUCION[0]/2-base.rect.w/2, self.labels[0].rect.y-10) + return base + + def load_textos(self): + textos= G.get_Textos_FGR_T0301() + for linea in textos: + label= Sprite_Texto(linea) + self.labels.append(label) + + def set_posicion_labels(self): + w,h= G.RESOLUCION + x, y= (0,h/2-30) + for label in self.labels: + x= w/2-label.rect.w/2 + label.rect.x= x + label.rect.y= y + y+= label.rect.h + + def get_dimensiones(self): + w,h= (0,0) + for label in self.labels: + if label.rect.w > w: w= label.rect.w + h+= label.rect.h + return (w,h) + +class Sprite_Texto(pygame.sprite.Sprite): + def __init__(self, texto): + pygame.sprite.Sprite.__init__(self) + string_to_render= "" + fuente= self.get_Font() + string_to_render = unicode( texto.decode("utf-8") ) + self.image = fuente.render(string_to_render, 1, JAMG.get_blanco()) + self.rect= self.image.get_rect() + + def get_Font(self): + fuente, tamanio= JAMG.get_Font_fawn() + return pygame.font.Font(fuente, tamanio) +# --------- TEXTOS ---------------- + +# --------- Botones en Menu (Salir y Jugar) ------------------ +class ButtonsMenu(pygame.sprite.OrderedUpdates): + def __init__(self, main): + pygame.sprite.OrderedUpdates.__init__(self) + self.main= main + 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= self.main.run_dialog_intro) + self.add(salir) + + jugar= JAMButton("Jugar",None) + jugar.set_text(color=JAMG.get_blanco()) + fuente, tamanio= JAMG.get_Font_fawn() + jugar.set_font_from_file(fuente, tamanio= 50) + jugar.set_colores(colorbas=JAMG.get_negro(), colorcara=JAMG.get_negro()) + jugar.set_tamanios(tamanio=(200,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= self.run_Instruc) + self.add(jugar) + + def run_Instruc(self, button): + button.connect (callback= self.switching) + self.main.estado= "Instruc" + pygame.event.clear() + return self.main.run_Instruc() + + def switching(self, button): + self.main.estado= "Game" + pygame.event.clear() + return self.main.run() +# --------- Botones en Menu (Salir y Jugar) ------------------ + +# --------- Mensaje Final --------- +class Mensaje(pygame.sprite.OrderedUpdates): + def __init__(self, main, opcion, text1, text2): + pygame.sprite.OrderedUpdates.__init__(self) + self.main= main + self.estado= True + + self.base= None + self.label1= None + self.label2= None + self.labels= [] + self.gruber= None + + self.label1= Sprite_Texto(text1) + self.label2= Sprite_Texto(text2) + self.labels= [self.label1, self.label2] + + self.x_final_label1= 0 + self.x_final_label2= 0 + + self.init() + self.base= self.get_base() + if opcion== "Victory": + self.gruber= self.get_gruber2() + elif opcion== "End": + self.gruber= self.get_gruber3() + + self.add(self.base) + self.add(self.labels) + self.add(self.gruber) + + def init(self): + w,h= G.RESOLUCION + w1,h1= (self.label1.rect.w, self.label1.rect.h) + w2,h2= (self.label2.rect.w, self.label2.rect.h) + + x= 0-w + y= h/2-h2/2 + self.label2.rect.x, self.label2.rect.y= (x,y) + self.x_final_label2= w/2-w2/2 + + x= w + y= self.label2.rect.y - h2 + self.label1.rect.x, self.label1.rect.y= (x,y) + self.x_final_label1= w/2-w1/2 + + def get_base(self): + w,h= self.get_dimensiones() + w+= 20 + h+= 20 + base= pygame.sprite.Sprite() + superficie = pygame.Surface( (w,h), flags=SRCALPHA ) + superficie.fill((0,0,0,150)) + base.image= superficie + base.rect= base.image.get_rect() + base.rect.x, base.rect.y= (G.RESOLUCION[0]/2-base.rect.w/2, self.labels[0].rect.y-10) + return base + + def get_dimensiones(self): + w,h= (0,0) + for label in self.labels: + if label.rect.w > w: w= label.rect.w + h+= label.rect.h + return (w,h) + + def get_gruber2(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber2() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def get_gruber3(self): + gruber= pygame.sprite.Sprite() + gruber.image= G.get_Imagen_Gruber3() + gruber.rect= gruber.image.get_rect() + w,h= G.RESOLUCION + gruber.rect.x, gruber.rect.y= (w/2-gruber.rect.w/2, self.base.rect.y-gruber.rect.h) + return gruber + + def update(self): + x,y,w,h= self.label2.rect + final= True + if x < self.x_final_label2: + x+= 60 + self.label2.rect.x, self.label2.rect.y= (x,y) + final= False + else: + self.label2.rect.x= self.x_final_label2 + + x,y,w,h= self.label1.rect + if x > self.x_final_label1: + x-= 60 + self.label1.rect.x, self.label1.rect.y= (x,y) + final= False + else: + self.label1.rect.x= self.x_final_label1 + + if final== True: + self.label2.rect.x= self.x_final_label2 + self.label1.rect.x= self.x_final_label1 + self.estado= False + diff --git a/Globals.py b/Globals.py index 184ea58..73556de 100644 --- a/Globals.py +++ b/Globals.py @@ -766,3 +766,57 @@ def get_afirmaciones_FGR_T0402(): ] return afirmaciones # ------------- T0402 ------------- +# ------------- T0502 ------------- +def get_Fondos_FGR_T0502(): + imagen = os.path.join(IMAGENES, "FGR_T0502", "fondo1.jpg") + fondo1 = pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) + imagen = os.path.join(IMAGENES, "FGR_T0502", "fondo2.jpg") + fondo2 = pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) + return (fondo1, fondo2) + +def get_seniales_FGR_T0502(): + return [(os.path.join(IMAGENES, "Seniales2", "Circulacion Bicicletas.png"), "Circulacion Bicicletas"), + (os.path.join(IMAGENES, "Seniales2", "No Adelantar.png"), "No Adelantar"), + (os.path.join(IMAGENES, "Seniales2", "Hospital.png"), "Hospital"), + (os.path.join(IMAGENES, "Seniales2", "Pare.png"), "Pare"), + (os.path.join(IMAGENES, "Seniales2", "Sentido Obligacion.png"), "Sentido Obligacion"), + (os.path.join(IMAGENES, "Seniales2", "Paso a Nivel.png"), "Paso a Nivel")] +# ------------- T0502 ------------- + +# ------------- T0503 ------------- +def get_letras_FGR_T0503(): # 11 + return [ + ["C","E","L","U","L","A","R", False, False, False, False], + ["H", False, False, False, False, False, False, False, False, False, False], + ["A", "T", "R", "A", "S", False, False, False, False, "B", False], + ["L", False, False, False, False, False, False, False, False, "O", False], + ["E", False, False, False, False, "M", "U", "S", "I", "C", "A"], + ["C", "O", "D", "E", "R", "A", False, "R", False, "I", False], + ["O", False, False, False, False, "T", False, "I", False, "N", False], + [False, False, False, False, False, "E", False, False, False, "A", False]] +def get_Fondos_FGR_T0503(): + imagen = os.path.join(IMAGENES, "FGR_T0503", "fondo1.jpg") + fondo1 = pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) + imagen = os.path.join(IMAGENES, "FGR_T0503", "fondo2.jpg") + fondo2 = pygame.transform.scale(pygame.image.load(imagen), RESOLUCION) + return (fondo1, fondo2) +def get_Texto_FGR_T0503(): + return [ + "1- Papa y mama lo usan cuando cae el sol para", + " ir en moto o caminar por la ruta", + "2- Cuando vamos de paseo, mamá y papá nunca", + " lo olvidan, pero en el auto, no lo usan JAMÁS!", + "3- Cuando salimos a pasear en el auto", + " siempre vamos . . . y con nuestro (7)", + "4- Me las pongo cuando uso la bicicleta", + " los patines y el skate.", + "5- Siempre que salimos a pasear mis padres lo", + " preparan, pero en el auto JAMÁS lo prueban.", + "6- Me encanta que la . . . esté alta, pero para", + " evitar distracciones, en el auto", + " papá la lleva bajita.", + "7- Siempre que voy en auto, viajo (3) y", + " utilizando mi . . .", + "8- En el auto y en mi bicicleta, debo", + " asegurarme que funcione correctamente la . . ."] + diff --git a/Grupos.py b/Grupos.py index 879d9be..c982534 100644 --- a/Grupos.py +++ b/Grupos.py @@ -124,7 +124,15 @@ class Grupos(gtk.Widget): def run_game51(self, jambutton): self.estado = None self.emit("run_game", "FGR_T0501") - + def run_game52(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0502") + def run_game53(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0503") + def run_game54(self, jambutton): + self.estado = None + self.emit("run_game", "FGR_T0504") def handle_event_Intro(self): for event in pygame.event.get(pygame.KEYDOWN): tecla = event.key @@ -410,31 +418,31 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): uno.connect(callback = main.run_game51, sonido_select = None) self.add(uno) - dos = JAMButton('', None) + dos = JAMButton('T0502', 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) + dos.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + dos.connect(callback = main.run_game52, sonido_select = None) self.add(dos) - tres = JAMButton('', None) + tres = JAMButton('T0503', 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) + tres.set_colores(colorbas = (255,255,255,255), + colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + tres.connect(callback = main.run_game53, sonido_select = None) self.add(tres) - cuatro = JAMButton('', None) + cuatro = BotonJuego()#JAMButton('T0504', 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) + #cuatro.set_colores(colorbas = (255,255,255,255), + # colorbor = (255,255,255,255), colorcara = (0,153,255,255)) + cuatro.connect(callback = main.run_game54, sonido_select = None) self.add(cuatro) sep = 50 @@ -450,3 +458,13 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): x, y = dos.get_posicion() cuatro.set_posicion( (x, y + hh + sep) ) +class BotonJuego(JAMButton): + def __init__(self): + JAMButton.__init__(self, '', None) + def set_imagen(self, origen): + imagen = pygame.image.load(origen) + self.final_unselect = imagen + self.final_select = JAMG.get_my_surface_whit_border(imagen.copy(), (255,255,255,255), 10) + self.image = self.final_unselect + self.rect = self.image.get_rect() + diff --git a/Imagenes/FGR_T0502/fondo1.jpg b/Imagenes/FGR_T0502/fondo1.jpg new file mode 100644 index 0000000..43835e5 --- /dev/null +++ b/Imagenes/FGR_T0502/fondo1.jpg Binary files differ diff --git a/Imagenes/FGR_T0502/fondo2.jpg b/Imagenes/FGR_T0502/fondo2.jpg new file mode 100644 index 0000000..aeb26db --- /dev/null +++ b/Imagenes/FGR_T0502/fondo2.jpg Binary files differ diff --git a/Imagenes/FGR_T0502/memory_logo.jpg b/Imagenes/FGR_T0502/memory_logo.jpg new file mode 100644 index 0000000..6619bac --- /dev/null +++ b/Imagenes/FGR_T0502/memory_logo.jpg Binary files differ diff --git a/Imagenes/FGR_T0503/flecha1.png b/Imagenes/FGR_T0503/flecha1.png new file mode 100644 index 0000000..1714b26 --- /dev/null +++ b/Imagenes/FGR_T0503/flecha1.png Binary files differ diff --git a/Imagenes/FGR_T0503/flecha2.png b/Imagenes/FGR_T0503/flecha2.png new file mode 100644 index 0000000..33f0e31 --- /dev/null +++ b/Imagenes/FGR_T0503/flecha2.png Binary files differ diff --git a/Imagenes/FGR_T0503/flecha3.png b/Imagenes/FGR_T0503/flecha3.png new file mode 100644 index 0000000..0b42870 --- /dev/null +++ b/Imagenes/FGR_T0503/flecha3.png Binary files differ diff --git a/Imagenes/FGR_T0503/flecha4.png b/Imagenes/FGR_T0503/flecha4.png new file mode 100644 index 0000000..cde865a --- /dev/null +++ b/Imagenes/FGR_T0503/flecha4.png Binary files differ diff --git a/Imagenes/FGR_T0503/flecha5.png b/Imagenes/FGR_T0503/flecha5.png new file mode 100644 index 0000000..0250ab2 --- /dev/null +++ b/Imagenes/FGR_T0503/flecha5.png Binary files differ diff --git a/Imagenes/FGR_T0503/flecha6.png b/Imagenes/FGR_T0503/flecha6.png new file mode 100644 index 0000000..133d916 --- /dev/null +++ b/Imagenes/FGR_T0503/flecha6.png Binary files differ diff --git a/Imagenes/FGR_T0503/flecha7.png b/Imagenes/FGR_T0503/flecha7.png new file mode 100644 index 0000000..d356d96 --- /dev/null +++ b/Imagenes/FGR_T0503/flecha7.png Binary files differ diff --git a/Imagenes/FGR_T0503/flecha8.png b/Imagenes/FGR_T0503/flecha8.png new file mode 100644 index 0000000..379d431 --- /dev/null +++ b/Imagenes/FGR_T0503/flecha8.png Binary files differ diff --git a/Imagenes/FGR_T0503/fondo1.jpg b/Imagenes/FGR_T0503/fondo1.jpg new file mode 100644 index 0000000..e9fa6eb --- /dev/null +++ b/Imagenes/FGR_T0503/fondo1.jpg Binary files differ diff --git a/Imagenes/FGR_T0503/fondo2.jpg b/Imagenes/FGR_T0503/fondo2.jpg new file mode 100644 index 0000000..4e54204 --- /dev/null +++ b/Imagenes/FGR_T0503/fondo2.jpg Binary files differ diff --git a/Imagenes/FGR_T0503/jose_memory.png b/Imagenes/FGR_T0503/jose_memory.png new file mode 100644 index 0000000..ff1993f --- /dev/null +++ b/Imagenes/FGR_T0503/jose_memory.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha1.png b/Imagenes/FGR_T0503/v_flecha1.png new file mode 100644 index 0000000..7150d98 --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha1.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha2.png b/Imagenes/FGR_T0503/v_flecha2.png new file mode 100644 index 0000000..55ba1fb --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha2.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha3.png b/Imagenes/FGR_T0503/v_flecha3.png new file mode 100644 index 0000000..7f78069 --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha3.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha4.png b/Imagenes/FGR_T0503/v_flecha4.png new file mode 100644 index 0000000..a48f42e --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha4.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha5.png b/Imagenes/FGR_T0503/v_flecha5.png new file mode 100644 index 0000000..d0cea4d --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha5.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha6.png b/Imagenes/FGR_T0503/v_flecha6.png new file mode 100644 index 0000000..eee3bb6 --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha6.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha7.png b/Imagenes/FGR_T0503/v_flecha7.png new file mode 100644 index 0000000..e099e11 --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha7.png Binary files differ diff --git a/Imagenes/FGR_T0503/v_flecha8.png b/Imagenes/FGR_T0503/v_flecha8.png new file mode 100644 index 0000000..753bdf1 --- /dev/null +++ b/Imagenes/FGR_T0503/v_flecha8.png Binary files differ diff --git a/Imagenes/FGR_T0504/Escuela Centrica.png b/Imagenes/FGR_T0504/Escuela Centrica.png new file mode 100644 index 0000000..641378d --- /dev/null +++ b/Imagenes/FGR_T0504/Escuela Centrica.png Binary files differ diff --git a/Imagenes/Fondos Nuevos/Bandera Flores.png b/Imagenes/Fondos Nuevos/Bandera Flores.png new file mode 100644 index 0000000..9a1b51d --- /dev/null +++ b/Imagenes/Fondos Nuevos/Bandera Flores.png Binary files differ diff --git a/Imagenes/Fondos Nuevos/Escuela Centrica.png b/Imagenes/Fondos Nuevos/Escuela Centrica.png new file mode 100644 index 0000000..641378d --- /dev/null +++ b/Imagenes/Fondos Nuevos/Escuela Centrica.png Binary files differ diff --git a/Imagenes/Fondos Nuevos/Plaza Flores.png b/Imagenes/Fondos Nuevos/Plaza Flores.png new file mode 100644 index 0000000..bdcfed7 --- /dev/null +++ b/Imagenes/Fondos Nuevos/Plaza Flores.png Binary files differ diff --git a/Imagenes/Fondos Nuevos/Polideportivo.png b/Imagenes/Fondos Nuevos/Polideportivo.png new file mode 100644 index 0000000..82e46d7 --- /dev/null +++ b/Imagenes/Fondos Nuevos/Polideportivo.png Binary files differ diff --git a/Imagenes/Fondos Nuevos/Rambla.png b/Imagenes/Fondos Nuevos/Rambla.png new file mode 100644 index 0000000..fa9cbb6 --- /dev/null +++ b/Imagenes/Fondos Nuevos/Rambla.png Binary files differ diff --git a/Imagenes/Fondos Nuevos/zoologico.png b/Imagenes/Fondos Nuevos/zoologico.png new file mode 100644 index 0000000..154b289 --- /dev/null +++ b/Imagenes/Fondos Nuevos/zoologico.png Binary files differ diff --git a/Imagenes/Instructivos/201.jpg b/Imagenes/Instructivos/201.jpg index b99a7a1..63fd0d9 100644 --- a/Imagenes/Instructivos/201.jpg +++ b/Imagenes/Instructivos/201.jpg Binary files differ diff --git a/Imagenes/Instructivos/202.jpg b/Imagenes/Instructivos/202.jpg index 286d8db..58410a5 100644 --- a/Imagenes/Instructivos/202.jpg +++ b/Imagenes/Instructivos/202.jpg Binary files differ diff --git a/Imagenes/Instructivos/302.jpg b/Imagenes/Instructivos/302.jpg index 894cb5e..143a1d0 100644 --- a/Imagenes/Instructivos/302.jpg +++ b/Imagenes/Instructivos/302.jpg Binary files differ diff --git a/Imagenes/cartel2.png b/Imagenes/cartel2.png deleted file mode 100644 index 2649406..0000000 --- a/Imagenes/cartel2.png +++ /dev/null Binary files differ diff --git a/Imagenes/cartel3.png b/Imagenes/cartel3.png deleted file mode 100644 index 853a076..0000000 --- a/Imagenes/cartel3.png +++ /dev/null Binary files differ diff --git a/Imagenes/fondo1.png b/Imagenes/fondo1.png deleted file mode 100644 index 810620b..0000000 --- a/Imagenes/fondo1.png +++ /dev/null Binary files differ diff --git a/Imagenes/pandilla1.png b/Imagenes/pandilla1.png index ecdc391..1eeb4bc 100644 --- a/Imagenes/pandilla1.png +++ b/Imagenes/pandilla1.png Binary files differ diff --git a/Imagenes/pandilla2.png b/Imagenes/pandilla2.png index a8d7684..2cc6996 100644 --- a/Imagenes/pandilla2.png +++ b/Imagenes/pandilla2.png Binary files differ diff --git a/Menu.py b/Menu.py index 49e6519..b35c03e 100644 --- a/Menu.py +++ b/Menu.py @@ -187,73 +187,80 @@ class ButtonsMenu(pygame.sprite.OrderedUpdates): user.connect(callback = None, sonido_select = None) self.add(user) - uno = JAMButton('', None) + uno = BotonGrupo() 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 = JAMButton('', None) + dos = BotonGrupo() 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 = JAMButton('', None) + tres = BotonGrupo() 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 = JAMButton('', None) + cuatro = BotonGrupo() 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 = JAMButton('', None) + cinco = BotonGrupo() 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) - 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 = BotonPresentacion() presenta.connect(callback = main.presentacion, sonido_select = None) self.add(presenta) sep = 50 w,h = G.RESOLUCION ww, hh = uno.get_tamanio() - uno.set_posicion( (w/2-ww/2, sep) ) - + uno.set_posicion( (w/2-ww/2, h/2 - hh) ) 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) ) + dos.set_posicion( (x + ww + sep, y) ) + tres.set_posicion( (x - ww - sep, y) ) + + cuatro.set_posicion( ((w/2 - ww) - sep, y + hh + sep) ) + cinco.set_posicion( (w/2 + sep, y + hh + sep) ) ww,hh = presenta.get_tamanio() - presenta.set_posicion( (w-ww, h-hh) ) + presenta.set_posicion( (w-ww-10, h-hh-10) ) + +class BotonGrupo(JAMButton): + def __init__(self): + JAMButton.__init__(self, '', None) + def set_imagen(self, origen): + imagen = pygame.image.load(origen) + self.final_unselect = imagen + self.final_select = JAMG.get_my_surface_whit_border(imagen.copy(), (255,255,255,255), 10) + self.image = self.final_unselect + self.rect = self.image.get_rect() + +class BotonPresentacion(JAMButton): + def __init__(self): + JAMButton.__init__(self, '', None) + self.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1) + imagen1 = os.path.join(G.IMAGENES, "pandilla1.png") + self.set_imagen(origen = imagen1) + imagen2 = os.path.join(G.IMAGENES, "pandilla2.png") + self.final_unselect = pygame.image.load(imagen1) + self.final_select = pygame.image.load(imagen2) + self.image = self.final_unselect + self.rect = self.image.get_rect() class Presentacion(pygame.sprite.OrderedUpdates): def __init__(self, main): -- cgit v0.9.1