Agregué traces:
on (release) {
// Los dibujos serán como el de encima de este botón:
Dibujo = 1;
ModificacionesRequeridas = 1;
// Repetir para el dibujo 1, 2, etc:
while (Dibujo < _level0.MaxCuadro+1) {
// Este if es porque el dibujo a copiar no necesita...
// ser modificado, eso sería como sustituirse por él mismo:
if (Dibujo != _parent.ID) {
Cuadradito = 0;
// Repetir hasta que todo cuadradito se haya copiado:
do {
Cuadradito++;
ColoraCopiar = new Color("_parent.Cuadradito"+Cuadradito);
ColoraSustituirse = new Color("_level0.Dibujo"+Dibujo+".Cuadradito"+Cuadradito);
ColoraSustituirse.setRGB(ColoraCopiar.getRGB());
} while (Cuadradito<_level0.MaxCuadradito);
// Los dibujos mutarán:
// De cada dibujo copia, variar cuadraditos al azar,
// de 1 hasta CuadraditosPorFila,
// aumentando por dibujo hacia derecha y abajo:
// Repetir hasta que se haya variado esa cantidad...
// de cuadraditos:
CuadraditosModificados = 0;
do {
// Para evitar que se modifique uno ya modificado,
// los modificados se guardan en una lista,
// y cuando se va a modificar uno se mira...
// que no esté en la lista, sino se elige otro:
trace("Se modificará un cuadradito del dibujo "+Dibujo);
Repetido = "No";
do {
NroDeCuadraditoaCambiar = random(_level0.MaxCuadradito)+1;
trace("El nro: "+NroDeCuadraditoaCambiar);
trace("Se verá si ya fue modificado.");
PunteroParaLista = 1;
// Ver si NroDeCuadraditoaCambiar está en la lista de modificados:
while (PunteroParaLista <= CuadraditosModificados) {
trace("Comparando con el nro "+Puntero+" de la lista de modificados.");
if (NroDeCuadraditoaCambiar == eval("CuadraditoModificado"+PunteroParaLista)) {
Repetido = "Sí";
PunteroParaLista = CuadraditosModificados+1;
trace("Ya fue modificado, se elegirá otro.");
}
PunteroParaLista++;
}
} while (Repetido == "Sí");
CuadraditoaCambiar = "_level0.Dibujo"+Dibujo+".Cuadradito"+(random(_level0.MaxCuadradito)+1);
trace("Ya se eligió uno no modificado, es: "+CuadraditoaCambiar);
ColoraSustituirse = new Color(CuadraditoaCambiar);
// A esto lo convierto a String porque...
// lo debo comparar con un string y es más fácil así.
SavedeColoraSustituirse = ""+(ColoraSustituirse.getRGB());
// trace ("SavedeColoraSustituirse: "+SavedeColoraSustituirse);
// Repetir mientras el color no cambie:
do {
NuevoColor = _parent.PosiblesColores[random(_parent.PosiblesColores.length)];
} while (NuevoColor == SavedeColoraSustituirse);
ColoraSustituirse.setRGB(NuevoColor);
// trace ("NuevoColor: "+NuevoColor);
CuadraditosModificados++;
// Agregar el cuadradito a la lista de modificados:
set("CuadraditoModificado"+CuadraditosModificados, NroDeCuadraditoaCambiar);
} while (CuadraditosModificados<ModificacionesRequeridas);
}
Dibujo++;
if (ModificacionesRequeridas <= _level0.Resto) {
ModificacionesRequeridas = Math.floor((Dibujo-1)/(_level0.DistintasMutaciones+1))+1;
} else {
ModificacionesRequeridas = Math.floor((Dibujo-1-_level0.Resto*(_level0.DistintasMutaciones+1))/(_level0.DistintasMutaciones))+1+_level0.Resto
}
}
}
Y el resultado al principio dice:
Se modificará un cuadradito del dibujo 2
El nro: 8
Se verá si ya fue modificado.
Ya se eligió uno no modificado, es: _level0.Dibujo2.Cuadradito2
Se modificará un cuadradito del dibujo 3
El nro: 13
Se verá si ya fue modificado.
Ya se eligió uno no modificado, es: _level0.Dibujo3.Cuadradito14
Se modificará un cuadradito del dibujo 4
El nro: 14
Se verá si ya fue modificado.
Ya se eligió uno no modificado, es: _level0.Dibujo4.Cuadradito16
Se modificará un cuadradito del dibujo 5
El nro: 11
Se verá si ya fue modificado.
Ya se eligió uno no modificado, es: _level0.Dibujo5.Cuadradito8
Se modificará un cuadradito del dibujo 5
El nro: 10
Se verá si ya fue modificado.
Comparando con el nro de la lista de modificados.
Ya se eligió uno no modificado, es: _level0.Dibujo5.Cuadradito15
Se modificará un cuadradito del dibujo 6
Que empiece por el dibujo 2 está bien.
Que diga que eligió el cuadradito 8 y luego diga que el elegido es el 2, está mal, no sé qué pasa ahí ¿qué pasa?
Del dibujo 3 dice que modificará el cuadradito 13 pero luego dice que modificó el 14, lo mismo.
Con los demás pasa lo mismo.
Que modifique 2 del dibujo 5 está bien, pero cuando compara el candidato a modificado con los modificados debería decir cuales son los que está comparando, quizá olvidé poner ese trace.
El dibujo 10 no lo termina de modificar, dice:
Se modificará un cuadradito del dibujo 10
El nro: 15
Se verá si ya fue modificado.
Ya se eligió uno no modificado, es: _level0.Dibujo10.Cuadradito7
Se modificará un cuadradito del dibujo 10
El nro: 16
Se verá si ya fue modificado.
Comparando con el nro de la lista de modificados.
Ya se eligió uno no modificado, es: _level0.Dibujo10.Cuadradito1
Se modificará un cuadradito del dibujo 10
El nro: 16
Se verá si ya fue modificado.
Comparando con el nro de la lista de modificados.
Comparando con el nro de la lista de modificados.
Ya fue modificado, se elegirá otro.
El nro: 1
Se verá si ya fue modificado.
Comparando con el nro de la lista de modificados.
Comparando con el nro de la lista de modificados.
El nro: 2
Algo falla ahí, antes de decir "El nro: 2" debería decir "Ya se eligió uno no modificado, es..." o "Ya fue modificado, se elegirá otro.".
El programa se repite en eso, básicamente, lo último que muestra (luego de indicar que está tardando demasiado y que yo lo detenga) es:
El nro: 6
Se verá si ya fue modificado.
Comparando con el nro de la lista de modificados.
Comparando con el nro de la lista de modificados.
El nro: 4
Se verá si ya fue modificado.
¿Cómo corrijo esos errores?