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
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
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
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)
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)
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)
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)
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
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()
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 )
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 = []
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, )
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)
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)
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)
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()
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)
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, )
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, )
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)
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)
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
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 = []
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)
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)
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)
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)
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)
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
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
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
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)
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
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
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
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)
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
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)
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)
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
def desaparecer(self): engine.obtener_director().escena_actual.barra_control.soles += 25 engine.obtener_director().escena_actual.solsitos.remove(self)
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
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)
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)
def hacer_danio(self): if self.rect.colliderect(self.objetivo.rect): self.objetivo.salud -= self.danio engine.obtener_director().escena_actual.balas.remove(self)
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
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)