Hola! En el juego disparar a monos, durante su ejecución algunas balas no colisionan con los monos y además no aparecen las estrellas.
Al código lo escribí como se indica en el tutorial. No encuentro cual es el error que estoy cometiendo y recurro a ustedes para que me ayuden. De ya muchas gracias.
import pilas
import random
pilas.iniciar()
balas_simples = pilas.actores.Bala
balas_dobles = pilas.municion.BalasDoblesDesviadas
monos = []
tiempo = 6
fin_de_juego = False
def mono_destruido(disparo, enemigo):
enemigo.eliminar()
disparo.eliminar()
puntos.escala = 0
puntos.escala = pilas.interpolar(1, duracion=0.5, tipo='rebote_final')
puntos.aumentar(1)
def crear_mono():
enemigo = pilas.actores.Mono()
enemigo.escala = 0
enemigo.escala = pilas.interpolar(0.5, duracion=0.5, tipo='elastico_final')
enemigo.aprender(pilas.habilidades.PuedeExplotar)
x = random.randrange(-320, 320)
y = random.randrange(-240, 240)
if x >=0 and x<=100:
x = 180
elif x <=0 and x >= -100:
x = -180
if y >=0 and y<=100:
y = 180
elif y <=0 and y >= -100:
y = -180
enemigo.x = x
enemigo.y = y
tipo_interpolacion = ['linea', 'aceleracion_gradual', 'desaceleracion_gradual', 'rebote_inicial', 'rebote_final']
enemigo.x = pilas.interpolar(0, tiempo, tipo=random.choice(tipo_interpolacion))
enemigo.y = pilas.interpolar(0, tiempo, tipo=random.choice(tipo_interpolacion))
monos.append(enemigo)
if random.randrange(0, 20) > 15:
if issubclass(torreta.habilidades.DispararConClick.minicion, balas_simple):
estrella = pilas.actores.Estrella(x, y)
estrella.escala = pilas.interpolar(0.5, duracion=0.5, tipo='elastico_final')
pilas.mundo.colisiones.agregar(estrella, torreta.habilidades.DispararConClick.proyectiles, asignar_arma_doble)
pilas.mundo.agregar_tarea(3, eliminar_estrella, estrella)
if fin_de_juego:
return False
else:
return True
def perder(torreta, enemigo):
global fin_de_juego
enemigo.sonreir()
torreta.eliminar()
fin_de_juego = True
pilas.avisar("Game Over. Conseguiste %d puntos" %(puntos.obtener()))
def asignar_arma_simple():
torreta.municion = balas_simple
def asignar_arma_doble(estrella, disparo):
torreta.municion = balas_dobles
estrella.eliminar()
pilas.mundo.agregar_tarea(10, asignar_arma_simple)
pilas.avisar("ARMA MEJORADA")
def eliminar_estrella(estrella):
estrella.eliminar()
def reducir_tiempo():
global tiempo
tiempo -= 1
pilas.avisar("HURRY UP!!")
if tiempo <=1:
tiempo = 0.5
return True
pilas.fondos.Pasto()
puntos = pilas.actores.Puntaje(x=230, y=200, color=pilas.colores.blanco)
pilas.magnitud = 40
pilas.actores.Sonido()
torreta = pilas.actores.Torreta(municion_bala_simple=balas_simples, enemigos=monos, cuando_elimina_enemigo=mono_destruido)
pilas.mundo.agregar_tarea(1, crear_mono)
pilas.mundo.agregar_tarea(20, reducir_tiempo)
pilas.mundo.colisiones.agregar(torreta, monos, perder)
pilas.avisar(u"Mueve el ratón y haz clic para destruirlos.")
pilas.ejecutar()