diff options
author | flavio <fdanesse@gmail.com> | 2012-04-07 18:04:58 (GMT) |
---|---|---|
committer | flavio <fdanesse@gmail.com> | 2012-04-07 18:04:58 (GMT) |
commit | b9b2953f2c9d418d3420311fc0c092328a39f13e (patch) | |
tree | 4d5f5ec86827eadf2889f0e070705f12bb0ce90b /FGR_T0503.py | |
parent | b4e54fc9a2b3955689e48c02402d8090516ccae1 (diff) |
Correcciones
Diffstat (limited to 'FGR_T0503.py')
-rw-r--r-- | FGR_T0503.py | 810 |
1 files changed, 0 insertions, 810 deletions
diff --git a/FGR_T0503.py b/FGR_T0503.py deleted file mode 100644 index f06d00c..0000000 --- a/FGR_T0503.py +++ /dev/null @@ -1,810 +0,0 @@ -#!/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, usuario): - gtk.Widget.__init__(self) - self.usuario = usuario - 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) - from Globals import Controles - 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("503") - 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) - -# -------- 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 - |