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í:
Pisos = 0;
do {
Piso = "mPiso"+Pisos;
// sDKPlataformas es un objeto vacío donde se insertan...
// pequeñas plataformas seguidas. Sirve para chequear...
// las colisiones más fácil:
attachMovie("sDKPlataformas", Piso, Pisos);
setProperty (Piso, _x, Pisos*16+16);
setProperty (Piso, _y, 584-Pisos*18);
PartesDelPiso = 0;
AgujeroCada = 25/(Pisos+1);
NextParteaSaltear = AgujeroCada;
// Ignoro cómo llamarle, está relacionado con lo que dice:
PartesRequeridas = 25-Pisos/2;
do {
if (PartesDelPiso >= NextParteaSaltear) {
NextParteaSaltear = NextParteaSaltear+AgujeroCada;
} else {
Parte = "Parte"+PartesDelPiso;
eval(Piso).attachMovie("sDKPlataforma", Parte, PartesDelPiso);
RutaDeParte = Piso+"."+Parte;
setProperty (RutaDeParte, _x, 32*PartesDelPiso);
setProperty (RutaDeParte, _y, 0);
}
PartesDelPiso++;
} while (PartesDelPiso <= PartesRequeridas);
Pisos++;
} while (Pisos < 30);
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.