Autor Tema: Generar estructuras de secuencias de acciones evitando redundancias, etc.

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

17 Julio, 2026, 04:06 pm
Leído 218 veces

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Quizá no está bien expresado.

El contexto no se limita a juegos pero parece que los ejemplos más sencillos son de ahí, por ejemplo una secuencia es
"Darle la pelota a Messi
llegar al área de penal
patear"

otra es
"si se está en el área penal, patear,
sino si hay un jugador más adelante, pasarle la pelota,
sino avanzar"

Pero una estructura es, en el 1er caso
1
2
3
donde cada número representa una acción, parecido a Lógica no importa el contenido sino la forma.

En el 2ndo caso
Código: [Seleccionar]
Si
   1
sino si
   2
sino
   3

Quiero que un programa genere estructuras así. Pongo lo que llevo hecho:

Frame 1:
Código: (actionscript) [Seleccionar]
// Para códigos de 1 cosa (acción, if, do while o while):
//
// Las líneas se guardarán en elementos de arrays,
// así que en este contexto nro de línea y de elemento...
// son lo mismo:
CodesLV1 = 0;
// Generar código agregando acción:
set ("LV1Code"+CodesLV1, new Array("1"));
// Generar código agregando if:
CodesLV1++;
set ("LV1Code"+CodesLV1, new Array("if", "}"));
// Generar código agregando do while:
CodesLV1++;
set ("LV1Code"+CodesLV1, new Array("do {", "} while"));
// Generar código agregando while:
CodesLV1++;
set ("LV1Code"+CodesLV1, new Array("while {", "}"));
//
// Mostrar los códigos:
CodeaMostrar = 0;
do {
NombredeNewCode = "LV1Code"+CodeaMostrar;
trace (NombredeNewCode);
TextoLineaPorLinea = eval(NombredeNewCode).join("\n");
trace (TextoLineaPorLinea+"\n");
CodeaMostrar++;
} while (CodeaMostrar<=CodesLV1);

Salida:
Citar
LV1Code0
1

LV1Code1
if
}

LV1Code2
do {
} while

LV1Code3
while {
}

Está bien.

Frame 2:
Código: (actionscript) [Seleccionar]
// Para códigos de 2 cosas:
CodesLV2 = -1;
CodeBase = -1;
do {
CodeBase++;
LineaDondeAgregar = -1;
do {
CodesLV2++;
NombredeNewCode = "LV2Code"+CodesLV2;
LineaDondeAgregar++;
// Para generar código agregando acción, 1ero se copia a otro:
set (NombredeNewCode, eval("LV1Code"+CodeBase).slice());
// Insertar en la posición LineaDondeAgregar
// Parámetros: (índice, elementos_a_eliminar, nuevo_elemento)
eval(NombredeNewCode).splice(LineaDondeAgregar, 0, "2");
trace (NombredeNewCode);
TextoLineaPorLinea = eval(NombredeNewCode).join("\n");
trace (TextoLineaPorLinea+"\n");
} while (LineaDondeAgregar<eval("LV1Code"+CodeBase).length);
} while (CodeBase < CodesLV1);
stop ();

Salida:
Citar
LV2Code0
2
1

LV2Code1
1
2

LV2Code2
2
if
}

LV2Code3
if
2
}

LV2Code4
if
}
2

LV2Code5
2
do {
} while

LV2Code6
do {
2
} while

LV2Code7
do {
} while
2

LV2Code8
2
while {
}

LV2Code9
while {
2
}

LV2Code10
while {
}
2

Cosas que deben corregirse o agregarse:
- No debe haber "2" si antes no hay "1".
- Lo que esté dentro de un if o loop, debe tener 3 espacios.
- Sólo se está agregando "2", se debe también agregar if, etc, y else en caso de haber if.

¿Bien? ¿alguien lo hace? ¿alguna duda? ¿alguna optimización que se les ocurra, o mejores nombres?