# -*- 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()