Foro SofosAgora

Foro abierto a los intereses de sus usuarios. Debate, aprende y diviértete.
Fecha actual 01 Abr 2020, 03:29

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 15 mensajes ]  Ir a página Anterior  1, 2
Autor Mensaje
NotaPublicado: 26 Mar 2020, 07:35 
Desconectado
Avatar de Usuario

Registrado: 28 Ene 2015, 21:06
Mensajes: 510
Tachikomaia escribió:
Por cierto, ya no sé siquiera si funciona, me entraron dudas porque de tanto no entender...


:roll: :roll:


Última edición por Agu el 26 Mar 2020, 07:45, editado 1 vez en total

Arriba
 Perfil  
Responder citando  
NotaPublicado: 26 Mar 2020, 10:16 
Desconectado

Registrado: 07 Ene 2015, 12:22
Mensajes: 1880
Código:
S=5
C=-1

DO 
     IF ¿S no es NEW?
          Guardar S
     ELSE IF ¿Hay más C?
          C++
          Reset S
     ELSE IF ¿Hay más S?
          Reset C
          Cambiar base S
WHILE ¿S > C?


Es lo que interpreto, pero seguro está mal, porque no eres claro expresando qué quieres hacer, podría ser un WHILE
pero que hay un bucle (o varios) por lo que he entendido es seguro.

Tachikomaia escribió:
Imagen
Esto es un follón, seguramente está bien, pero hay que hacer primero cosas más sencillas.

No sé si te servirá algo de lo que he expuesto, mucho me temo que no. Procura explicarte bien del todo.

Suerte

_________________
La iluminación no se alcanza fantaseando sobre la luz, sino haciendo consciente la oscuridad.
Carl Gustav Jung


Arriba
 Perfil  
Responder citando  
NotaPublicado: 27 Mar 2020, 05:03 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 10258
A ver, son 2 códigos. Uno tiene 1PS, lo postee al inicio y funciona, acabo de reverlo. Lo que pasa también es que una vez hice un programa que parecía funcionar bien pero era casualidad. Digamos que debía poner cierto objeto en el centro pero no lo ponía ahí sino encima de otro que estaba en el centro.
El otro código no sé si lo mencioné, tiene 2PS. Por ahora no importa.

Esto lo tenía de antes:
Spoiler: show
Imagen

Es importante, los anteriores sólo fueron una antesala o requerimiento para ese. Casi todos los problemas requieren más de una acción para solucionarlos (>1 acts to sol) por eso quise llegar rápido a eso, que es como la esencia del trabajo en cuestión.

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
NotaPublicado: 27 Mar 2020, 05:42 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 10258
El code de Caba creo que está bien, pero vamos paso a paso con el mío.

Código:
   actions for fotograma 1
      // SitIni.
      Base.S = 5;
      // CandIni.
      Actual.C = -1;
      // Vars de Unsolved sits.
      Actual.U = 0;
      Actual.Us = 0;
      // Save iniSit y preparar comprobación.
      S = 5;
      C = "Ninguno";
      Loading.S = -1;
      Loading.C = -1;
      Loading.Cargas = 0;
      Loading.ArchID = "S"+S+".txt";
      fscommand ("save", Loading.ArchID);
Con eso se crea un archivo llamado S5 y que contiene S y C.

Base.S = 5;
Imagino que sirve para resetear la situación, esto marca cómo era.

Actual.C = -1;
Imagino que para que las acciones no se guarden en los archivos, ya que no siempre es recomendable.

Actual.U = 0;
Actual.Us = 0;
Variables que sirven para cargar situaciones no analizadas. Una es para contar cuántas son y la otra var no sé.

Loading.S = -1;
Loading.C = -1;
Esas son variables que marcan valores distintos a S y C para saber cuando el archivo fue cargado (cuando eso sucede toman el valor de las variables S y C).

Loading.Cargas = 0;
Loading.ArchID = "S"+S+".txt";
Uno cuenta los intentos de cargar un archivo y el otro agiliza la referencia al archivo.

Hay fotogramas, como el 2, que se usan para dar tiempo al save/load, cosa que es asunto del funcionamiento de Flash, nada que ver con mis códigos.

Código:
   actions for fotograma 3   
      Loading.Comps = 0;   
      Loading.Cargas = Loading.Cargas+1;   
      loadVariables (Loading.ArchID, "Loading");
Iniciación de los conteos de comparaciones, y una carga, el intento de cargar el archivo.

