コード例 #1
0
 def cambiar_animacion(self):
     if len(engine.obtener_director().escena_actual.atacantes) > 0 and self.cuadros != self.cuadros_ataque:
         self.cuadros = self.cuadros_ataque
         self.actual = 0
     elif len(engine.obtener_director().escena_actual.atacantes) == 0 and self.cuadros != self.cuadros_normal:
         self.cuadros = self.cuadros_normal
         self.actual = 0
コード例 #2
0
 def actualizar(self, tiempo):
     self.objetivo.rect.centerx = self.cx
     self.objetivo.rect.centery = self.cy
     if len(engine.obtener_director().escena_actual.atacantes) > 0:
         obj = None
         for a in engine.obtener_director().escena_actual.atacantes:
             if self.objetivo.i == a.i:
                 obj = a
                 break
         for a in engine.obtener_director().escena_actual.atacantes:
             if (
                 self.objetivo.i == a.i
                 and a.rect.centerx - self.objetivo.rect.centerx < obj.rect.centerx - self.objetivo.rect.centerx
             ):
                 obj = a
         if obj and not self.levantado:
             if obj.j == self.objetivo.j:
                 self.aplastar()
     if self.objetivo.encontro:
         self.objetivo.imagen = engine.pygame.transform.smoothscale(self.imagen_original, (int(self.w), int(self.h)))
         self.objetivo.rect.width = int(self.w) / 2
         self.objetivo.rect.height = int(self.h)
         # self.objetivo.rect.centerx = 50 + engine.obtener_director().escena_actual.ancho_cuadro * (self.objetivo.j + 1) - engine.obtener_director().escena_actual.ancho_cuadro / 2
         # self.objetivo.rect.bottom = 120 + engine.obtener_director().escena_actual.alto_cuadro * (self.objetivo.i + 1)
         i = 0
         for r in self.objetivo.grilla.cuadros:
             r.width = int(self.w) / 2
             r.height = int(self.h)
             r.left = i * int(self.w) / 2
             i += 1
コード例 #3
0
 def actualizar(self, tiempo):
     self.objetivo.rect.centerx = self.cx
     self.objetivo.rect.centery = self.cy
     if len(engine.obtener_director().escena_actual.atacantes) > 0:
         obj = None
         for a in engine.obtener_director().escena_actual.atacantes:
             if self.objetivo.i == a.i:
                 obj = a
                 break
         for a in engine.obtener_director().escena_actual.atacantes:
             if self.objetivo.i == a.i and a.rect.centerx - self.objetivo.rect.centerx < obj.rect.centerx - self.objetivo.rect.centerx:
                 obj = a                
         if obj and not self.levantado:
             if obj.j == self.objetivo.j:
                 self.aplastar()
     if self.objetivo.encontro:
         self.objetivo.imagen = engine.pygame.transform.smoothscale(self.imagen_original, (int(self.w), int(self.h)))
         self.objetivo.rect.width = int(self.w) / 2
         self.objetivo.rect.height = int(self.h)
         #self.objetivo.rect.centerx = 50 + engine.obtener_director().escena_actual.ancho_cuadro * (self.objetivo.j + 1) - engine.obtener_director().escena_actual.ancho_cuadro / 2
         #self.objetivo.rect.bottom = 120 + engine.obtener_director().escena_actual.alto_cuadro * (self.objetivo.i + 1)
         i = 0
         for r in self.objetivo.grilla.cuadros:
             r.width = int(self.w) / 2
             r.height = int(self.h)
             r.left = i * int(self.w) / 2
             i += 1
コード例 #4
0
 def verificar_eventos(self, evento):
     if self.cuadro_eleccion:
         self.cuadro_eleccion.verificar_eventos(evento)
     if not self.menu_pausa:
         if self.boton_menu:
             self.boton_menu.verificar_eventos(evento)
         if self.seleccion:
             self.seleccion.verificar_eventos(evento)
         if evento.type == locals.QUIT:
             engine.obtener_director().salir()
         elif evento.type == locals.MOUSEBUTTONDOWN and evento.button == 1 and self.jugando:
             if self.seleccion and not self.barra_control.imagen.get_rect().collidepoint(
                 evento.pos[0], evento.pos[1]
             ):
                 self.plantar(evento.pos)
                 self.seleccion = None
             else:
                 for sol in self.solsitos:
                     if sol.rect.collidepoint(evento.pos[0], evento.pos[1]):
                         sol.recolectar()
         elif evento.type == locals.MOUSEBUTTONDOWN and evento.button == 3 and self.jugando:
             if self.seleccion:
                 self.seleccion.slot.aclarar()
                 self.seleccion = None
         if self.barra_control:
             self.barra_control.verificar_eventos(evento)
         if self.cuadro_lampa:
             self.cuadro_lampa.verificar_eventos(evento)
     else:
         self.menu_pausa.verificar_eventos(evento)
コード例 #5
0
 def reducir(self, tiempo=1.6):
     engine.obtener_director().escena_actual.tweener.addTween(
         self,
         w=196,
         h=114,
         tweenTime=tiempo,
         tweenType=engine.pytweener.Easing.Linear.easeIn,
         onCompleteFunction=self.agrandar)
