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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  (Resuelto): Programa con varios fallos a reparar.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Resuelto): Programa con varios fallos a reparar.  (Leído 2,018 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.198


Superhacker (es broma xD )


Ver Perfil
(Resuelto): Programa con varios fallos a reparar.
« en: 18 Mayo 2020, 16:52 pm »

Tengo un programa que funciona pero crea y carga archivos que debe comprobar que se hizo, con lo cual agregar al programa una variable por ejemplo requiere hacer muchas modificaciones en distintas partes, que son como 30, así que decidí empezar a usar variables en vez de archivos. El programa que uso tiene las partes separadas como si fuesen distintos archivos de texto, así que modificar cosas de varias es un trabajo chino.

El resultado por ahora es este:
Código:
Escena 1
   actions for fotograma 1
      // SitIni.
      Base.S = 5;
      // Guardar SitIni.
      SitID = "S"+Base.S;
      Depth = 1;
      attachMovie("Circ", SitID, Depth);
      set (SitID+".S", Base.S);
      set (SitID+".C", "Ninguno");
      // Cand normal.
      C = -1;
      // Vars de Unsolved sits.
      U = 0;
      Us = 0;
   actions for fotograma 2
      // Reset Sit. Aplic.
      S = Base.S+C;
      // ¿Sol?
      if (10<S) {
         // Sol; begin to show list
         List = C;
         gotoAndPlay (4);
         // Sino ¿la sit está anotada?
      } else if (eval("S"+S+".S") == null) {
         // No. Anotarla.
         SitID = "S"+S;
         Depth = Depth+1;
         attachMovie("Circ", SitID, Depth);
         set (SitID+".S", Base.S);
         set (SitID+".C", C);
         Us = Us+1;
         SitID = "U"+Us;
         Depth = Depth+1;
         attachMovie("Circ", SitID, Depth);
         set (SitID+".S", S);
      }
   actions for fotograma 3
      // ¿Candmod is pos?
      if (C<1) {
         // Candmod.
         C = C+2;
         // Reset sit, then Aplic.
         gotoAndPlay (2);
      } else {
         // ¿Hay UnsSit?
         if (U<Us) {
            // Hay, usarla.
            Base.S = eval("U"+U+".S");
            // Reset sit, then Aplic.
            gotoAndPlay (2);
         } else {
            // No se logró Sol.
            List = "No se halló Sol";
            stop ();
         }
      }
   actions for fotograma 4
      List = C+" "+List;
   actions for fotograma 6
      SitID = "S"+S+".S";
      if (eval(SitID) != "Ninguno") {
         List = eval(SitID)+" "+List;
         gotoAndPlay (5);
      } else {
         stop ();
      }
El fotograma 5 está vacío.

El objetivo es que varíe un candidato (C) y a la situación inicial, analizando si se cumple una condición (Solcond).
Si la cumple debe mostrar las situaciones anteriores y qué acción (aplicación, uso, de C) se realizó en cada una. Quizá es fuerza bruta con backtracking.

Bueno, no sé qué errores tiene. Debería mostrar "1 1 1 1 1 1" al final pero me muestra "List" que es el valor inicial de la variable list, entonces es como si no hubiera actuado.

Al ver las variables en medio del programa me salió:
Citar
Level #0:
  Variable _level0.$version = "WIN 5,0,32,0"
  Variable _level0.List = "List"
  Variable _level0.SitID = "U436"
  Variable _level0.Depth = 873
  Variable _level0.C = 1
  Variable _level0.U = 0
  Variable _level0.Us = 436
  Variable _level0.S = 1
Movie Clip:  Target="_level0.Base"
Variable _level0.Base.S = undefined
Errores a patadas.

U no debería ser 0. Si lo es significa que nunca analizó una situación a la que llegó (o que debería llegar).

En cuanto a Base.S, m... El tema es que se necesita guardar la situación, y la situación en que se produjo. Hay un objeto llamado Base, que en la versión anterior guardaba variables, pero ahora no sé bien qué se debería hacer. De hecho, las últimas cosas que hice no sé por qué las hice.

¿Soluciones, ideas? Gracias.


« Última modificación: 21 Mayo 2020, 12:50 pm por Tachikomaia » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.198


Superhacker (es broma xD )


Ver Perfil
Re: (Resuelto): Programa con varios fallos a reparar.
« Respuesta #1 en: 21 Mayo 2020, 12:50 pm »

Tras días con pausas dándole vueltas parece que lo logré:
Código:
   actions for fotograma 1
      // SitIni.
      Base.S = 5;
      // Guardar SitIni.
      SitID = "S"+Base.S;
      Depth = 1;
      attachMovie("Circ", SitID, Depth);
      setProperty (SitID, _x, random(401));
      setProperty (SitID, _y, random(301));
      set (SitID+".S", Base.S);
      set (SitID+".C", "Ninguno");
      // Cand normal.
      C = -1;
      // Vars de Unsolved sits.
      U = 0;
      Us = 0;
   actions for fotograma 2
      // Reset Sit. Aplic.
      S = Base.S+C;
      // ¿Sol?
      if (10<S) {
         // Sol; begin to show list
         List = C;
         gotoAndPlay (4);
         // Sino ¿la sit está anotada?
      } else if (eval("S"+S+".S") == undefined) {
         // No. Anotarla.
         SitID = "S"+S;
         Depth = Depth+1;
         attachMovie("Circ", SitID, Depth);
         setProperty (SitID, _x, random(401));
         setProperty (SitID, _y, random(301));
         set (SitID+".S", Base.S);
         set (SitID+".C", C);
         Us = Us+1;
         SitID = "U"+Us;
         Depth = Depth+1;
         attachMovie("Circ", SitID, Depth);
         setProperty (SitID, _x, random(401));
         setProperty (SitID, _y, random(301));
         set (SitID+".S", S);
      }
   actions for fotograma 3
      // La sit existe. ¿Candmod is pos?
      if (C<1) {
         // Candmod.
         C = C+2;
         gotoAndPlay (2);
      } else if (U < Us) {
         // Use Uns.
         U = U+1;
         Base.S = eval("U"+U+".S");
         C = -1;
         gotoAndPlay (2);
      } else {
         // No hay Sol.
         stop ();
      }
   actions for fotograma 5
      SitID = eval("S"+Base.S+".C");
      Base.S = eval("S"+Base.S+".S");
      if (SitID != "Ninguno") {
         List = SitID+" "+List;
         gotoAndPlay (4);
      } else {
         stop ();
      }
Ahora agregar complicaciones no será tan complicado, creo.

Nota: Las instrucciones:
setProperty (SitID, _x, random(401));
setProperty (SitID, _y, random(301));
...son para que el objeto aparezca en un sitio al azar, es innecesario, pero fácilmente permite ver que los objetos se están creando.


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