Hola estoy viendo como hacer el juego de asteroides y necesito eliminar los enemigos, pero el tema es como lo hago, espero que me puedan ayudar y este es el código que tengo hasta el momento:
import pilasengine
pilas = pilasengine.iniciar()
class Fondo:
pilas.fondos.Espacio()
class Nave:
nave = pilas.actores.Nave()
def destruir(self):
class Enemigos:
enemigo =pilas.actores.Piedra()
enemigo * 10
pilas.ejecutar()
Hola @Destroyer, mil disculpas por la demora…
El código mínimo para tener un juego de asteroides podría ser algo así:
# coding: utf-8
import pilasengine
pilas = pilasengine.iniciar()
nave = pilas.actores.Nave()
piedra = pilas.actores.Piedra()
piedra.x = 200
nave.definir_enemigos(piedra)
pilas.ejecutar()
El método ‘definir_enemigos’ se puede llamar varias veces para que la nave
pueda eliminar más actores.
Sin embargo, lo ideal para este tipo de juegos es hacer que las colisiones con
los asteroides (o cualquier otra cosa) produzca una reacción, un sonido, una explosión lo que sea!!
Para hacer algo similar en pilas deberías crear una función para responder a la colisión entre un misil y un asteroide.
Así quedaría el código, con algunos agregados como el fondo:
# coding: utf-8
import pilasengine
pilas = pilasengine.iniciar()
fondo = pilas.fondos.Galaxia()
nave = pilas.actores.Nave()
puntaje = pilas.actores.Puntaje(x=-300, y=200, color='blanco')
piedra = pilas.actores.Piedra()
piedra.x = 200
piedra.dx = pilas.azar(1, 2)/2.0
piedra.dy = pilas.azar(1, 2)/2.0
## Colision nave / piedra
def cuando_colisiona_con_la_nave():
explosion = pilas.actores.Explosion()
explosion.x = nave.x
explosion.y = nave.y
nave.eliminar()
pilas.avisar("Juego perdido!")
pilas.colisiones.agregar('Nave', 'Piedra', cuando_colisiona_con_la_nave)
## Colision disparo
def cuando_colisiona_con_la_nave(disparo, piedra):
explosion = pilas.actores.ExplosionDeHumo()
explosion.x = piedra.x
explosion.y = piedra.y
disparo.eliminar()
piedra.eliminar()
puntaje.aumentar()
pilas.colisiones.agregar('Misil', 'Piedra', cuando_colisiona_con_la_nave)
def crear_piedra():
piedra = pilas.actores.Piedra()
piedra.x = 200
piedra.dx = pilas.azar(1, 2)/2.0
piedra.dy = pilas.azar(1, 2)/2.0
piedra.y = 300
pilas.tareas.siempre(3, crear_piedra)
pilas.ejecutar()
Hay más ejemplos de cómo realizar las colisiones de esta forma en el manual de pilas, cualquier cosa preguntanos de nuevo!: