elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿Cómo me conviene poner el código para dibujos simétricos?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo me conviene poner el código para dibujos simétricos?  (Leído 619 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.689


Hackentifiko!


Ver Perfil
¿Cómo me conviene poner el código para dibujos simétricos?
« en: 7 Enero 2026, 08:10 am »

El programa es un generador de 3 tipos de imágenes por ahora:

MuchoAzar: Lo que sería cada píxel lo pinta de un color al azar de una lista:


Cuadrados:


Y el que intento agregar: AzarrazA, que es como el azar pero simétrico así horizontalmente como se muestran las letras, no verticalmente.

Cuando se presiona un botón para cambiar el modo (en este caso a MuchoAzar), sucede esto:
Código
  1. on (release) {
  2. Modo = "MuchoAzar";
  3. RepintarCuadraditos();
  4. }

Es decir se usa esto:
Código
  1. function RepintarCuadraditos () {
  2. NroDelCuadroaRepintar = 0;
  3. do {
  4. NroDelCuadraditoaRepintar = 0;
  5. // p representa un ".", "punto".
  6. Cuadro_pCuadradito = "Cuadro"+NroDelCuadroaRepintar+".Cuadradito";
  7. if (Modo == "Cuadrados") {
  8. // Inicialmente los cuadraditos del cuadro tendrán...
  9. // el mismo color:
  10. ColorDelCuadro = PosiblesColores[random(PosiblesColores.length)];
  11. trace("ColorDelCuadro: "+ColorDelCuadro);
  12. }
  13. do {
  14. Cuadro_pCuadradito_ = Cuadro_pCuadradito+NroDelCuadraditoaRepintar;
  15. ParaColorDeCuadradito = new Color(Cuadro_pCuadradito_);
  16. if (Modo == "MuchoAzar") {
  17. ParaColorDeCuadradito.setRGB(PosiblesColores[random(PosiblesColores.length)]);
  18. } else if (Modo == "Cuadrados") {
  19. ParaColorDeCuadradito.setRGB(ColorDelCuadro);
  20. }
  21. NroDelCuadraditoaRepintar++;
  22. } while (NroDelCuadraditoaRepintar<Cuadraditos);
  23. NroDelCuadroaRepintar++;
  24. if (Modo == "Cuadrados") {
  25. GenerarCuadrados();
  26. }
  27. } while (NroDelCuadroaRepintar<Cuadros);
  28. }

En ese código debo poner el caso para el modo AzarrazA ¿cómo me conviene ponerlo?
Es que en ese código todos los cuadraditos se pintan de una u otra forma, pero en este caso si están a la derecha del medio (de un cuadro, no de la pantalla) van a tener que imitar el color que se haya seleccionado para su pixel (o cuadradito) opuesto, lo que se me acaba de ocurrir es poner:
Código
  1. if (Modo == "MuchoAzar") {
  2. ParaColorDeCuadradito.setRGB(PosiblesColores[random(PosiblesColores.length)]);
  3. } else if (Modo == "AzarrazA") {
  4. Si el cuadradito a pintar no está a la derecha del centro del cuadro:
  5. ParaColorDeCuadradito.setRGB(PosiblesColores[random(PosiblesColores.length)]);
  6. sino
  7. pintarlo igual que su opuesto
  8. fin del si
  9. } else if (Modo == "Cuadrados") {
  10. ParaColorDeCuadradito.setRGB(ColorDelCuadro);
  11. }

Creo que con eso estaría bien, pensé que no porque tengo la manía de querer evitar ifs, ah, cierto ¿no sería mejor crear un código aparte para los que deba pintar al azar y luego otro para los que deban ser imitaciones? El problema es que parece más complicado hacerlo.


« Última modificación: 7 Enero 2026, 08:39 am por Tachikomaia » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.689


Hackentifiko!


Ver Perfil
Re: ¿Cómo me conviene poner el código para dibujos simétricos?
« Respuesta #1 en: 11 Enero 2026, 12:24 pm »

Me gustó esto:
Código
  1. // Usada al cambiar ciertas configuraciones y en el objeto Fondo si el modo cambiando está configurado:
  2. function RepintarCuadrosMuchoAzar () {
  3. NroDelCuadroaRepintar = 0;
  4. do {
  5. NroDelCuadraditoaRepintar = 0;
  6. // p representa un ".", "punto".
  7. Cuadro_pCuadradito = "Cuadro"+NroDelCuadroaRepintar+".Cuadradito";
  8. do {
  9. Cuadro_pCuadradito_ = Cuadro_pCuadradito+NroDelCuadraditoaRepintar;
  10. ParaColorDeCuadradito = new Color(Cuadro_pCuadradito_);
  11. ParaColorDeCuadradito.setRGB(PosiblesColores[random(PosiblesColores.length)]);
  12. NroDelCuadraditoaRepintar++;
  13. } while (NroDelCuadraditoaRepintar<Cuadraditos);
  14. NroDelCuadroaRepintar++;
  15. } while (NroDelCuadroaRepintar<Cuadros);
  16. }
  17. function RepintarCuadrosCuadrados () {
  18. NroDelCuadroaRepintar = 0;
  19. do {
  20. NroDelCuadraditoaRepintar = 0;
  21. // p representa un ".", "punto".
  22. Cuadro_pCuadradito = "Cuadro"+NroDelCuadroaRepintar+".Cuadradito";
  23. // Inicialmente los cuadraditos del cuadro tendrán el mismo color:
  24. ColorDelCuadro = PosiblesColores[random(PosiblesColores.length)];
  25. do {
  26. Cuadro_pCuadradito_ = Cuadro_pCuadradito+NroDelCuadraditoaRepintar;
  27. ParaColorDeCuadradito = new Color(Cuadro_pCuadradito_);
  28. ParaColorDeCuadradito.setRGB(ColorDelCuadro);
  29. NroDelCuadraditoaRepintar++;
  30. } while (NroDelCuadraditoaRepintar<Cuadraditos);
  31. NroDelCuadroaRepintar++;
  32. GenerarCuadrados();
  33. } while (NroDelCuadroaRepintar<Cuadros);
  34. }
Me falta agregar modos pero cada uno tiene su propia función, de esa manera no hay tantos ifs dentro de un while. Para determinar a qué función llamar se hace:
eval("RepintarCuadros"+Modo)();


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines