En programas que hacen poco, el print o lo que sea se pone casi al final, para mostrar el resultado de la tarea. Nada más.
En programas que hacen muchas cosas, lo mismo pero los prints también se ponen antes de ciertos procesos o después para indicar en qué parte del programa va, o qué está analizando en el momento. Lo vemos cuando copiamos muchos archivos por ejemplo, se indica cual se está copiando.
Parece una cuestión obvia de resolver.
Pero yo tengo un programa que me cuesta decidir o entender dónde quisiera poner los prints si tuviera un criterio que me parezca bueno. En cierto punto sólo ponía uno al final. Luego poco a poco pasé a seguir este patrón generalmente: Comentario, cambio, print. Luego empecé a creer que no tiene sentido hacer print de cada cambio porque si una cosa funciona bien no es necesario indicar que otra lo hizo, por ejemplo indicar que una variable cambió parece innecesario si enseguida se aplicará para algo. Así, quité todos los prints (en mi caso traces) del fotograma 1 excepto uno que muestra lo mismo que otra cosa así que lo quitaré también, no me di cuenta. Ahora iba a analizar el resto y, no sé bien qué hacer...
Código
actions for fotograma 1 function InsertarNodoyFlecha () { // Insertar Nodo: Imagenes = Imagenes+1; Nodos = Nodos+1; Grafo.attachMovie("mNodo", "Nodo"+Nodos, Imagenes); // Especificar la situación que representa: set ("Grafo.Nodo"+Nodos+".EnHP", EnHP); // Insertar flecha: Imagenes = Imagenes+1; Grafo.attachMovie("mFlecha", "Flecha"+Nodos, Imagenes); // Especificar el sitio donde se insertan: PosicionY = PadrePosicionY+33; setProperty ("Grafo.Nodo"+Nodos, _y, PosicionY); setProperty ("Grafo.Flecha"+Nodos, _x, PadrePosicionX); setProperty ("Grafo.Flecha"+Nodos, _y, PadrePosicionY+6.5); Hijos = Hijos+1; // Como por ahora casi todo padre tiene 1 hijo, este if agiliza el proceso creo: if (Hijos == 1) { PosicionX = PadrePosicionX; setProperty ("Grafo.Nodo"+Nodos, _x, PosicionX); } else { Hijo = 0; MinPosicionX = PadrePosicionX-16.5*(Hijos-1); SAquedebeActualizarse = SAs-Hijos; do { Hijo = Hijo+1; PosicionX = (Hijo-1)*33+MinPosicionX; setProperty ("Grafo.Nodo"+(Nodos-Hijos+Hijo), _x, PosicionX); // Actualizar datos de las posiciones guardadas: SAquedebeActualizarse = SAquedebeActualizarse+1; set ("SA"+SAquedebeActualizarse+"PosicionX", PosicionX); // Establecer rotación 0 a la flecha para que su altura de se modifique bien: setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _rotation, 0); // Especificar rotación y tamaño de flecha: DistanciaXPadreHijo = Math.abs(Math.abs(PadrePosicionX)-Math.abs(PosicionX)); setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _height, Math.sqrt(DistanciaXPadreHijo*DistanciaXPadreHijo+20*20)); Rotacion = 180/Math.PI*Math.atan(DistanciaXPadreHijo/20*-1); // Si el hijo está a la izquierda del padre, invertir la rotación: if (PosicionX<PadrePosicionX) { Rotacion = Rotacion*-1; } setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _rotation, Rotacion); } while (Hijo<Hijos); } } Respuesta = "Vencer al enemigo mediante acciones, el enemigo tiene 11 HP. Se recomienda la serie... "; // Situación inicial: // HP inicial del enemigo: EnBaseHP = 33; trace ("EnBaseHP: "+EnBaseHP); // Guardar situación y cómo se produjo: // Parte inicial del nombre de los datos (en este caso S11): SitID = "S"+EnBaseHP; // Acción realizada en la situación anterior (en este caso ninguna): set (SitID+"ActionAnterior", "Ninguna"); // En este caso la variable es S11Action y su valor es "Ninguna". // Posición X e Y del nodo que representa la situación desde la cual se originó la que será representada por otro nodo... // ...pero en este caso es la posición del 1er nodo. PadrePosicionX = 0; PadrePosicionY = 0; // Cantidad de imágenes insertadas: Imagenes = 1; // Cantidad de nodos del grafo a mostrar: Nodos = 1; // Insertar nodo inicial: Grafo.attachMovie("mNodo", "Nodo1", 1); // Especificar la situación que representa: Grafo.Nodo1.EnHP = EnBaseHP; // Hijos del nodo de la situación que se está analizando: Hijos = 0; // Acción que será usada 1ero: Action = 1; // Variables sobre situaciones anotadas: // Total de situaciones anotadas: SAs = 0; // Situación anotada que será investigada 1ero: SiguienteSAaInvestigar = 0; actions for fotograma 2 trace ("Reset de la situación, aplicación de la acción, la situación ahora es:"); EnHP = EnBaseHP-Action; trace ("EnHP: "+EnHP); // ¿Se logró el objetivo? if (EnHP<=0) { trace ("Solución hallada, iniciando proceso para mostrar cómo causarla."); Serie = Action; InsertarNodoyFlecha(); gotoAndPlay (5); } else { trace ("No se logró el objetivo."); // ¿La situación producida está anotada? if (eval("S"+EnHP+"ActionAnterior") == undefined) { trace ("La situación producida no está anotada."); trace ("Se anotará y cómo se logró."); SitID = "S"+EnHP; set (SitID+"EnHPAnterior", EnBaseHP); set (SitID+"ActionAnterior", Action); trace ("Ahora está anotada: "+SitID); trace ("Su antecedente fue ("+SitID+"EnHPAnterior): "+EnBaseHP); trace ("y la acción fue ("+SitID+"ActionAnterior): "+Action); // También se agrega como situación a investigar y se anota en qué consiste: SAs = SAs+1; SitID = "SA"+SAs; set (SitID+"EnHP", EnHP); trace ("Situaciones anotadas: "+SAs); trace ("La última consiste en (EnHP): "+eval(SitID+"EnHP")); // Se inserta el nodo que la representa y se guarda su posición: InsertarNodoyFlecha(); set (SitID+"PosicionX", PosicionX); trace (SitID+"PosicionX: "+PosicionX); set (SitID+"PosicionY", PosicionY); } else { trace ("La situación producida ya está anotada."); } } actions for fotograma 3 // ¿Modificar acción es posible? if (Action<7) { trace ("Es posible modificar acción."); Action = Action+1; trace ("Action fue modificada, es: "+Action); gotoAndPlay (2); } else { trace ("No es posible modificar la acción."); if (SiguienteSAaInvestigar<SAs) { // Aún hay situaciones anotadas sin investigar, investigar una (probablemente lo ideal sería investigar la más diferente a las investigadas, pero me es difícil programar eso): trace ("Aún hay situaciones anotadas sin investigar."); SiguienteSAaInvestigar = SiguienteSAaInvestigar+1; EnBaseHP = eval("SA"+SiguienteSAaInvestigar+"EnHP"); trace ("Se investigará la situación anotada nro: "+SiguienteSAaInvestigar); trace ("Consiste en EnBaseHP: "+EnBaseHP); // Guardar su posición para saber dónde poner a sus posibles hijos: PadrePosicionX = eval("SA"+SiguienteSAaInvestigar+"PosicionX"); trace ("Nuevo PadrePosicionX: "+PadrePosicionX); PadrePosicionY = eval("SA"+SiguienteSAaInvestigar+"PosicionY"); Hijos = 0; // Reset de la acción a usar: Action = 1; trace ("Reset de la acción a usar, es: "+Action); gotoAndPlay (2); } else { trace ("No hay situaciones anotadas sin investigar ni es posible lograr el objetivo."); Respuesta = "No es posible lograr el objetivo."; } } actions for fotograma 5 // Obtener acción anterior: ActionAnterior = eval("S"+EnBaseHP+"ActionAnterior"); trace ("La acción anterior fue: "+ActionAnterior); // ¿Hubo? if (ActionAnterior != "Ninguna") { // Sí, agregarla en la lista: Serie = ActionAnterior+" "+Serie; trace ("Acción agregada en la serie."); // Averiguar cual fue la situación anterior: EnBaseHP = eval("S"+EnBaseHP+"EnHPAnterior"); trace ("Se realizó en la situación: S"+EnBaseHP); // Repetir este frame. gotoAndPlay (4); } else { // No hubo una acción anterior, mostrar la serie: trace (Respuesta+Serie); stop (); }
Además hay cosas como esta:
// Aún hay situaciones anotadas sin investigar, investigar una (probablemente lo ideal sería investigar la más diferente a las investigadas, pero me es difícil programar eso):
trace ("Aún hay situaciones anotadas sin investigar.");
Es decir un trace que dice lo mismo que el comentario, por lo que parece que debería borrar el comentario, pero el comentario dice más cosas que no tiene sentido decir en un trace. Ahora se me ocurre poner el trace y luego el comentario quitando lo que ya se dice en el trace, sí, puede que sea una solución muy obvia pero no me di cuenta en parte por intentar seguir el patrón que mencioné.