Como crear enemigos random y obstaculos !?

Buenas estoy realizando un juego con fondo en movimiento horizontal… el hecho es que tengo listo mi actor principal con sus caracteristicas (el disparar me falla porque solo dispara para la derecha) y quiero agregar enemigos y obstaculos que al momento de colisionar con mi personaje el juego termine y al momento de eliminarlos el puntaje suba…hasta ahora me fije en un ejm del foro y pude hacer que caigan enemigos del cielo pero desearia que se generen tb de manera horizontal y random a lo largo del fondo horizontal y el nro de enemigos y rapidez ascienda segun la puntuacion aumente… Adjunto mi codigo y espero su pronta respuesta

Saludos desde Ecuador.

import pilasengine

pilas = pilasengine.iniciar()


#FONDO EN MOVIMIENTO....
fondo = pilas.fondos.DesplazamientoHorizontal()

fondo.agregar("imagenes/fondo.png",y = -50, velocidad=0)
fondo.agregar("imagenes/nubes.png", y = -40, velocidad = 0.1)
fondo.agregar("imagenes/city2.png", y=-30, velocidad=0.5)
fondo.agregar("imagenes/arbol.png", y= -25, velocidad=0.5)
fondo.agregar("imagenes/postes.png",y = -30, velocidad = 0.5)
fondo.agregar("imagenes/floor2.png", y=40, velocidad=2)

#Puntaje
puntos = pilas.actores.Puntaje(x=230, y=200, color=pilas.colores.blanco)
puntos.magnitud = 40
puntos.aumentar(cantidad = 1)
# Mi Primer personaje
class MiActor(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = pilas.imagenes.cargar_animacion("imagenes/caminando.png",5)
        self.y = -150
        self.escala = 1
        self.figura = pilas.fisica.Circulo(self.x,self.y,30,friccion = 5, restitucion= 5)
        self.cuadro = 0
        self.centro_x = 110
        self.centro_y = 35
        self.radio_de_colision = 40

        
        self.aprender(pilas.habilidades.MoverseConElTeclado)


    def actualizar(self):
        if pilas.control.abajo:
            self.y -=3
            self.cuadro = 4
            if self.y < -150:
             self.y = -150
        if pilas.control.izquierda:
            if not self.espejado:
                self.espejado = True
            self.cuadro +=1
        elif pilas.control.derecha:
            if self.espejado:
                self.espejado = False
            self.cuadro += 1
            
        else:
            self.cuadro = 0
        if self.cuadro > 4:
            self.cuadro = 1
        if pilas.control.arriba:
            self.cuadro = 4 
            self.y +=1
            if self.y > -80:
                self.y -=13
            
        self.imagen.definir_cuadro(self.cuadro)




    
pilas.actores.vincular(MiActor)
mi_actor = pilas.actores.MiActor()
# No puedo hacer que el actor dispare desde el otro angulo de 180 por lo que solo dispara para 0
mi_actor.aprender(pilas.habilidades.Disparar,offset_origen_actor=(mi_actor.x, 0)) 

class Enemigos(pilasengine.actores.Bomba):
    def iniciar(self):
        self.imagen = "imagenes/dinamita.png"
        self.aprender( pilas.habilidades.PuedeExplotarConHumo )
        self.x = pilas.azar(-200, 200)
        self.y = 290
        self.velocidad = pilas.azar(10, 40) / 10.0
        self.escala = 0.43
        
    def actualizar(self):
        self.rotacion += 10
        self.y -= self.velocidad

        # Elimina el objeto cuando sale de la pantalla.
        if self.y < -300:
            self.eliminar()
        
enemigos = pilas.actores.Grupo()
# Funcion para crear enemigos
def crear_enemigo():
    actor = Enemigos(pilas)
    enemigos.agregar(actor)
# tiempo que demora en crear enemigos 
pilas.tareas.siempre(3, crear_enemigo)

def eliminar_enemigo(disparo, enemigo):
    enemigo.eliminar()
    disparo.eliminar()
    
pilas.colisiones.agregar('bala', 'Enemigos', eliminar_enemigo)
pilas.colisiones.agregar(mi_actor, enemigos, mi_actor.eliminar)


    
def cambiar_posicion_camara():
    pilas.camara.x += (mi_actor.x - pilas.camara.x) / 20.0
    
    return True


pilas.tareas.agregar(1/30.0, cambiar_posicion_camara)
pilas.ejecutar()

Excelente, me parece una idea genial que alguien más de Ecuador se interese por pilasengine, acabo de revisar tu duda, en el transcurso del día reviso el código y te comento, no puedo tener acceso a las imágenes asi que utilizare imagenes Creative Commons para simular un ejemplo

Buenas, @Ricardo_Ec !

A la espera de lo que te pueda decir @Statick yo te recomendaría revisar el ejemplo “VACA VOLADORA” que puedes encontrar en los ejemplos que trae Pilas-Engine.

Ese ejemplo hace todo lo que tu pides excepto disparar, pero seguro que podrás adaptarlo muy fácilmente.

Un saludo :wink: