Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/QueViaje.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/QueViaje.py')
-rw-r--r--src/QueViaje.py221
1 files changed, 221 insertions, 0 deletions
diff --git a/src/QueViaje.py b/src/QueViaje.py
new file mode 100644
index 0000000..64ca694
--- /dev/null
+++ b/src/QueViaje.py
@@ -0,0 +1,221 @@
+# -*- coding: utf-8 -*-
+
+__author__ = "rodripf"
+__date__ = "$17/10/2012 10:30:27 AM$"
+
+import sys
+sys.path.insert(0,"/home/olpc/Activities/QueViaje.activity")
+
+import pygame.camera
+
+import pygame
+from pygame.locals import *
+pygame.init()
+
+pygame.mixer.init()
+
+import os
+import random
+from SugarBar import SugarBar
+
+from threading import Timer
+
+from data.playa import Playa
+from data.ciudad import Ciudad
+from data.nieve import Nieve
+
+from sugar.activity import activity
+import sugargame.canvas
+
+class QueViaje(activity.Activity):
+ RESOLUCION = (1200, 900)
+ ACIERTOS_PARA_GANAR = 3
+ LUGAR_MUESTRA = (10,10)
+
+ def __init__(self, handle):
+ activity.Activity.__init__(self, handle)
+
+ self.camara = True
+ self.mostrandoPista = False
+ self.mostrandoInfo = False
+ self.mostrandoPresentacion = False
+
+ self.cosas = [] #cosas que se estan mostrando
+ self.sb = SugarBar();
+
+ self.puntos = 0 #numero de aciertos
+ self.nivel = 0
+
+ self.sonidoError = pygame.mixer.Sound("audio/error.ogg")
+ self.sonidoAcierto = pygame.mixer.Sound("audio/acierto.ogg")
+ self.sonidoVictoria = pygame.mixer.Sound("audio/victoria.ogg")
+ self.sonidoPasraPantalla = pygame.mixer.Sound("audio/pasarPantalla.ogg")
+
+ self.IMGGenial = pygame.image.load("carteles/genial.png")
+ self.IMGBien = pygame.image.load("carteles/bien.png")
+ self.IMGGanaste = pygame.image.load("carteles/ganaste.png")
+
+ self.pistaActual = 1
+ self.pistas = []
+ self.pistas.append("carteles/conoces_este_lugar.png")
+ self.pistas.append("carteles/que_objeto_llevarias.png")
+ self.pistas.append("carteles/que_te_pondrias_en_las_piernas.png")
+ self.pistas.append("carteles/que_te_pondrias_en_los_pies.png")
+ self.pistas.append("carteles/que_te_pondrias_para_ir_a_este_lugar.png")
+ self.pistas.append("carteles/te_parece_que_hace_frio_o_calor.png")
+
+ self.info = []
+ self.info.append("carteles/Presentacion.png")
+ self.info.append("carteles/info_verano.png")
+ self.info.append("carteles/info_nieve.png")
+ self.info.append("carteles/info_ciudad.png")
+
+
+ #canvas
+ self.canv = sugargame.canvas.PygameCanvas(self)
+ self.set_canvas(self.canv)
+ self.canv.run_pygame(self.iniciar)
+
+
+
+ def iniciar(self):
+ self.screen = pygame.display.set_mode(self.RESOLUCION)
+ pygame.display.toggle_fullscreen()
+ pygame.mouse.set_visible(False)
+
+ self.mainLoop()
+
+ def mainLoop(self):
+ self.pl = Playa(self.screen, (0, 0))
+ self.musicaFondo()
+ going = True
+ while going:
+ events = pygame.event.get()
+
+
+ if self.camara:
+ self.sb.blitCameraImage(self.screen, (10,600))
+
+ result = self.sb.getAndAnalize()
+
+ for dato in result:
+ self.leido(dato)
+
+ pygame.display.update()
+ pygame.event.pump()
+ for e in events:
+ if e.type == QUIT or (e.type == KEYDOWN and e.key == pygame.K_ESCAPE):
+ self.sb.stop()
+ pygame.mixer.music.stop()
+ going = False
+ sys.exit()
+ if e.type == KEYDOWN and e.key == pygame.K_SPACE:
+
+ self.camara = not self.camara
+ if not self.camara:
+ self.pasarArriba()
+ elif e.type == KEYDOWN and e.key == K_p:
+ self.mostrandoPista = not self.mostrandoPista
+ if self.mostrandoPista:
+ self.mostrarPista()
+ else:
+ self.pasarArriba()
+#
+ elif e.type == KEYDOWN and e.key == K_i:
+ self.mostrandoInfo = not self.mostrandoInfo
+ if self.mostrandoInfo:
+ self.mostrarInfo()
+ else:
+ self.pasarArriba()
+ elif e.type == KEYDOWN and e.key == K_q:
+ self.mostrandoPresentacion = not self.mostrandoPresentacion
+ if self.mostrandoPresentacion:
+ self.mostrarPresentacion()
+ else:
+ self.pasarArriba()
+
+ def mostrarCosa(self, img):
+ cosa = pygame.image.load(os.path.join("cosas", img + ".jpg")).convert()
+ self.cosas.append(cosa)
+ self.screen.blit(cosa, self.LUGAR_MUESTRA)
+ t = Timer(3, self.pasarArriba)
+ t.start()
+
+ def pasarArriba(self):
+ self.pl.repaint()
+ i = 1
+ for c in self.cosas:
+ i += 1
+ self.screen.blit(c, (i * 200 + 10, 10))
+
+ def cambiarLugar(self, lugar):
+ if lugar == 0:
+ self.pl = Playa(self.screen, (0, 0))
+ elif lugar == 1:
+ self.pl = Nieve(self.screen, (0, 0))
+ elif lugar == 2:
+ self.pl = Ciudad(self.screen, (0, 0))
+ elif lugar == 3:
+ self.sonidoVictoria.play()
+ self.screen.blit(self.IMGGanaste, (50, 300))
+
+
+
+ self.pl.cargarDatos()
+ self.puntos = 0
+ self.cosas = []
+ self.sonidoPasraPantalla.play()
+
+
+
+
+ def leido(self, dato):
+ if self.pl.chequear(dato):
+ self.mostrarCosa(dato)
+ self.acierto()
+ self.puntos += 1
+ if self.puntos >= self.ACIERTOS_PARA_GANAR:
+ self.nivel += 1
+ t = Timer(3, self.cambiarLugar, [self.nivel,])
+ t.start()
+ else:
+ self.error()
+
+
+ def musicaFondo(self):
+ pygame.mixer.music.load("audio/fondo.ogg")
+ pygame.mixer.music.set_volume(0.6)
+ pygame.mixer.music.play(-1)
+
+ def error(self):
+ self.sonidoError.play()
+
+ def acierto(self):
+ self.sonidoAcierto.play()
+ r = random.randint(0, 1)
+ if r==0:
+ self.screen.blit(self.IMGGenial, (50, 300))
+ else:
+ self.screen.blit(self.IMGBien, (50, 300))
+ t = Timer(3, self.pasarArriba)
+ t.start()
+
+ def mostrarPista(self):
+ self.screen.blit(pygame.image.load(self.pistas[self.pistaActual]), (0,0))
+ self.pistaActual += 1
+ if self.pistaActual > len(self.pistas) - 1:
+ self.pistaActual = 0
+
+
+ def mostrarInfo(self):
+ self.screen.blit(pygame.image.load(self.info[self.nivel + 1]),(0,0))
+
+ def mostrarPresentacion(self):
+ self.screen.blit(pygame.image.load(self.info[0]), (0,0))
+
+
+
+if __name__ == "__main__":
+ qv = QueViaje()
+
+ qv.mainLoop()