Veran, tengo una variable "self.mapa", y en una función completamente aparte, tengo una variable interna de la función llamada "colisiones", y cuando le asigno un valor a la variable (tabla) colisiones, por una extraña razón se cambia el valor en self.mapa, no sé si me explico, ahora pondré el error:
def crearColisiones(self):
colisiones=self.colisiones
for y in range(self.height):
for x in range(self.width):
if self.colisiones[y][x]:
colisiones[y][x]=1
else:
colisiones[y][x]=None
self.colisiones=colisiones
self.colisiones=colisiones
def update(self,screen,vx,vy,rect):
x = 0 ; y = 0 ;z = 0
for capa in self.mapa:
for fila in capa:
for sprite in fila:
if sprite!=None:
self.mapa[z][y][x].update(screen,vx,vy)
else:
pass
x += 1
x=0
y += 1
y = 0
z += 1
Traceback (most recent call last):
File "C:\Users\Ednar\Desktop\Tarea4enunciado\Tarea4 RPG\Tarea 3 RPG\PY Game\RPG\Test.py", line 46, in <module>
main()
File "C:\Users\Ednar\Desktop\Tarea4enunciado\Tarea4 RPG\Tarea 3 RPG\PY Game\RPG\Test.py", line 41, in main
MapTest.update(screen, Player.vx, Player.vy, Player.rect)
File "C:\Users\Ednar\Desktop\Tarea4enunciado\Tarea4 RPG\Tarea 3 RPG\PY Game\RPG\maps.py", line 101, in update
self.mapa[z][y][x].update(screen,vx,vy)
AttributeError: 'int' object has no attribute 'update'
Como se dan cuenta, en "colisiones[y][x]=1" le entregué un "int" (entero) a la tabla colisiones, luego, mágicamente, en la función "update" que está más abajo me señala que el entero no tiene atribuida la funcion update (es una función de aparte, de una clase que hice, que le puse el mismo nombre por cumplir una función similar). Si a la tabla "colisiones", en vez de entregarle un número entero, le entro un string, me sale el siguiente error:
self.mapa[z][y][x].update(screen,vx,vy)
AttributeError: 'str' object has no attribute 'update'
Y en ningún momento he cambiado los valores de self.mapa. Por otro lado, si borro la linea "colisiones[y][x]=1" y agrego un pass (para que no haga nada), el error se repara, y se activa el "self.mapa[z][y][x].update(screen,vx,vy)" normalmente.
En palabras simples, le doy valores a una función y se modifican los valores de otra, haciendo que falle completamente mi programa.
Alguno sabe a que puede deberse este tan extraño error?
Gracias de antemano.