コード例 #6
0
 def actualizar(self, tiempo):
     self.objetivo.imagen = engine.pygame.transform.smoothscale(self.imagen_original, (int(self.w), int(self.h)))
     self.objetivo.rect.width = int(self.w)
     self.objetivo.rect.height = int(self.h)
     self.objetivo.rect.centerx = 50 + engine.obtener_director().escena_actual.ancho_cuadro * (self.objetivo.j + 1) - engine.obtener_director().escena_actual.ancho_cuadro / 2
     self.objetivo.rect.bottom = 120 + engine.obtener_director().escena_actual.alto_cuadro * (self.objetivo.i + 1)
     self.objetivo.grilla.cuadros[0].width = int(self.w)
     self.objetivo.grilla.cuadros[0].height = int(self.h)
コード例 #7
0
 def actualizar(self, tiempo):
     if engine.pygame.time.get_ticks() - self.crono_i_p > self.intervalo_produccion * 1000:
         self.crono_i_p = engine.pygame.time.get_ticks()
         xfinal = random.randint(self.objetivo.rect.left, self.objetivo.rect.right)
         yfinal = self.objetivo.rect.top - (self.objetivo.rect.height / 4)
         x, y = self.objetivo.rect.center
         sol_producido = Sol(x, y, y)
         engine.obtener_director().escena_actual.solsitos.append(sol_producido)
         engine.obtener_director().escena_actual.tweener.addTween(sol_producido, x = xfinal, y = yfinal, tweenTime = 0.3, tweenType = engine.pytweener.Easing.Linear.easeIn)
コード例 #8
0
 def cambiar_animacion(self):
     if len(engine.obtener_director().escena_actual.atacantes
            ) > 0 and self.cuadros != self.cuadros_ataque:
         self.cuadros = self.cuadros_ataque
         self.actual = 0
     elif len(engine.obtener_director().escena_actual.atacantes
              ) == 0 and self.cuadros != self.cuadros_normal:
         self.cuadros = self.cuadros_normal
         self.actual = 0
コード例 #9
0
 def verificar_eventos(self, evento):
     if self.cuadro_creacion:
         self.cuadro_creacion.verificar_eventos(evento)
     elif self.cuadro_quien:
         self.cuadro_quien.verificar_eventos(evento)
     else:
         self.boton_ad.verificar_eventos(evento)
         self.bienvenida.verificar_eventos(evento)
     if evento.type == locals.MOUSEBUTTONDOWN and evento.button == 1:
         if self.rect_clic.collidepoint(evento.pos[0], evento.pos[1]):
             engine.obtener_director().salir()
コード例 #10
0
 def verificar_eventos(self, evento):
     if self.cuadro_creacion: 
         self.cuadro_creacion.verificar_eventos(evento)
     elif self.cuadro_quien: 
         self.cuadro_quien.verificar_eventos(evento)
     else:
         self.boton_ad.verificar_eventos(evento)
         self.bienvenida.verificar_eventos(evento)
     if evento.type == locals.MOUSEBUTTONDOWN and evento.button == 1:
         if self.rect_clic.collidepoint(evento.pos[0], evento.pos[1]):
             engine.obtener_director().salir()
コード例 #11
0
 def actualizar(self, tiempo):
     if engine.pygame.time.get_ticks() - self.crono_i_p > self.intervalo_produccion * 1000:
         self.crono_i_p = engine.pygame.time.get_ticks()
         xfinal = random.randint(self.objetivo.rect.left, self.objetivo.rect.right)
         yfinal = self.objetivo.rect.top - (self.objetivo.rect.height / 4)
         x, y = self.objetivo.rect.center
         sol_producido = Sol(x, y, y)
         engine.obtener_director().escena_actual.solsitos.append(sol_producido)
         engine.obtener_director().escena_actual.tweener.addTween(
             sol_producido, x=xfinal, y=yfinal, tweenTime=0.3, tweenType=engine.pytweener.Easing.Linear.easeIn
         )
コード例 #12
0
 def __init__(self, i, j):
     self.i = i
     self.j = j
     self.grilla = Grilla(self.url_imagen, self.cantidad[0], self.cantidad[1])
     self.rect = engine.pygame.Rect(0, 0, self.grilla.ancho, self.grilla.alto)
     self.rect.right = 50 + engine.obtener_director().escena_actual.ancho_cuadro * (j + 1)
     self.rect.bottom = 120 + engine.obtener_director().escena_actual.alto_cuadro * (i + 1)
     self.intervalo_animacion = 0.15
     self.crono_i_a = engine.pygame.time.get_ticks()
     self.salud = 100
     self.actual = 0
     self.habilidades = []
コード例 #13
0
 def aplastar(self):
     self.levantado = True
     finalcx = self.cx + 65
     finalcy = self.cy - 120
     engine.obtener_director().escena_actual.tweener.addTween(
         self,
         cx=finalcx,
         cy=finalcy,
         tweenTime=0.4,
         tweenType=engine.pytweener.Easing.Linear.easeIn,
         onCompleteFunction=self.bajar,
     )
