Generacion aleatoria de enemigos y delimitado de bordes

Hola, queria hacer dos preguntas para completar el desarrollo de mi minijuego

  1. Estoy desarrollando un minijuego en el cual el objetivo del jugador es esquivar enemigos que aparecen lateralmente mientras que el mapa se desplaza de manera horizontal. Pero tengo un problema a la hora de desarrollar el codigo para que los enemigos aparezcan. Como puedo hacer para generar enemigos aleatoriamente que aparezcan horizontalmente a medida que la pantalla se desplaza (de izquierda a derecha)?
  2. Que codigo puedo utilizar para delimitar los bordes de mi videojuego, haciendo que si el personaje sale de escena muera?
    Necesito una respuesta lo mas rapido posible, les agradeceria mucho.
    Muchas gracias y saludos

Hola @UliG14, para que los actores aparezcan automáticamente tendrías que crear un función que ponga al actor en pantalla y luego usar la función “pilas.tareas.siempre” que sabe llamar a esa función cada vez que pasa el tiempo.

Por ejemplo, si quisieras crear un actor Pelota cada 4 segundos podrías hacer algo así:

def crear_actor():
    pilas.actores.Pelota()

pilas.tareas.siempre(4, crear_actor)

Luego, para eliminar los actores cuando superan cierto borde de la pantalla lo más sencillo es poner una consulta tipo “IF” sobre la variable “x” (de la posición horizontal) y simplemente usar eso para saber si el actor se tiene que eliminar o no.

Te paso un ejemplo que intenta incluir esas cosas que solicitas:

# coding: utf-8
import pilasengine

pilas = pilasengine.iniciar()

velocidad = 3


class MiEnemigo(pilasengine.actores.Actor):
    
    def iniciar(self):
        self.imagen = "aceituna.png"
        self.x = 200  # punto de origen, deberia ser un numero mayor para que no se vea cuando se construye.
        self.y = pilas.azar(-200, 200)  # hace que tome una posicion vertical aleatoria entre -200 y 200
        
    def actualizar(self):
        self.x -= velocidad
        
        if self.x < -300:  # limite en donde se eliminara al actor, le puse -300 para que se vea cuando se elimina, es mejor que sea un numero menor, como -500
            self.eliminar()



pilas.actores.vincular(MiEnemigo)


# Creamos un primer enemigo de prueba
pilas.actores.MiEnemigo()


def crear_enemigo():
    pilas.actores.MiEnemigo()
    
# Le pedimos a pilas que llame a la funciona para crear un personaje cada dos segundos
pilas.tareas.siempre(2, crear_enemigo)


pilas.ejecutar()