Buenas Hugo,
disculpa por ser tan pesado, pero gracias a tus consejos creo que he podido avanzar bastante, y casi diria que me he emocionado.
Al final me ha parecido más fácil simplemente cambiarle el atributo “esmono” a la ficha, más que eliminar y crear actores nuevos. Con esto se consigue que la ficha siga en su posición, pero que tenga otra imagen. Con esto tambien se evita tener que ir creando actores nuevos en la posición grilla[][] del actor eliminado, lo que lo simplifica todo y mucho.
Si dispones de tiempo, te agradeceria mucho si pudieras revisar este poco de código que tengo hasta ahora y me dijeras si lo ves factible…
De mientras voy a tratar de implementar el método que creé para detectar si habia 3 o más figuras iguales juntas en una fila, para ver si todo encaja como seria de esperar.
Un abrazo.
# -*- encoding: utf-8 -*-
import pilasengine
pilas = pilasengine.iniciar(ancho=800)
class ficha(pilasengine.actores.Actor):
def iniciar(self,x,y):
x = self.x
y = self.y
self.transparencia = 100
self.transparencia = [0],5
self.aprender('puedeexplotar')
self.esmono = pilas.azar(0,2)
def actualizar(self):
if self.esmono == 0:
self.imagen = 'data/mono.png'
self.escala = 0.7
elif self.esmono == 1:
self.imagen = 'data/aceituna.png'
self.escala = 2
elif self.esmono == 2:
self.imagen ='data/alien.png'
self.escala = 1
pilas.actores.vincular(ficha)
grilla = [[pilas.actores.ficha(-300,150),pilas.actores.ficha(-150,150),pilas.actores.ficha(0,150),pilas.actores.ficha(150,150),pilas.actores.ficha(300,150)],
[pilas.actores.ficha(-300,0),pilas.actores.ficha(-150,0),pilas.actores.ficha(0,0),pilas.actores.ficha(150,0),pilas.actores.ficha(300,0)],
[pilas.actores.ficha(-300,-150),pilas.actores.ficha(-150,-150),pilas.actores.ficha(0,-150),pilas.actores.ficha(150,-150),pilas.actores.ficha(300,-150)]]
matriz_nueva = [[x.esmono for x in fila] for fila in grilla]
print ('matriz inicial:')
print(matriz_nueva)
def cambiar_ficha(fichas_a_eliminar):
random_cambiar = pilas.azar(0,2)
fichas_a_eliminar.transparencia = [100]
def cambiar_imagen():
fichas_a_eliminar.esmono = random_cambiar
fichas_a_eliminar.transparencia = [0],2
global matriz_nueva # GLOBAL !!!!!
matriz_nueva = [[x.esmono for x in fila] for fila in grilla]
print('Cambiando Matriz:')
print(matriz_nueva)
pilas.tareas.agregar(3, cambiar_imagen)
def eliminar_y_crear():
# Con este método se podria elegir qué fichas deben ser cambiadas.
# Se podria usar una etiqueta "eliminable = True" en las fichas
# por ejemplo:
# for ficha_eliminable in lista_fichas_eliminables:
# cambiar_ficha(ficha_eliminable)
# O aun mas facil:
# if ficha.eliminable:
# cambiar_ficha(ficha)
for ficha_eliminable in grilla[0]: #cambiamos toda la fila superior
cambiar_ficha(ficha_eliminable)
def comparar_matrices():
print('')
print('COMPARANDO MATRICES')
print('')
print ('Matriz cambiada:')
print('')
print (matriz_nueva)
pilas.tareas.agregar(5, eliminar_y_crear)
pilas.tareas.agregar(10, comparar_matrices)
pilas.ejecutar()