コード例 #14
0
 def actualizar(self, tiempo):
     self.objetivo.imagen = engine.pygame.transform.smoothscale(self.imagen_original, (int(self.w), int(self.h)))
     self.objetivo.rect.width = int(self.w)
     self.objetivo.rect.height = int(self.h)
     self.objetivo.rect.centerx = (
         50
         + engine.obtener_director().escena_actual.ancho_cuadro * (self.objetivo.j + 1)
         - engine.obtener_director().escena_actual.ancho_cuadro / 2
     )
     self.objetivo.rect.bottom = 120 + engine.obtener_director().escena_actual.alto_cuadro * (self.objetivo.i + 1)
     self.objetivo.grilla.cuadros[0].width = int(self.w)
     self.objetivo.grilla.cuadros[0].height = int(self.h)
コード例 #15
0
 def actualizar(self, tiempo):
     if self.salud <= 0:
         if engine.obtener_director().escena_actual.tablero[self.i][self.j].__class__ == Nenufar and engine.obtener_director().escena_actual.tablero[self.i][self.j].contenido:
             engine.obtener_director().escena_actual.tablero[self.i][self.j].contenido = None
         else:
             engine.obtener_director().escena_actual.tablero[self.i][self.j] = 0
     if engine.pygame.time.get_ticks() - self.crono_i_a > self.intervalo_animacion * 1000:
         self.crono_i_a = engine.pygame.time.get_ticks()
         self.actual += 1
         if self.actual > len(self.cuadros) - 1:
             self.actual = 0
     self.actualizar_habilidades(tiempo)
コード例 #16
0
 def adventure(self):
     # belsprout = Carta((0, 0, 62, 87), LanzaGuisantes, 100, "tierra", 8)
     # gira = Carta((65, 0, 62, 87), Girasol, 50, "tierra", 5)
     # gato = Carta((195, 488, 62, 87), ColaDeGato, 225, "agua", 12)
     # nenufar = Carta((0, 195, 62, 87), Nenufar, 25, "agua", 6)
     e = Supervivencia()
     for c in engine.obtener_usuario().plantas:
         e.cuadro_eleccion.agregar_carta(c)
     engine.obtener_director().set_escena(e)
     engine.obtener_director().escena_actual.imagen_cartas = engine.cargar_imagen("cartas.jpg")
     engine.obtener_director().escena_actual.imagen_charge = engine.cargar_imagen("charge.png", True)
     engine.obtener_director().escena_actual.imagen_nosoles = engine.cargar_imagen("nosoles.png", True)
コード例 #17
0
 def actualizar(self, tiempo):
     if engine.pygame.time.get_ticks() - self.crono_i_m > self.intervalo_movimiento * 1000:
         self.crono_i_m = engine.pygame.time.get_ticks()
         self.mover()
     if engine.pygame.time.get_ticks() - self.crono_i_a > self.intervalo_animacion * 1000:
         self.crono_i_a = engine.pygame.time.get_ticks()
         self.actual += 1
         if self.actual > len(self.cuadros) - 1:
             self.actual = 0
     if self.rect.left >= 1200:
         engine.obtener_director().escena_actual.balas.remove(self)
     self.hacer_danio()
コード例 #18
0
 def adventure(self):
     #belsprout = Carta((0, 0, 62, 87), LanzaGuisantes, 100, "tierra", 8)
     #gira = Carta((65, 0, 62, 87), Girasol, 50, "tierra", 5)
     #gato = Carta((195, 488, 62, 87), ColaDeGato, 225, "agua", 12)
     #nenufar = Carta((0, 195, 62, 87), Nenufar, 25, "agua", 6)
     e = Supervivencia()
     for c in engine.obtener_usuario().plantas:
         e.cuadro_eleccion.agregar_carta(c)
     engine.obtener_director().set_escena(e)
     engine.obtener_director().escena_actual.imagen_cartas = engine.cargar_imagen("cartas.jpg")
     engine.obtener_director().escena_actual.imagen_charge = engine.cargar_imagen("charge.png", True)
     engine.obtener_director().escena_actual.imagen_nosoles = engine.cargar_imagen("nosoles.png", True)
コード例 #19
0
 def __init__(self, objetivo, *args):
     Habilidad.__init__(self, objetivo)
     self.w = self.objetivo.imagen.get_width()
     self.h = self.objetivo.imagen.get_height()
     self.imagen_original = self.objetivo.imagen
     engine.obtener_director().escena_actual.tweener.addTween(
         self,
         w=135,
         h=135,
         tweenTime=2.0,
         tweenType=engine.pytweener.Easing.Linear.easeIn,
         onCompleteFunction=self.matar,
     )
コード例 #20
0
 def bajar(self):
     self.objetivo.encontro = True
     engine.obtener_director().escena_actual.tweener.addTween(
         self, w=205, h=90, tweenTime=0.6, tweenType=engine.pytweener.Easing.Linear.easeIn
     )
     finalcy = self.cy + 120
     engine.obtener_director().escena_actual.tweener.addTween(
         self,
         cy=finalcy,
         tweenTime=0.6,
         tweenType=engine.pytweener.Easing.Linear.easeIn,
         onCompleteFunction=self.matar,
     )
