Importar lista de actores de otro fichero [SOLUCIONADO]

Buenas!

No sé si este es un tema de Pilas o es más bien de Python… Si fuera lo segundo agradeceria que se me dijera para buscar la solución por otros medios. :slight_smile:

La cuestión es que me interesaria mucho poder tener varias listas de actores y sus posiciones X Y (una lista para cada nivel del juego) en un fichero a parte, e ir llamando a esas listas a cada nuevo nivel desde la escena donde tengo programadas los diferentes métodos, colisiones, etc.

El juego es un tanto complejo, y si no es así me veo abligado a “copiar y pegar” todo ese código (que es extenso) en cada nueva escena (calculo que el juego tendria como mínimo de 10 a 20 niveles, cada cual con su correspondiente escena, y si a eso le sumamos los menús, los inicios, las presentaciones, etc. se me hacen muchas escenas…).

De momento lo que he hecho es crear una def nivel_n(self): para cada nivel, que es llamada desde la def iniciar(self): en la misma escena de los métodos. Pero esto, que funciona muy bien, me está haciendo que el fichero se vuelva MUY extenso, ya que en cada escena pueden intervenir hasta 20, 30 ó 40 actores, cada uno con su X y su Y a definir.

Si no hay más remedio lo haré creando una escena para cada nivel, pero agradeceria mucho una respuesta!

He hecho pruebas con un fichero .py donde he probado a crear variables, def(), class, todo sin éxito.

Quizás seria mejor usar un fichero que no fuera PY sinó TXT o otro tipo de extensión de texto que funcionara en todos los sistemas operativos? Y si es así… qué extensión seria la correcta?

Desde ya muchas gracias. :wink:

Hola @jordinur, se podría hacer con un fichero .py o .txt, es muy similar en cualquiera de los dos casos. Yo te recomendaría que sea un archivo .py, así python detectará errores de sintáxis y esas cosas.

Por ejemplo, si lo hicieras con un archivo .py podrías generar una función por cada nivel, y desde la escena
importar y ejecutar esa función (pero siempre enviando el objeto pilas):

import generador_de_niveles

# Archivo de la escena:
class Escena(pilasengine.escenas.Escena):

    def iniciarNivel(self, numero_de_nivel):
        if numero_de_nivel == 1:
            generador_de_niveles.iniciar_nivel1(self.pilas)
        elif numero_de_nivel == 2:
            # etc....

y en el archivo generador_de_niveles.py:

# generador_de_niveles.py

def iniciar_nivel1(pilas):
     actor = pilas.actores.Aceituna()
     actor.x = 100
     # etc

Muchas gracias!!! :smile:

Lo que me faltaba era esos dos datos donde hay que poner “pilas”, ya que todo lo demás lo había probado sin éxito.

Un abrazo.