class ControlAlarma(pygame.sprite.OrderedUpdates):
    def __init__(self):
        pygame.sprite.OrderedUpdates.__init__(self)
        self.base = None
        self.etiqueta = None
        self.etiqueta_tiempo = None

        self.boton_active = None
        self.botonminutos_down = None
        self.botonminutos_up = None
        self.botonhoras_down = None
        self.botonhoras_up = None

        self.active = False
        self.horas = 12
        self.minutos = 00

        self.load()

        self.botonminutos_up.connect(callback=self.next)
        self.botonminutos_down.connect(callback=self.back)

        self.botonhoras_up.connect(callback=self.nexthoras)
        self.botonhoras_down.connect(callback=self.backhoras)

    def set_active(self, valor):
        if valor:
            self.active = True
            self.boton_active.set_imagen(origen=JAMG.get_icon_ok(),
                                         tamanio=(20, 20))
        elif not valor:
            self.active = False
            self.boton_active.set_imagen(origen=JAMG.get_icon_cancel(),
                                         tamanio=(20, 20))

    def next(self, button=None):
        if self.minutos >= 59:
            self.minutos = 0
            self.horas += 1
        elif self.minutos < 59:
            self.minutos += 1
        if self.horas >= 24:
            self.horas = 0
        self.etiqueta_tiempo.set_text(texto="%s:%s" %
                                      (self.horas, self.minutos))
        self.set_active(False)

    def back(self, button=None):
        if self.minutos <= 1:
            self.minutos = 59
            self.horas -= 1
        elif self.minutos > 0:
            self.minutos -= 1
        if self.horas < 0:
            self.horas = 23
        self.etiqueta_tiempo.set_text(texto="%s:%s" %
                                      (self.horas, self.minutos))
        self.set_active(False)

    def nexthoras(self, button=None):
        if self.horas >= 23:
            self.horas = 0
        elif self.horas < 23:
            self.horas += 1
        self.etiqueta_tiempo.set_text(texto="%s:%s" %
                                      (self.horas, self.minutos))
        self.set_active(False)

    def backhoras(self, button=None):
        if self.horas <= 23 and self.horas > 0:
            self.horas -= 1
        elif self.horas <= 0:
            self.horas = 23
        self.etiqueta_tiempo.set_text(texto="%s:%s" %
                                      (self.horas, self.minutos))
        self.set_active(False)

    def load(self):
        a, b, c = JAMG.get_estilo_papel_quemado()
        self.etiqueta = Etiqueta("Alarma")
        self.etiqueta.set_colores(colorbas=a, colorbor=b, colorcara=c)
        self.etiqueta.set_tamanios(tamanio=(0, 0), grosorbor=1, espesor=1)
        self.etiqueta.set_text(tamanio=24)

        self.etiqueta_tiempo = Etiqueta("%s:%s" % (self.horas, self.minutos))
        self.etiqueta_tiempo.set_tamanios(tamanio=(0, 0),
                                          grosorbor=1,
                                          espesor=1)
        self.etiqueta_tiempo.set_text(tamanio=40)

        self.botonminutos_down = JAMButton("", "down.png")
        self.botonminutos_down.set_imagen(origen="down.png", tamanio=(20, 20))
        self.botonminutos_down.set_colores(colorbas=a, colorbor=b, colorcara=c)
        self.botonminutos_down.set_tamanios(tamanio=(0, 0),
                                            grosorbor=1,
                                            espesor=1)

        self.botonminutos_up = JAMButton("", "up.png")
        self.botonminutos_up.set_imagen(origen="up.png", tamanio=(20, 20))
        self.botonminutos_up.set_colores(colorbas=a, colorbor=b, colorcara=c)
        self.botonminutos_up.set_tamanios(tamanio=(0, 0),
                                          grosorbor=1,
                                          espesor=1)

        self.botonhoras_down = JAMButton("", "down.png")
        self.botonhoras_down.set_imagen(origen="down.png", tamanio=(20, 20))
        self.botonhoras_down.set_colores(colorbas=a, colorbor=b, colorcara=c)
        self.botonhoras_down.set_tamanios(tamanio=(0, 0),
                                          grosorbor=1,
                                          espesor=1)

        self.botonhoras_up = JAMButton("", "up.png")
        self.botonhoras_up.set_imagen(origen="up.png", tamanio=(20, 20))
        self.botonhoras_up.set_colores(colorbas=a, colorbor=b, colorcara=c)
        self.botonhoras_up.set_tamanios(tamanio=(0, 0), grosorbor=1, espesor=1)

        self.boton_active = JAMButton("", JAMG.get_icon_ok())
        self.boton_active.set_imagen(origen=JAMG.get_icon_ok(),
                                     tamanio=(20, 20))
        self.boton_active.set_colores(colorbas=a, colorbor=b, colorcara=c)
        self.boton_active.set_tamanios(tamanio=(0, 0), grosorbor=1, espesor=1)

        self.base = self.get_base(color=b, tamanio=self.geometria())
        w = self.get_tamanio()[0] - sep * 2
        self.etiqueta_tiempo.set_tamanios(tamanio=(w, 0),
                                          grosorbor=1,
                                          espesor=1)
        self.add([
            self.base, self.etiqueta, self.etiqueta_tiempo,
            self.botonminutos_up, self.botonminutos_down, self.botonhoras_up,
            self.botonhoras_down, self.boton_active
        ])
        self.set_posicion(punto=(0, 0))

    def geometria(self):
        ancho, alto = (200, 130)
        return (ancho, alto)

    def get_base(self, color=(100, 100, 100, 1), tamanio=(100, 100)):
        base = pygame.sprite.Sprite()
        superficie = pygame.Surface(tamanio, flags=HWSURFACE)
        superficie.fill(color)
        base.image = superficie
        base.rect = base.image.get_rect()
        return base

    def set_posicion(self, punto=(0, 0)):
        x, y = punto
        self.base.rect.x, self.base.rect.y = (x, y)
        x += sep
        y += sep

        # ---
        xx = self.base.rect.x + self.base.rect.w / 2 - self.etiqueta.get_tamanio(
        )[0] / 2
        self.etiqueta.set_posicion(punto=(xx, y))

        y += self.etiqueta.get_tamanio()[1] + sep
        xx = self.base.rect.x + self.base.rect.w / 2 - self.etiqueta_tiempo.get_tamanio(
        )[0] / 2
        self.etiqueta_tiempo.set_posicion(punto=(xx, y))
        # ---

        x, y = self.etiqueta_tiempo.get_posicion()
        xx, hh = self.botonminutos_up.get_tamanio()
        x += self.etiqueta_tiempo.get_tamanio(
        )[0] - self.botonminutos_up.get_tamanio()[0]
        y -= self.botonminutos_up.get_tamanio(
        )[1] - self.etiqueta_tiempo.get_tamanio()[1] / 2
        self.botonminutos_up.set_posicion(punto=(x, y))

        x, y = self.botonminutos_up.get_posicion()
        y += self.botonminutos_up.get_tamanio()[1]
        self.botonminutos_down.set_posicion(punto=(x, y))

        x, y = self.etiqueta_tiempo.get_posicion()
        xx, hh = self.botonhoras_up.get_tamanio()
        y -= self.botonhoras_up.get_tamanio(
        )[1] - self.etiqueta_tiempo.get_tamanio()[1] / 2
        self.botonhoras_up.set_posicion(punto=(x, y))

        x, y = self.botonhoras_up.get_posicion()
        y += self.botonhoras_up.get_tamanio()[1]
        self.botonhoras_down.set_posicion(punto=(x, y))

        x, y = self.etiqueta_tiempo.get_posicion()
        w, h = self.etiqueta_tiempo.get_tamanio()
        ww, yy = self.boton_active.get_tamanio()
        x += w / 2 - ww / 2
        y += sep + h
        self.boton_active.set_posicion(punto=(x, y))

    def get_tamanio(self):
        return (self.base.rect.w, self.base.rect.h)

    def get_time(self):
        return (self.horas, self.minutos)