コード例 #21
0
 def hacer_danio(self):
     if len(engine.obtener_director().escena_actual.atacantes) > 0:
         obj = None
         for a in engine.obtener_director().escena_actual.atacantes:
             if self.padre.i == a.i:
                 obj = a
                 break
         for a in engine.obtener_director().escena_actual.atacantes:
             if self.padre.i == a.i and a.rect.centerx - self.rect.centerx < obj.rect.centerx - self.rect.centerx:
                 obj = a
         if obj and self.rect.colliderect(obj.rect):
             obj.salud -= self.danio
             obj.congelar()
             engine.obtener_director().escena_actual.balas.remove(self)
コード例 #22
0
 def actualizar(self, tiempo):
     Atacante.actualizar(self, tiempo)
     self.rect.center = self.rect_real.center
     if self.detenido:
         self.detenido = False
         for fila in engine.obtener_director().escena_actual.tablero:
             if not self.detenido:
                 for d in fila:
                     if d:
                         if d.i == self.i and d.j == self.j:
                             if engine.pygame.time.get_ticks(
                             ) - self.crono_i_g > self.intervalo_golpe * 1000:
                                 self.crono_i_g = engine.pygame.time.get_ticks(
                                 )
                                 if d.__class__ == Nenufar and d.contenido:
                                     d.contenido.salud -= self.danio
                                 else:
                                     d.salud -= self.danio
                             self.detenido = True
                             break
         if not self.detenido:
             self.cuadros = self.cuadros_caminando
             self.actual = 0
             self.intervalo_animacion = self.intervalo_animacion / 5.0
     else:
         if engine.pygame.time.get_ticks(
         ) - self.crono_i_m > self.intervalo_movimiento * 1000:
             self.crono_i_m = engine.pygame.time.get_ticks()
             avance = 10 if self.actual != 0 else 20
             self.rect_real.x -= avance
             self.j = (self.rect_real.x - 50) / 100
         for fila in engine.obtener_director().escena_actual.tablero:
             if not self.detenido:
                 for d in fila:
                     if d:
                         if d.i == self.i and d.j == self.j:
                             self.detenido = True
                             self.cuadros = self.cuadros_comiendo
                             self.actual = 0
                             self.intervalo_animacion = self.intervalo_animacion * 5
                             break
     if engine.pygame.time.get_ticks(
     ) - self.crono_i_a > self.intervalo_animacion * 1000:
         self.crono_i_a = engine.pygame.time.get_ticks()
         self.actual += 1
         if self.actual > len(self.cuadros) - 1:
             self.actual = 0
     if self.salud <= 0:
         engine.obtener_director().escena_actual.atacantes.remove(self)
コード例 #23
0
 def actualizar(self, tiempo):
     if engine.pygame.time.get_ticks() - self.crono_i_s > self.intervalo_salir * 1000 and not self.salio:
         self.objetivo.cuadros = self.objetivo.cuadros_saliendo
         self.salio = True
     if self.objetivo.cuadros == self.objetivo.cuadros_saliendo and self.objetivo.actual == 3:
         self.objetivo.cuadros = self.objetivo.cuadros_arriba
         self.objetivo.actual = 0
     if self.salio:
         if len(engine.obtener_director().escena_actual.atacantes) > 0:
             obj = None
             for a in engine.obtener_director().escena_actual.atacantes:
                 if self.objetivo.i == a.i:
                     obj = a
                     break
             for a in engine.obtener_director().escena_actual.atacantes:
                 if (
                     self.objetivo.i == a.i
                     and a.rect.centerx - self.objetivo.rect.centerx < obj.rect.centerx - self.objetivo.rect.centerx
                 ):
                     obj = a
             if obj:
                 if obj.j == self.objetivo.j:
                     engine.obtener_director().escena_actual.explosiones.append(
                         Placa(self.objetivo.rect.centerx, self.objetivo.rect.centery, self.objetivo)
                     )
                     self.objetivo.salud = -1
                 if abs(obj.j - self.objetivo.j) <= 2:
                     self.intervalo_parpadeo = 0.1
                 elif abs(obj.j - self.objetivo.j) <= 4:
                     self.intervalo_parpadeo = 0.6
                 elif abs(obj.j - self.objetivo.j) <= 6:
                     self.intervalo_parpadeo = 1
                 else:
                     self.intervalo_parpadeo = 1.2
             else:
                 self.intervalo_parpadeo = 1.2
         else:
             self.intervalo_parpadeo = 1.2
         if (
             self.objetivo.cuadros == self.objetivo.cuadros_arriba
             and engine.pygame.time.get_ticks() - self.crono_i_p > self.intervalo_parpadeo * 1000
         ):
             self.objetivo.cuadros = self.objetivo.cuadros_encendido
             self.crono_i_p = engine.pygame.time.get_ticks()
             self.objetivo.actual = 0
         if self.objetivo.cuadros == self.objetivo.cuadros_encendido and self.objetivo.actual == 2:
             self.objetivo.cuadros = self.objetivo.cuadros_arriba
             self.objetivo.actual = 0
