Problemas al pasar a una clase el actor principal

Buenas tardes gente,
Estoy teniendo el siguiente problema al pasar el actor principal Shaolin a una clase. Me podran indicar si me falta algo o si ven algun error. Muchsa gracias. Saludos.

ANTES LO TENIA DE ESTA MANERA

shao = pilas.actores.Shaolin()

shao.x = 0
shao.y = -220
shao.escala  = 0.52
shao.rotacion = 0
shao.aprender(pilas.habilidades.LimitadoABordesDePantalla)
shao.aprender(pilas.habilidades.PuedeExplotar)
shao.aprender('disparar', municion='Municion', angulo_salida_disparo=90)"""

Y AHORA LO INTENTO PONER EN UNA CLASE PERO NO ESTARIA APARECIENDO.

class Shaolinn(pilasengine.actores.Shaolin):
    
    def iniciar(self):
        self.imagen = "shaolin.png"
        self.x = 0
        self.y = -220
        self.escala = 0.52
        self.aprender(pilas.habilidades.LimitadoABordesDePantalla)
        self.aprender(pilas.habilidades.PuedeExplotar)
        
pilas.actores.vincular(Shaolinn)

En el segundo caso, estás definiendo correctamente el actor, pero no lo estás creando (algo que haces en el primer caso). Añade al final también el pilas.actores.Shaolin()

1 Like

Es decir, la lĂ­nea completa; shao = pilas.actores.Shaolinn()

1 Like

me muestra lo siguiente:

» 
  Ă— # AttributeError: 'Actores' object has no attribute 'Shaolinn' 
  Ă— # 
  Ă— # Traza del error (las llamadas mas recientes al final): 
  Ă— #   Archivo "/usr/local/lib/python2.7/dist-packages/pilas-1.1.0-py2.7.egg/pilasengine/interprete/editor.py",linea 634, en ejecutar 
  Ă— #     exec(contenido, self.interpreterLocals) 
  Ă— #   Archivo actual,linea 117, en 
  Ă— # AttributeError: 'Actores' object has no attribute 'Shaolinn' 
  Ă— #

AH, ya lo veo, el problema está en la primera linea. Donde pone

class Shaolinn(pilasengine.actores.Shaolin):

deberĂ­a ser

class Shaolinn(pilasengine.actores.Actor):

de esa manera, Shaolinn hereda correctamente del mĂłdulo de actores.

Hay dos cosas que (entiendo) podrĂ­as estar queriendo hacer.

Lo que si entendí: Querés crear una clase Shaolinn.
Lo que no quedó claro: Si querés que esa clase herede de Actor o si tiene que heredar de Shaolin (este último caso podría ser para darle alguna funcionalidad en particular a lo que ya sabe hacer Shaolin).

Shaolinn hereda de Actor

import pilasengine

pilas = pilasengine.iniciar()

class Shaolinn(pilasengine.actores.Actor):
    
    def iniciar(self):
        self.imagen = "shaolin.png"
        self.x = 0
        self.y = -220
        self.escala = 0.52
        self.aprender(pilas.habilidades.LimitadoABordesDePantalla)
        self.aprender(pilas.habilidades.PuedeExplotar)

#Lo creamos
personaje = Shaolinn(pilas)

Shaolinn hereda de Shaolin

import pilasengine

pilas = pilasengine.iniciar()

class Shaolinn(pilasengine.actores.Shaolin):
    
    def iniciar(self):
        self.imagen = "shaolin.png"
        self.x = 0
        self.y = -220
        self.escala = 0.52
        self.aprender(pilas.habilidades.LimitadoABordesDePantalla)
        self.aprender(pilas.habilidades.PuedeExplotar)

#Lo creamos
personaje = Shaolinn(pilas)

El Ăşnico cambio serĂ­a en

class Shaolinn(pilasengine.actores.Shaolin):

o

class Shaolinn(pilasengine.actores.Actor):

Saludos!