No confundir con mi otro tema. Este programa genera un dibujo al azar que debe tener exactamente X colores. Pienso que esta parte del código puede simplificarse (evitar algún if, algún loop, alguna variable, cosas así) pero no se me ocurre cómo. Si saben cómo, quisiera que me digan.
// Agregar, distribuir cuadraditos y asignarles un color:
CuadraditosColocados = 0;
Columna = 0;
Fila = 0;
trace ("Asignando colores para un nuevo dibujo.");
do {
CuadraditosColocados = CuadraditosColocados+1;
attachMovie("mCuadradito", "Cuadradito"+CuadraditosColocados, CuadraditosColocados);
setProperty ("Cuadradito"+CuadraditosColocados, _x, Columna*_level0.LargoDeCuadraditos);
setProperty ("Cuadradito"+CuadraditosColocados, _y, Fila*_level0.LargoDeCuadraditos);
setProperty ("Cuadradito"+CuadraditosColocados, _width, _level0.LargoDeCuadraditos);
setProperty ("Cuadradito"+CuadraditosColocados, _height, _level0.LargoDeCuadraditos);
ColorDeCuadradito = new Color("Cuadradito"+CuadraditosColocados);
ColorDeCuadradito.setRGB(_level0.PosiblesColores[random(_level0.PosiblesColores.length)]);
// Incrementar el contador de cuadraditos de ese color:
Resumen = "Color"+ColorDeCuadradito;
set(Resumen, eval(Resumen)+1);
Columna = Columna+1;
if (Columna == _level0.CuadraditosPorFila) {
Columna = 0;
Fila = Fila+1;
}
} while (CuadraditosColocados<_level0.MaxCuadradito);
// El dibujo debe tener la cantidad de colores...
// indicada por _level0.ColoresRequeridos. Por eso,
// y por practicidad, se asignará a cuadraditos al azar,
// cada uno de los colores, evitando reelegir cuadraditos.
Colores = 0;
do {
// Elegir cuadradito al azar:
CuadraditoElegido = random(_level0.MaxCuadradito)+1;
trace("CuadraditoElegido: "+CuadraditoElegido);
// Esto puede cambiar:
ElegidoValido = "Sí";
// Ver si ya fue elegido:
PunteroDeElegidos = 0;
while (Colores>PunteroDeElegidos) {
PunteroDeElegidos++;
trace("Comparando con el "+PunteroDeElegidos+", que es: "+eval("Elegido"+PunteroDeElegidos));
if (eval("Elegido"+PunteroDeElegidos) == CuadraditoElegido) {
trace("Repetido");
// Ya elegido, repetir el proceso para elegir otro:
ElegidoValido = "No";
// Terminar este loop:
PunteroDeElegidos = Colores;
}
}
if (ElegidoValido == "Sí") {
Colores++;
// Guardar en la lista al cuadradito elegido:
set("Elegido"+Colores, CuadraditoElegido);
trace("El recién elegido fue guardado en: Elegido"+Colores);
// Asignarle el color:
ColorDeCuadradito = new Color("Cuadradito"+CuadraditoElegido);
ColorDeCuadradito.setRGB(_level0.PosiblesColores[Colores-1]);
trace("Se le asignó el color "+_level0.PosiblesColores[Colores-1]);
trace("La cantidad de colores asignada es "+Colores);
}
} while (Colores<_level0.ColoresRequeridos);
// El botón queda del mismo tamaño que este dibujo:
setProperty (Boton, _width, getProperty(this, _width));
setProperty (Boton, _height, getProperty(this, _height));