コード例 #24
0
 def __init__(self, i, j):
     self.i = i
     self.j = j
     self.grilla = Grilla(self.url_imagen, self.cantidad[0],
                          self.cantidad[1])
     self.rect = engine.pygame.Rect(0, 0, self.grilla.ancho,
                                    self.grilla.alto)
     self.rect.right = 50 + engine.obtener_director(
     ).escena_actual.ancho_cuadro * (j + 1)
     self.rect.bottom = 120 + engine.obtener_director(
     ).escena_actual.alto_cuadro * (i + 1)
     self.intervalo_animacion = 0.15
     self.crono_i_a = engine.pygame.time.get_ticks()
     self.salud = 100
     self.actual = 0
     self.habilidades = []
コード例 #25
0
 def actualizar(self, tiempo):
     if engine.pygame.time.get_ticks() - self.crono_i_a > self.invervalo_animacion * 1000:
             self.crono_i_a = engine.pygame.time.get_ticks()
             self.actual += 1
             if self.actual > 3: self.actual = 0
     if self.y <= self.finy:
         if engine.pygame.time.get_ticks() - self.crono_i_c > self.intervalo_caida * 1000:
             self.crono_i_c = engine.pygame.time.get_ticks()
             self.y += 5
         self.crono_i_v = engine.pygame.time.get_ticks()
     else:
         if engine.pygame.time.get_ticks() - self.crono_i_v > self.intervalo_vida * 1000 and self.se_cogio == False:
             self.se_cogio = True
             engine.obtener_director().escena_actual.solsitos.remove(self)
     if self.tweener.hasTweens():
         self.tweener.update(tiempo / 1000.0)
コード例 #26
0
 def actualizar(self, tiempo):
     if self.salud <= 0:
         if engine.obtener_director().escena_actual.tablero[self.i][
                 self.j].__class__ == Nenufar and engine.obtener_director(
                 ).escena_actual.tablero[self.i][self.j].contenido:
             engine.obtener_director().escena_actual.tablero[self.i][
                 self.j].contenido = None
         else:
             engine.obtener_director().escena_actual.tablero[self.i][
                 self.j] = 0
     if engine.pygame.time.get_ticks(
     ) - self.crono_i_a > self.intervalo_animacion * 1000:
         self.crono_i_a = engine.pygame.time.get_ticks()
         self.actual += 1
         if self.actual > len(self.cuadros) - 1:
             self.actual = 0
     self.actualizar_habilidades(tiempo)
コード例 #27
0
 def actualizar(self, tiempo):
     Atacante.actualizar(self, tiempo)
     self.rect.center = self.rect_real.center
     if self.detenido:
         self.detenido = False
         for fila in engine.obtener_director().escena_actual.tablero:
             if not self.detenido:
                 for d in fila:
                     if d:
                         if d.i == self.i and d.j == self.j:
                             if engine.pygame.time.get_ticks() - self.crono_i_g > self.intervalo_golpe * 1000:
                                 self.crono_i_g = engine.pygame.time.get_ticks()
                                 if d.__class__ == Nenufar and d.contenido:
                                     d.contenido.salud -= self.danio
                                 else:
                                     d.salud -= self.danio
                             self.detenido = True
                             break
         if not self.detenido:
             self.cuadros = self.cuadros_caminando
             self.actual = 0
             self.intervalo_animacion = self.intervalo_animacion / 5.0
     else:
         if engine.pygame.time.get_ticks() - self.crono_i_m > self.intervalo_movimiento * 1000:
             self.crono_i_m = engine.pygame.time.get_ticks()
             avance = 10 if self.actual != 0 else 20
             self.rect_real.x -= avance 
             self.j = (self.rect_real.x - 50) / 100
         for fila in engine.obtener_director().escena_actual.tablero:
             if not self.detenido:
                 for d in fila:
                     if d:
                         if d.i == self.i and d.j == self.j:
                             self.detenido = True
                             self.cuadros = self.cuadros_comiendo
                             self.actual = 0
                             self.intervalo_animacion = self.intervalo_animacion * 5
                             break
     if engine.pygame.time.get_ticks() - self.crono_i_a > self.intervalo_animacion * 1000:
         self.crono_i_a = engine.pygame.time.get_ticks()
         self.actual += 1
         if self.actual > len(self.cuadros) - 1:
             self.actual = 0
     if self.salud <= 0:
         engine.obtener_director().escena_actual.atacantes.remove(self)
コード例 #28
0
 def actualizar(self, tiempo):
     if engine.pygame.time.get_ticks(
     ) - self.crono_i_a > self.invervalo_animacion * 1000:
         self.crono_i_a = engine.pygame.time.get_ticks()
         self.actual += 1
         if self.actual > 3: self.actual = 0
     if self.y <= self.finy:
         if engine.pygame.time.get_ticks(
         ) - self.crono_i_c > self.intervalo_caida * 1000:
             self.crono_i_c = engine.pygame.time.get_ticks()
             self.y += 5
         self.crono_i_v = engine.pygame.time.get_ticks()
     else:
         if engine.pygame.time.get_ticks(
         ) - self.crono_i_v > self.intervalo_vida * 1000 and self.se_cogio == False:
             self.se_cogio = True
             engine.obtener_director().escena_actual.solsitos.remove(self)
     if self.tweener.hasTweens():
         self.tweener.update(tiempo / 1000.0)
