Hola como están!
Hice un juego y se me fue extendiendo mucho código, así que decide modularizarlo en varios archivos.
Y como era de esperar, surgieron algunos inconvenientes.
Uno de los errores ocurre en un archivo que llamé “actor_vaca” y el código es del ejemplo vaca voladora y cuando lo tenía en un solo archivo funcionaba bien.
# -*- encoding: utf-8 -*-
import pilasengine
class Estado:
def __init__(self, vaca):
self.vaca = vaca
self.iniciar()
def iniciar(self):
pass
class Ingresando(Estado):
def iniciar(self):
self.vaca.definir_animacion([3, 4])
self.contador = 0
self.vaca.x = +400
self.vaca.x = [-170], 2
def actualizar(self):
self.contador += 1
if self.contador > 50:
self.vaca.estado = Volando(self.vaca)
class Volando(Estado):
def iniciar(self):
self.vaca.definir_animacion([3, 4])
def actualizar(self):
velocidad = 5
if self.pilas.escena.control.arriba:
self.vaca.y += velocidad
elif self.pilas.escena.control.abajo:
self.vaca.y -= velocidad
if self.vaca.y > 210:
self.vaca.y = 210
elif self.vaca.y < -210:
self.vaca.y = -210
class Perdiendo(Estado):
def iniciar(self):
self.vaca.definir_animacion([0])
self.vaca.centro = ('centro', 'centro')
self.velocidad = -2
def actualizar(self):
self.vaca.rotacion += 7
self.vaca.escala += 0.01
self.vaca.x -= self.velocidad
self.velocidad += 0.2
self.vaca.y -= 1
class Vaca(pilasengine.actores.Actor):
def iniciar(self):
self.grilla = self.pilas.imagenes.cargar_grilla('data/sprites.png', 5, 1)
self.imagen = self.grilla
self.definir_animacion([0])
self.centro = (140, 59)
self.radio_de_colision = 40
self.x = -170
self.estado = Ingresando(self)
self.contador = 0
def definir_animacion(self, cuadros):
self.paso = 0
self.contador = 0
self.cuadros = cuadros
def actualizar(self):
self.estado.actualizar()
self.actualizar_animacion()
def actualizar_animacion(self):
self.contador += 0.2
if (self.contador > 1):
self.contador = 0
self.paso += 1
if self.paso >= len(self.cuadros):
self.paso = 0
self.imagen.definir_cuadro(self.cuadros[self.paso])
def perder(self):
self.estado = Perdiendo(self)
self.t = self.pilas.actores.Texto("Sigue intentando...")
self.t.escala = 0
self.t.escala = [1], 3.5
El error que me sale dice:
ERROR: "AttributeError("Volando instance has no attribute ‘pilas’)
Y me detalla la linea 41 "if self.pilas.escena.control.arriba:
Y linea 86 “self.estado.actualizar()”