Autor Tema: Simplificar código para que un dibujo tenga X colores.

0 Usuarios y 1 Visitante están viendo este tema.

07 Octubre, 2024, 07:37 pm
Leído 566 veces

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
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.
Código: [Seleccionar]
// 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));