コード例 #29
0
 def verificar_eventos(self, evento):
     if not self.menu_pausa:
         if self.cuadro_eleccion: self.cuadro_eleccion.verificar_eventos(evento)
         if self.jugando: self.boton_menu.verificar_eventos(evento)
         if evento.type == locals.QUIT:
             engine.obtener_director().salir()
         elif evento.type == locals.MOUSEBUTTONDOWN and evento.button == 1:
             if self.seleccion:
                 if self.jugando:
                     self.plantar(self.seleccion.clase, engine.pygame.mouse.get_pos())
                     self.seleccion = None
             else:
                 if self.barra_control: self.barra_control.verificar_eventos(evento)
             if self.jugando:
                 for sol in self.solsitos:
                     if sol.rect.collidepoint(engine.pygame.mouse.get_pos()[0], engine.pygame.mouse.get_pos()[1]):
                         sol.recolectar()
     else:
         self.menu_pausa.verificar_eventos(evento)
コード例 #30
0
 def actualizar(self, tiempo):
     if self.contador == 2:
         self.intervalo_disparo = 2
         self.objetivo.cuadros = self.objetivo.cuadros_normal
     else:
         self.intervalo_disparo = 1
     if len(engine.obtener_director().escena_actual.atacantes) > 0 and self.inicio:
         self.crono_i_d = engine.pygame.time.get_ticks()
         self.inicio = False
     elif len(engine.obtener_director().escena_actual.atacantes) > 0 and not self.inicio:
         if engine.pygame.time.get_ticks() - self.crono_i_d > self.intervalo_disparo * 1000:
             self.crono_i_d = engine.pygame.time.get_ticks()
             self.contador += 1
             if self.contador > 2: self.contador = 0
             obj = engine.obtener_director().escena_actual.atacantes[0]
             for o in engine.obtener_director().escena_actual.atacantes:
                 if pow((((self.objetivo.rect.centerx - o.rect.centerx) ** 2) + ((self.objetivo.rect.centery - o.rect.centery) ** 2)), 0.5) < pow((((self.objetivo.rect.centerx - obj.rect.centerx) ** 2) + ((self.objetivo.rect.y - obj.rect.centery) ** 2)), 0.5):
                     obj = o
             if obj.i > self.objetivo.i: modo = 2
             elif obj.i < self.objetivo.i: modo = 1
             elif obj.i == self.objetivo.i and obj.j >= self.objetivo.j: modo = 0
             else: modo = -1
             if self.contador > 0:
                 engine.obtener_director().escena_actual.balas.append(Pua(self.objetivo.rect.centerx - 15, self.objetivo.rect.top, obj, modo, self.objetivo))
             self.objetivo.cuadros = self.objetivo.cuadros_ataque
             self.objetivo.actual = 0
     else:
         self.inicio = True
         self.objetivo.cuadros = self.objetivo.cuadros_normal
コード例 #31
0
 def actualizar(self, tiempo):
     if engine.pygame.time.get_ticks() - self.crono_i_s > self.intervalo_salir * 1000 and not self.salio:
         self.objetivo.cuadros = self.objetivo.cuadros_saliendo
         self.salio = True
     if self.objetivo.cuadros == self.objetivo.cuadros_saliendo and self.objetivo.actual == 3:
         self.objetivo.cuadros = self.objetivo.cuadros_arriba
         self.objetivo.actual = 0
     if self.salio:
         if len(engine.obtener_director().escena_actual.atacantes) > 0:
             obj = None
             for a in engine.obtener_director().escena_actual.atacantes:
                 if self.objetivo.i == a.i:
                     obj = a
                     break
             for a in engine.obtener_director().escena_actual.atacantes:
                 if self.objetivo.i == a.i and a.rect.centerx - self.objetivo.rect.centerx < obj.rect.centerx - self.objetivo.rect.centerx:
                     obj = a                
             if obj:
                 if obj.j == self.objetivo.j:
                     engine.obtener_director().escena_actual.explosiones.append(Placa(self.objetivo.rect.centerx, self.objetivo.rect.centery, self.objetivo))
                     self.objetivo.salud = -1
                 if abs(obj.j - self.objetivo.j) <= 2:
                     self.intervalo_parpadeo = 0.1
                 elif abs(obj.j - self.objetivo.j) <= 4:
                     self.intervalo_parpadeo = 0.6
                 elif abs(obj.j - self.objetivo.j) <= 6:
                     self.intervalo_parpadeo = 1
                 else:
                     self.intervalo_parpadeo = 1.2
             else:
                 self.intervalo_parpadeo = 1.2
         else:
             self.intervalo_parpadeo = 1.2
         if self.objetivo.cuadros == self.objetivo.cuadros_arriba and engine.pygame.time.get_ticks() - self.crono_i_p > self.intervalo_parpadeo * 1000:
             self.objetivo.cuadros = self.objetivo.cuadros_encendido
             self.crono_i_p = engine.pygame.time.get_ticks()
             self.objetivo.actual = 0
         if self.objetivo.cuadros == self.objetivo.cuadros_encendido and self.objetivo.actual == 2:
             self.objetivo.cuadros = self.objetivo.cuadros_arriba
             self.objetivo.actual = 0
