Ayuda con las escenas

Hola. Intento hacer un juego con varias escenas, pero cuando activo ejecutar.py, me sale esto:

» 
  × # ImportError: cannot import name Disclaimer 
  × # 
  × # Traza del error (las llamadas mas recientes al final): 
  × #   Archivo "C:\DOCUME~1\Puri\ESCRIT~1\Alvaro\PILAS-~1\pilasengine\interprete\editor.py",linea 640, en ejecutar 
  × #     exec(contenido, self.interpreterLocals) 
  × #   Archivo actual,linea 5, en 
  × # ImportError: cannot import name Disclaimer 
  × # 

El código de ejecutar.py es este:

import pilasengine
from logo_pilas import EscenaLogoDePilas
from escena_logo import EscenaLogo
from disclaimer import Disclaimer

pilas = pilasengine.iniciar()

pilas.escenas.vincular(EscenaLogoDePilas)
pilas.escenas.vincular(EscenaLogo)
pilas.escenas.vincular(Disclaimer)

pilas.escenas.EscenaLogoDePilas()

pilas.ejecutar()

Y el código de disclaimer.py es este:

import pilasengine

class Disclaimer(pilasengine.escenas.Escena):
def iniciar(self):
    fondo = self.pilas.fondos.Color(self.pilas.colores.negro)
    texto = self.pilas.actores.Texto("Game created with Pilas Engine.")
    texto.y = 190
    texto.escala = 0.7
    texto2 = self.pilas.actores.Texto("Freedom Guardians, characters, stages, and stuff \n are released under Creative Commons license.")
    texto2.y = 120
    texto2.escala = 0.7
    texto3 = self.pilas.actores.Texto("Created by SynfigMaster91")
    texto3.y = 50
    texto3.escala = 0.7
    texto4 = self.pilas.actores.Texto("Some rights reserved.")

def aparecer():
    texto.transparencia = [100,0]
    texto2.transparencia = [100,0]
    texto3.transparencia = [100,0]
    texto4.transparencia = [100,0]

def desaparecer():
    texto.transparencia = [0,100]
    texto2.transparencia = [0,100]
    texto3.transparencia = [0,100]
    texto4.transparencia = [0,100]

self.pilas.tareas.agregar(1, aparecer)
self.pilas.tareas.agregar(4, desaparecer)

A propósito, me sale un error en disclaimer.py:

  × # AttributeError: 'VentanaInterprete' object has no attribute 'pilas' 
  × # 
  × # Traza del error (las llamadas mas recientes al final): 
  × #   Archivo "C:\DOCUME~1\Puri\ESCRIT~1\Alvaro\PILAS-~1\pilasengine\interprete\editor.py",linea 640, en ejecutar 
  × #     exec(contenido, self.interpreterLocals) 
  × #   Archivo actual,linea 30, en 
  × # AttributeError: 'VentanaInterprete' object has no attribute 'pilas' 
  × #

Hola @Synfigmaster91, parece que el código no está correctamente identado, ¿puede ser?

Hola, Hugo.

Es posible, que lo sea. Voy a arreglarlo mientras y te digo.

Por cierto, como lo arreglo?

Hola @Synfigmaster91, no estoy muy seguro del efecto esperado, pero me imagino que si tu idea es que aparezcan los textos luego de 1 segundo, y que a los 4 segundos desaparezcan el código correcto debería ser similar al siguiente:

import pilasengine

class Disclaimer(pilasengine.escenas.Escena):
 
    def iniciar(self):
        fondo = self.pilas.fondos.Color(self.pilas.colores.negro)
        self.texto = self.pilas.actores.Texto("Game created with Pilas Engine.")
        self.texto.y = 190
        self.texto.escala = 0.7
        self.texto2 = self.pilas.actores.Texto("Freedom Guardians, characters, stages, and stuff \n are released under Creative Commons license.")
        self.texto2.y = 120
        self.texto2.escala = 0.7
        self.texto3 = self.pilas.actores.Texto("Created by SynfigMaster91")
        self.texto3.y = 50
        self.texto3.escala = 0.7
        self.texto4 = self.pilas.actores.Texto("Some rights reserved.")
        self.pilas.tareas.agregar(1, self.aparecer)
        self.pilas.tareas.agregar(4, self.desaparecer)
   
    def aparecer(self):
        self.texto.transparencia = [100,0]
        self.texto2.transparencia = [100,0]
        self.texto3.transparencia = [100,0]
        self.texto4.transparencia = [100,0]
    
    def desaparecer(self):
        self.texto.transparencia = [0,100]
        self.texto2.transparencia = [0,100]
        self.texto3.transparencia = [0,100]
        self.texto4.transparencia = [0,100]

Pero no llegué a probarlo bien.

Bueno, ya lo arreglé, pero ahora tengo que arreglar el ejecutar.py porque me sale esto:

× # ImportError: cannot import name EscenaAviso 
  × # 
  × # Traza del error (las llamadas mas recientes al final): 
  × #   Archivo "C:\DOCUME~1\Puri\ESCRIT~1\Alvaro\PILAS-~1\pilasengine\interprete\editor.py",linea 640, en ejecutar 
  × #     exec(contenido, self.interpreterLocals) 
  × #   Archivo actual,linea 5, en 
  × # ImportError: cannot import name EscenaAviso 
  × # 

Le cambie el nombre de Disclaimer por el de EscenaAviso por si acaso. Que tengo que arreglar en ejecutar.py?

Lo he copiado y probado pero me sale esto:

× # IndentationError:
× #
× # Traza del error (las llamadas mas recientes al final):
× # Archivo “C:\DOCUME~1\Puri\ESCRIT~1\Alvaro\PILAS-~1\pilasengine\interprete\editor.py”,linea 640, en ejecutar
× # exec(contenido, self.interpreterLocals)
× # Archivo actual,linea 4
× # def iniciar(self):
× # ^
× # IndentationError: unexpected indent
× #

Ahí te lo dice claro: Un error de identación.
Ni más ni menos que hay algúna tabulación o espacio de más o de menos. a mí me pasaba cuando mezclaba el editor de Pilas con mi editor favorito. Te recomiendo que uses un buen editor con el que te sientas cómodo y no cambies.
Simplemente revisa todas las tabulaciones, sobre todo en las

def loquesea(self):
      codigo_que_sigue

Te va a pasar a menudo si estás copiando y pegando código, te aviso :smile:

Hmm… Voy a intentar escribir el código bien esta vez y te aviso.

lo he probado sin copiar pero me sigue dando lo mismo.

En este post ya se explica como modulizar.