Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflavio <fdanesse@gmail.com>2012-04-05 23:29:36 (GMT)
committer flavio <fdanesse@gmail.com>2012-04-05 23:29:36 (GMT)
commitf0f49e4e77dd4d3d97ece8b04e88690c80224dcf (patch)
tree3de92e54475899b30e9617a75db7875f188df58f
parentc6fbb6b5b652f63bdd4e163aa2e1cda5b488748b (diff)
Crucigrama
-rw-r--r--Derecho_a_Transitar.py27
-rw-r--r--FGR_T0101.py2
-rw-r--r--FGR_T0102.py2
-rw-r--r--FGR_T0201.py2
-rw-r--r--FGR_T0202.py2
-rw-r--r--FGR_T0301.py2
-rw-r--r--FGR_T0302.py2
-rw-r--r--FGR_T0303.py2
-rw-r--r--FGR_T0401.py2
-rw-r--r--FGR_T0402.py2
-rw-r--r--FGR_T0501.py2
-rw-r--r--FGR_T0502.py772
-rw-r--r--FGR_T0503.py945
-rw-r--r--FGR_T0504.py937
-rw-r--r--Globals.py54
-rw-r--r--Grupos.py44
-rw-r--r--Imagenes/FGR_T0502/fondo1.jpgbin0 -> 157394 bytes
-rw-r--r--Imagenes/FGR_T0502/fondo2.jpgbin0 -> 109135 bytes
-rw-r--r--Imagenes/FGR_T0502/memory_logo.jpgbin0 -> 7323 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha1.pngbin0 -> 1350 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha2.pngbin0 -> 1438 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha3.pngbin0 -> 1461 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha4.pngbin0 -> 1400 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha5.pngbin0 -> 1437 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha6.pngbin0 -> 1475 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha7.pngbin0 -> 1428 bytes
-rw-r--r--Imagenes/FGR_T0503/flecha8.pngbin0 -> 1491 bytes
-rw-r--r--Imagenes/FGR_T0503/fondo1.jpgbin0 -> 127445 bytes
-rw-r--r--Imagenes/FGR_T0503/fondo2.jpgbin0 -> 86414 bytes
-rw-r--r--Imagenes/FGR_T0503/jose_memory.pngbin0 -> 38965 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha1.pngbin0 -> 1367 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha2.pngbin0 -> 1452 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha3.pngbin0 -> 1471 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha4.pngbin0 -> 1410 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha5.pngbin0 -> 1431 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha6.pngbin0 -> 1482 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha7.pngbin0 -> 1426 bytes
-rw-r--r--Imagenes/FGR_T0503/v_flecha8.pngbin0 -> 1495 bytes
-rw-r--r--Imagenes/FGR_T0504/Escuela Centrica.pngbin0 -> 709453 bytes
-rw-r--r--Imagenes/Fondos Nuevos/Bandera Flores.pngbin0 -> 692462 bytes
-rw-r--r--Imagenes/Fondos Nuevos/Escuela Centrica.pngbin0 -> 709453 bytes
-rw-r--r--Imagenes/Fondos Nuevos/Plaza Flores.pngbin0 -> 738733 bytes
-rw-r--r--Imagenes/Fondos Nuevos/Polideportivo.pngbin0 -> 673035 bytes
-rw-r--r--Imagenes/Fondos Nuevos/Rambla.pngbin0 -> 866362 bytes
-rw-r--r--Imagenes/Fondos Nuevos/zoologico.pngbin0 -> 899302 bytes
-rw-r--r--Imagenes/Instructivos/201.jpgbin249246 -> 239610 bytes
-rw-r--r--Imagenes/Instructivos/202.jpgbin208279 -> 207461 bytes
-rw-r--r--Imagenes/Instructivos/302.jpgbin200942 -> 201534 bytes
-rw-r--r--Imagenes/cartel2.pngbin19712 -> 0 bytes
-rw-r--r--Imagenes/cartel3.pngbin7035 -> 0 bytes
-rw-r--r--Imagenes/fondo1.pngbin509370 -> 0 bytes
-rw-r--r--Imagenes/pandilla1.pngbin25225 -> 24994 bytes
-rw-r--r--Imagenes/pandilla2.pngbin21166 -> 21199 bytes
-rw-r--r--Menu.py63
54 files changed, 2802 insertions, 60 deletions
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):