コード例 #32
0
 def verificar_eventos(self, evento):
     if not self.menu_pausa:
         if self.cuadro_eleccion:
             self.cuadro_eleccion.verificar_eventos(evento)
         if self.jugando:
             self.boton_menu.verificar_eventos(evento)
         if evento.type == locals.QUIT:
             engine.obtener_director().salir()
         elif evento.type == locals.MOUSEBUTTONDOWN and evento.button == 1:
             if self.seleccion:
                 if self.jugando:
                     self.plantar(self.seleccion.clase, engine.pygame.mouse.get_pos())
                     self.seleccion = None
             else:
                 if self.barra_control:
                     self.barra_control.verificar_eventos(evento)
             if self.jugando:
                 for sol in self.solsitos:
                     if sol.rect.collidepoint(engine.pygame.mouse.get_pos()[0], engine.pygame.mouse.get_pos()[1]):
                         sol.recolectar()
     else:
         self.menu_pausa.verificar_eventos(evento)
コード例 #33
0
 def hacer_danio(self):
     if not self.termino:
         i = self.padre.i + 1
         while i >= self.padre.i - 1:
             j = self.padre.j + 1
             while j >= self.padre.j - 1:
                 for z in engine.obtener_director().escena_actual.atacantes:
                     if z.i == i and z.j == j:
                         #deberia ir anmacion de zombies en cenizas
                         #engine.obtener_director().escena_actual.atacantes.remove(z)
                         z.salud -= self.danio
                 j -= 1
             i -= 1
         self.termino = True
コード例 #34
0
 def verificar_eventos(self, evento):
     if self.cuadro_eleccion: self.cuadro_eleccion.verificar_eventos(evento)
     if not self.menu_pausa:
         if self.boton_menu: self.boton_menu.verificar_eventos(evento)
         if self.seleccion: self.seleccion.verificar_eventos(evento)
         if evento.type == locals.QUIT:
             engine.obtener_director().salir()
         elif evento.type == locals.MOUSEBUTTONDOWN and evento.button == 1 and self.jugando:
             if self.seleccion and not self.barra_control.imagen.get_rect().collidepoint(evento.pos[0], evento.pos[1]):
                 self.plantar(evento.pos)
                 self.seleccion = None
             else:
                 for sol in self.solsitos:
                     if sol.rect.collidepoint(evento.pos[0], evento.pos[1]):
                         sol.recolectar()
         elif evento.type == locals.MOUSEBUTTONDOWN and evento.button == 3 and self.jugando:
             if self.seleccion:
                 self.seleccion.slot.aclarar()
                 self.seleccion = None
         if self.barra_control: self.barra_control.verificar_eventos(evento)
         if self.cuadro_lampa: self.cuadro_lampa.verificar_eventos(evento)
     else:
         self.menu_pausa.verificar_eventos(evento)
コード例 #35
0
 def actualizar(self, tiempo):
     if len(engine.obtener_director().escena_actual.atacantes) > 0:
         if engine.pygame.time.get_ticks() - self.crono_i_d > self.intervalo_disparo * 1000:
             self.crono_i_d = engine.pygame.time.get_ticks()
             for a in engine.obtener_director().escena_actual.atacantes:
                 if a.i == self.objetivo.i and a.j >= self.objetivo.j:
                     if self.congelante:
                         engine.obtener_director().escena_actual.balas.append(Hielo(self.objetivo.rect.centerx + 10, self.objetivo.rect.centery - 50, self.objetivo))
                     else:
                         engine.obtener_director().escena_actual.balas.append(Bala(self.objetivo.rect.centerx + 15, self.objetivo.rect.centery - 50))
                     break
コード例 #36
0
 def actualizar(self, tiempo):
     if len(engine.obtener_director().escena_actual.atacantes) > 0:
         if engine.pygame.time.get_ticks() - self.crono_i_d > self.intervalo_disparo * 1000:
             self.crono_i_d = engine.pygame.time.get_ticks()
             for a in engine.obtener_director().escena_actual.atacantes:
                 if a.i == self.objetivo.i and a.j >= self.objetivo.j:
                     if self.congelante:
                         engine.obtener_director().escena_actual.balas.append(
                             Hielo(self.objetivo.rect.centerx + 10, self.objetivo.rect.centery - 50, self.objetivo)
                         )
                     else:
                         engine.obtener_director().escena_actual.balas.append(
                             Bala(self.objetivo.rect.centerx + 15, self.objetivo.rect.centery - 50)
                         )
                     break
