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