Exemple #2
0
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.recuadro_select = None
        self.progress_reloj = None
        self.decorativas = None
        self.sonidos_reloj = None
        self.user = None
        self.load_sprites()

    def get_recuadro_select(self, tamanio):
        ''' Un Sprite para seleccionar las señales. '''
        sup = JAMG.get_Rectangulo_Transparente(tamanio)
        sup = JAMG.get_my_surface_whit_border(sup, JAMG.get_naranja1(), 10)
        self.recuadro_select = pygame.sprite.Sprite()
        self.recuadro_select.image = sup
        self.recuadro_select.rect = self.recuadro_select.image.get_rect()

    def get_labels_carteles(self, texto, centro):
        ''' Etiquetas sobre los carteles.'''
        palabras = texto.split(" ")
        renglon1 = "%s %s" % (palabras[0], palabras[1])
        label = JAMLabel(renglon1)
        label.set_text(color=JAMG.get_blanco())
        fuente, tamanio = JAMG.get_Font_fawn()
        label.set_font_from_file(fuente, tamanio=30)
        x, y = centro
        w, h = label.get_tamanio()
        label.set_posicion(punto=(x - w / 2, y - h))
        self.add(label)
        if len(palabras) > 2:
            renglon2 = ""
            ww, hh = label.get_tamanio()
            for palabra in palabras[2:]:
                renglon2 += palabra + " "
            label = JAMLabel(renglon2)
            label.set_text(color=JAMG.get_blanco())
            fuente, tamanio = JAMG.get_Font_fawn()
            label.set_font_from_file(fuente, tamanio=30)
            w, h = label.get_tamanio()
            label.set_posicion(punto=(x - w / 2, y + hh - h))
            self.add(label)
        else:
            label.set_posicion(punto=(x - w / 2, y))

    def load_sprites(self):
        imagen = self.main.usuario['personaje']
        self.user = JAMButton(self.main.usuario['nombre'], None)
        self.user.set_imagen(origen=imagen, tamanio=(60, 60))
        self.user.set_colores(colorbas=(0, 153, 255, 255),
                              colorbor=(0, 153, 255, 255),
                              colorcara=(0, 153, 255, 255))
        self.user.set_tamanios(tamanio=(80, 80),
                               grosorbor=1,
                               detalle=1,
                               espesor=1)
        ww, hh = self.user.get_tamanio()
        w, h = G.RESOLUCION
        self.user.set_posicion(punto=(w - ww - 10, 25))
        self.user.connect(callback=None, sonido_select=None)
        self.add(self.user)

        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=(2, 30), duracion=3)
        self.add(self.cronometro)

        self.progress_reloj = ProgressBar(self.main)
        self.add(self.progress_reloj)

        self.decorativas = ImagenesDecorativas(self)
        self.add(self.decorativas)

    def actualiza_puntos(self):
        puntos = "%s" % (self.main.puntos)
        self.puntaje.set_text(texto=puntos)
        x, y = self.user.get_posicion()
        w, h = self.puntaje.get_tamanio()
        x -= w + 10
        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()