コード例 #37
0
 def actualizar(self, tiempo):
     if self.contador == 2:
         self.intervalo_disparo = 2
         self.objetivo.cuadros = self.objetivo.cuadros_normal
     else:
         self.intervalo_disparo = 1
     if len(engine.obtener_director().escena_actual.atacantes) > 0 and self.inicio:
         self.crono_i_d = engine.pygame.time.get_ticks()
         self.inicio = False
     elif len(engine.obtener_director().escena_actual.atacantes) > 0 and not self.inicio:
         if engine.pygame.time.get_ticks() - self.crono_i_d > self.intervalo_disparo * 1000:
             self.crono_i_d = engine.pygame.time.get_ticks()
             self.contador += 1
             if self.contador > 2:
                 self.contador = 0
             obj = engine.obtener_director().escena_actual.atacantes[0]
             for o in engine.obtener_director().escena_actual.atacantes:
                 if pow(
                     (
                         ((self.objetivo.rect.centerx - o.rect.centerx) ** 2)
                         + ((self.objetivo.rect.centery - o.rect.centery) ** 2)
                     ),
                     0.5,
                 ) < pow(
                     (
                         ((self.objetivo.rect.centerx - obj.rect.centerx) ** 2)
                         + ((self.objetivo.rect.y - obj.rect.centery) ** 2)
                     ),
                     0.5,
                 ):
                     obj = o
             if obj.i > self.objetivo.i:
                 modo = 2
             elif obj.i < self.objetivo.i:
                 modo = 1
             elif obj.i == self.objetivo.i and obj.j >= self.objetivo.j:
                 modo = 0
             else:
                 modo = -1
             if self.contador > 0:
                 engine.obtener_director().escena_actual.balas.append(
                     Pua(self.objetivo.rect.centerx - 15, self.objetivo.rect.top, obj, modo, self.objetivo)
                 )
             self.objetivo.cuadros = self.objetivo.cuadros_ataque
             self.objetivo.actual = 0
     else:
         self.inicio = True
         self.objetivo.cuadros = self.objetivo.cuadros_normal
コード例 #38
0
 def actualizar(self, tiempo):
     self.hacer_danio()
     if engine.pygame.time.get_ticks() - self.crono_i_v > self.intervalo_vida * 1000:
         engine.obtener_director().escena_actual.explosiones.remove(self)
コード例 #39
0
 def matar(self):
     self.objetivo.salud = -1
     for a in engine.obtener_director().escena_actual.atacantes:
         if a.i == self.objetivo.i and a.j == self.objetivo.j:
             a.salud -= 150
コード例 #40
0
 def bajar(self):
     self.objetivo.encontro = True
     engine.obtener_director().escena_actual.tweener.addTween(self, w = 205, h = 90, tweenTime = 0.6, tweenType = engine.pytweener.Easing.Linear.easeIn)
     finalcy = self.cy + 120
     engine.obtener_director().escena_actual.tweener.addTween(self, cy = finalcy, tweenTime = 0.6, tweenType = engine.pytweener.Easing.Linear.easeIn, onCompleteFunction = self.matar)
コード例 #41
0
 def aplastar(self):
     self.levantado = True
     finalcx = self.cx + 65
     finalcy = self.cy - 120
     engine.obtener_director().escena_actual.tweener.addTween(self, cx = finalcx, cy = finalcy, tweenTime = 0.4, tweenType = engine.pytweener.Easing.Linear.easeIn, onCompleteFunction = self.bajar)
コード例 #42
0
 def matar(self):
     self.objetivo.salud = -1
     for a in engine.obtener_director().escena_actual.atacantes:
         if a.i == self.objetivo.i and a.j == self.objetivo.j:
             a.salud -= 150
コード例 #43
0
 def hacer_danio(self):
     if not self.termino:
         for a in engine.obtener_director().escena_actual.atacantes:
             if a.j == self.padre.j and a.i == self.padre.i:
                 a.salud -= self.danio
コード例 #44
0
 def desaparecer(self):
     engine.obtener_director().escena_actual.barra_control.soles += 25
     engine.obtener_director().escena_actual.solsitos.remove(self)
コード例 #45
0
 def matar(self):
     engine.obtener_director().escena_actual.explosiones.append(Pumba(self.objetivo.rect.centerx, self.objetivo.rect.centery, self.objetivo))
     self.objetivo.salud = -1
コード例 #46
0
 def desaparecer(self):
     engine.obtener_director().escena_actual.barra_control.soles += 25
     engine.obtener_director().escena_actual.solsitos.remove(self)
コード例 #47
0
 def reducir(self, tiempo = 1.6):
     engine.obtener_director().escena_actual.tweener.addTween(self, w = 196, h = 114, tweenTime = tiempo, tweenType = engine.pytweener.Easing.Linear.easeIn, onCompleteFunction = self.agrandar)
コード例 #48
0
 def __init__(self, objetivo, *args):
     Habilidad.__init__(self, objetivo)
     self.w = self.objetivo.imagen.get_width()
     self.h = self.objetivo.imagen.get_height()
     self.imagen_original = self.objetivo.imagen
     engine.obtener_director().escena_actual.tweener.addTween(self, w = 135, h = 135, tweenTime = 2.0, tweenType = engine.pytweener.Easing.Linear.easeIn, onCompleteFunction = self.matar)
コード例 #49
0
 def hacer_danio(self):
     if self.rect.colliderect(self.objetivo.rect):
         self.objetivo.salud -= self.danio
         engine.obtener_director().escena_actual.balas.remove(self)
コード例 #50
0
 def matar(self):
     engine.obtener_director().escena_actual.explosiones.append(
         Pumba(self.objetivo.rect.centerx, self.objetivo.rect.centery, self.objetivo)
     )
     self.objetivo.salud = -1
コード例 #51
0
 def hacer_danio(self):
     atc = engine.pygame.sprite.spritecollideany(self, engine.obtener_director().escena_actual.atacantes)
     if atc:
         atc.salud -= self.danio
         engine.obtener_director().escena_actual.balas.remove(self)