Problemas para crear enemigos

Buenas, venia a consultar sobre el como programar enemigos que se generaran de forma continua y en diferentes lugares de la pantalla.
Se que Pilas dispone del ejemplo “Disparar a los monos”, el cual cuenta con esta mecanica, pero eh tenido problemas al tratar de modificarlo, normalmente con las interpolaciones.
Queria ssber si se puede hacer un codigo con esta funcion de una forma mas simplista.

Gracias por su atencion

Hola @LeLima !!!, hay varias formas sencillas de hacer que los actores enemigos aparezcan automáticamente. Para mí lo más simple es separarlo en dos partes. Por un lado, hacer una
función que construya un actor y luego crear una tarea que llame a esa función regularmente,
por tiempo.

Por ejemplo, en este ejemplo, se me ocurrió hacer un minijuego donde los enemigos aparecerán
cada 2 segundos en pantalla, usando una posición aleatoria. Agregué un actor nave que puede
eliminarlos así es un poco más ilustrativo:

Te dejo el código, avisame si necesitas que lo veamos paso a paso:

# coding: utf-8
import pilasengine

pilas = pilasengine.iniciar()
enemigos = pilas.actores.Grupo()

def crear_enemigo():
    # Construye un enemigo que explota al ser eliminado.
    a = pilas.actores.Aceituna()
    enemigos.agregar(a)
    a.aprender('puedeExplotar')
    
    # Elige una posicion aleatoria
    a.x = pilas.azar(-200, 200)
    a.y = pilas.azar(-200, 200)
    
    # Hace que el actor aparezca progresivamente.
    a.escala = 0.1
    a.escala = [1]
    
nave = pilas.actores.NaveRoja()
nave.escala = 0.4
nave.definir_enemigos(enemigos)

pilas.tareas.siempre(2, crear_enemigo)

pilas.ejecutar()

¡Abrazo!

Muchas gracias por la ayuda! eh probado el codigo y me a servido de maravilla.
Aunque me ah surgido una duda nueva con respecto a los mismos, y es el tipo de comportamiento que se les puede programar, mas especificamente, con su moviento.

Por ejemplo, si uno deseara que hubiese dos tipos de enemigos, y mientras que uno de ellos persigue al jugador/nave, el otro se toma 3 segundos antes de atacar, o simplemente se mueve alrededor de la pantalla.

Gracias por su paciencia

Hola @LeLima !!!

Hay varias formas de implementarlo, pero pensando en el código anterior seguramente
lo más sencillo va a ser modificar la función “crear_enemigo”.

En lugar de construir el mismo tipo de actor en cada ejecución, podrías pedirle a pilas
que genere un número al azar, y que dependiendo de ese número aleatorio construya
un actor diferente.

Algo así:

def crear_enemigo():
    valor = pilas.azar(1, 3)

    if valor == 1:
        crear_actor_aceituna()
    elif valor == 2:
        crear_actor_persigue_al_enemigo()
    elif valor == 3:
        crear_actor_que_se_mueve_por_pantalla()

el código que escribimos antes, en “crear_enemigo” podrías moverlo a una función
nueva llamada “crear_actor_aceituna()” así seguirá funcionando como hasta ahora:

def crear_actor_aceituna():
    # Construye un enemigo que explota al ser eliminado.
    a = pilas.actores.Aceituna()
    enemigos.agregar(a)
    a.aprender('puedeExplotar')
    
    # Elige una posicion aleatoria
    a.x = pilas.azar(-200, 200)
    a.y = pilas.azar(-200, 200)
    
    # Hace que el actor aparezca progresivamente.
    a.escala = 0.1
    a.escala = [1]

Luego, las otras funciones deberían crear actores pero algo diferentes. Podrías crear un
actor personalizado: Actores personalizados - pilas-engine o usar algunas
de las habilidades que trae pilas: Habilidades - pilas-engine

Hay muchas formas realmente, pero depende mucho del tipo de personajes que quieras agregar.

Avisanos cualquier cosa, abrazo!

hola hugo buenas noches, soy nuevo con el lenguaje de pilas y sinceramente es muy bueno…
Queria saber como puedo hacer que mis enemigos se creen al azar. Tengo a mis enemigos como actores personalizados… cada enemigo es un actor con una imagen personalizada… si me podrias ayudar te agradecería muchisimo