Código:
   actions for fotograma 5
      Loading.Comps = Loading.Comps+1;
      Loading.Verif = 1;
      if (Loading.S != S) {
         Loading.Verif = 0;
      } else if (Loading.C != C) {
         Loading.Verif = 0;
      }
      if (Loading.Verif == 0) {
         if (Loading.Comps == 10) {
            if (Loading.Cargas == 3) {
               fscommand ("save", "30 fallas en savecheck de "+Loading.ArchID);
               fscommand ("quit");
            } else {
               // reload.
               gotoAndPlay (3);
            }
         } else {
            // retry.
            gotoAndPlay (4);
         }
      }
Se hacen comparaciones y reloads de las variables. Si hay muchas fallas se indica, pero nunca me pasó aún si todo está bien definido.

Hasta ahora los fotogramas se ejecutan 1 vez.

Código:
   actions for fotograma 6
      // Reset Sit. Aplic.
      Actual.S = Base.S+Actual.C;
      // ¿Sol?
      if (10<Actual.S) {
         // Sol; begin loads to show list
         List = Actual.C;
         gotoAndPlay (26);
      } else {
         // ¿Sit exist?
         Loading.Cargas = 0;
         Loading.S = -10;
         Loading.C = -10;
         Loading.ArchID = "S"+Actual.S+".txt";
      }
A este sí se retorna muchas veces. Se comienza reseteando la situación y aplicándole cambios. No entiendo por qué no se hace con C y S.
Si se halla solución se empiezan a cargar situaciones mostrando cómo se llegó a ella.
Sino se analiza si la situación es nueva o no.

Código:
   actions for fotograma 7
      Loading.Comps = 0;
      Loading.Cargas = Loading.Cargas+1;
      loadVariables (Loading.ArchID, "Loading");
Esto ya se ha visto o muy parecido.

Código:
   actions for fotograma 9
      Loading.Comps = Loading.Comps+1;
      Loading.Verif = 1;
      if (Loading.S == -10) {
         Loading.Verif = 0;
      } else if (Loading.C == -10) {
         Loading.Verif = 0;
      }
      if (Loading.Verif == 0) {
         if (Loading.Comps == 10) {
            if (Loading.Cargas == 3) {
               // La Sit parece no existir, crearla.
               S = Base.S;
               C = Actual.C;
               Loading.Cargas = 0;
               Loading.ArchID = "S"+Actual.S+".txt";
               gotoAndPlay (15);
            } else {
               // reload.
               gotoAndPlay (7);
            }
         } else {
            // retry.
            gotoAndPlay (8);
         }
      }
De nuevo algo muy parecido a otra cosa, pero acá no se indica un error sino que se envía a crear una sit en la lista de no analizadas.

Código:
   actions for fotograma 10
      // La sit existe. ¿Candmod is pos?
      if (Actual.C<1) {
         // Candmod.
         Actual.C = Actual.C+2;
         // Reset sit, then Aplic.
         gotoAndPlay (6);
      } else {
         // Load UnsSit.
         Actual.U = Actual.U+1;
         Loading.Cargas = 0;
         Base.S = -10;
         Loading.ArchID = "U"+Actual.U+".txt";
      }
Si la sit existe entonces no se requiere guardarla sino probar otras acciones en la que se estaba probando. Eso es Candmod. Pero si Candmod no es posible entonces se carga otra situación.

En cuando a U y Uns creo que lo entendí. U marca qué o cuántas sits se probaron, mientras que Uns marca cuántas hay para cargar.

Bueno, en otro momento sigo.

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
NotaPublicado: 27 Mar 2020, 20:53 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 10258
De momento no sé cómo continuar, pero escribir aquí parece ayudarme.

Frame 11:
Código:
      Loading.Comps = 0;
      Loading.Cargas = Loading.Cargas+1;
      loadVariables (Loading.ArchID, "Base");
Se intentará cargar una situación no analizada.

Frame 13:
Código:
if (Base.S == -10) {
    Loading.Comps = Loading.Comps+1;
    if (Loading.Comps == 10) {
        if (Loading.Cargas == 3) {
            fscommand ("save", "30 fallas en loading "+Loading.ArchID);
            fscommand ("quit");
        } else {
            // reload.
            gotoAndPlay (11);
        }
    } else {
        // retry.
        gotoAndPlay (12);
    }
}
Se prueba varias veces, esperando e incluso recargando. Si con todo eso da error, el programa lo informa y se acaba. No me ha pasado en condiciones normales.

14
Código:
Base.S = Number(Base.S);
// Reset Cand. Aplic.
Actual.C = -1;
gotoAndPlay (6);
Las cosas se cargan como texto, por eso se pasa a número, porque así es como se usará.
Se resetea al candidato porque se aplicará a una situación nueva, aunque debería terminar de analizar la que estaba analizando, no entiendo. A ver si saco eso qué pasa... Funcionó igual.

Wait
+

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 15 mensajes ]  Ir a página Anterior  1, 2

Todos los horarios son UTC + 1 hora [ DST ]


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
POWERED_BY
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO