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


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Construir pirámide inversa, o parecido.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Construir pirámide inversa, o parecido.  (Leído 1,063 veces)
Tachikomaia


Conectado Conectado

Mensajes: 1.760


Hackentifiko!


Ver Perfil
Construir pirámide inversa, o parecido.
« en: 29 Mayo 2026, 21:16 pm »

Insertando este objeto

al que llamo Mini (luego le pondré Vigas o algo mejor)
construí 2 pisos así

Vean que el piso 1 tiene 1 hueco y son 2 plataformas,
mientras que el piso 0 tiene 0 huecos y es 1 plataforma.

Pero a partir del piso 2 quiero que la fórmula sea P huecos y P-1 plataformas, entendiendo que P es el nro de piso.
El piso 2 sería H P H
O sea, a partir de eso, siempre debe haber huecos en los costados.
El piso 3 tendrá 1 hueco más y 1 plataforma más, y así sucesivamente.

Con el código que puse para el piso 2 y siguientes, me quedó así:

Quiero que me ayuden a mejorarlo, como dije es a partir del piso 2, los anteriores ya están bien, creados de una forma más simple.
Código
  1. // Pisos siguientes: P huecos, P-1 plataformas:
  2. Piso = 1;
  3. // Agregar piso:
  4. do {
  5. Piso++;
  6. NombreDePiso = "Piso"+Piso;
  7. attachMovie("sDKPlataformas", NombreDePiso, Piso);
  8. setProperty (NombreDePiso, _x, 16);
  9. setProperty (NombreDePiso, _y, 568-18*Piso);
  10. MinisNecesariosEnPlataforma = (23-Piso)/(Piso-1);
  11. // Agregar Plataformas:
  12. PlataformasEnPiso = 0;
  13. do {
  14. NombreDePlataformas = "Plataformas"+PlataformasEnPiso;
  15. eval(NombreDePiso).attachMovie("sDKPlataformas", NombreDePlataformas, PlataformasEnPiso);
  16. RutaDePlataformas = NombreDePiso+"."+NombreDePlataformas;
  17. setProperty (RutaDePlataformas, _x, 32*MinisNecesariosEnPlataforma*PlataformasEnPiso+(PlataformasEnPiso)*32);
  18. // Agregar Minis:
  19. MinisEnPlataformas = 0;
  20. // Para evitar reconcatenar; p se entiende como punto:
  21. RutaDePlataformasp = RutaDePlataformas+".";
  22. do {
  23. NombreDeMini = "Mini"+MinisEnPlataformas;
  24. eval(RutaDePlataformas).attachMovie("sDKPlataforma", NombreDeMini, MinisEnPlataformas);
  25. setProperty (RutaDePlataformasp+NombreDeMini, _x, 32*MinisEnPlataformas);
  26. MinisEnPlataformas++;
  27. } while (MinisEnPlataformas <= MinisNecesariosEnPlataforma);
  28. PlataformasEnPiso++;
  29. } while (PlataformasEnPiso <= Piso);
  30. } while (Piso < 29);

En cuanto a por qué hacerlo de este modo, es que intento que cuando Mario salte se pueda chequear cada plataforma del piso que corresponda, otro modo sería crear los pisos enteros así nomás y taparlos con objetos del mismo color de fondo, quedaría como si fuesen agujeros, sería más fácil, pero el tema de chequear colisiones no sé si se facilita, además es como mal eso, los minis están ahí tapados, mejor que no estén.


En línea

Tachikomaia


Conectado Conectado

Mensajes: 1.760


Hackentifiko!


Ver Perfil
Re: Construir pirámide inversa, o parecido.
« Respuesta #1 en: 11 Junio 2026, 15:10 pm »

Para empezar por algo más simple ya que esto me supera, intento construir una pirámide común y corriente. Los minis o trocitos de vigas serían los ladrillos. El problema es que estoy colocando grupos de ladrillos, no coloco sueltos. Entonces:
En el piso 0 (el más de abajo) coloco 25 ladrillos, divididos en 1 grupo.
En el piso 1 coloco 24 divididos en 2 grupos.
En el piso 2, 23 dividos e 3. Y acá es donde me falla, porque si pongo 7 por grupo, van a ser 21, me faltan 2 ladrillos, y si pongo 8 por grupo me va a sobrar 1.

Que sean grupos me pareció mejor para chequear cuando Mario toca un piso, o sea, grupo1, o grupo2, etc, en vez de chequear trocito1, trocito2, etc. Pero bueno, serán grupos con agujeros que habrá que chequear distinto, no sé.

Logré esto:


Así:
Código
  1. Pisos = 0;
  2. do {
  3. Piso = "mPiso"+Pisos;
  4. // sDKPlataformas es un objeto vacío donde se insertan...
  5. // pequeñas plataformas seguidas. Sirve para chequear...
  6. // las colisiones más fácil:
  7. attachMovie("sDKPlataformas", Piso, Pisos);
  8. setProperty (Piso, _x, Pisos*16+16);
  9. setProperty (Piso, _y, 584-Pisos*18);
  10. PartesDelPiso = 0;
  11. AgujeroCada = 25/(Pisos+1);
  12. NextParteaSaltear = AgujeroCada;
  13. // Ignoro cómo llamarle, está relacionado con lo que dice:
  14. PartesRequeridas = 25-Pisos/2;
  15. do {
  16. if (PartesDelPiso >= NextParteaSaltear) {
  17. NextParteaSaltear = NextParteaSaltear+AgujeroCada;
  18. } else {
  19. Parte = "Parte"+PartesDelPiso;
  20. eval(Piso).attachMovie("sDKPlataforma", Parte, PartesDelPiso);
  21. RutaDeParte = Piso+"."+Parte;
  22. setProperty (RutaDeParte, _x, 32*PartesDelPiso);
  23. setProperty (RutaDeParte, _y, 0);
  24. }
  25. PartesDelPiso++;
  26. } while (PartesDelPiso <= PartesRequeridas);
  27. Pisos++;
  28. } while (Pisos < 30);
  29.  

Claro que así no se puede llegar al martillo, además parece demasiado obvio que conviene subir por la izquierda.
Me interesa cómo lo arreglarían pero también cómo los niveles podrían variar sin variar mucho el código, o sea cambiando algunos números o fórmulas nada más, básicamente entre mayor sea el nivel más agujeros debe haber, pero siempre debe ser posible llegar al martillo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDA][SUGERENCIAS]Programa Parecido a Gobby o servicio parecido a Sync.in
Programación General
RyogiShiki 0 4,116 Último mensaje 5 Abril 2011, 03:56 am
por RyogiShiki
Una pirámide de codicia
Noticias
wolfbcn 0 2,437 Último mensaje 6 Julio 2014, 22:21 pm
por wolfbcn
PIRAMIDE
Programación C/C++
mariano96 4 5,463 Último mensaje 13 Febrero 2015, 19:10 pm
por mariano96
ayuda con una pirámide
Programación C/C++
Exynoz 4 6,351 Último mensaje 3 Abril 2016, 21:53 pm
por Exynoz
piramide de numeros
Programación C/C++
mitzi 3 3,734 Último mensaje 23 Septiembre 2018, 18:09 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines