Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Tachikomaia en 16 Diciembre 2020, 05:10 am



Título: No logro usar números decimales bien en un código.
Publicado por: Tachikomaia en 16 Diciembre 2020, 05:10 am
Este código usa números enteros:
Código
  1. Escena 1
  2.   actions for fotograma 1
  3.      // Situación inicial.
  4.      BaseVS = 10;
  5.      // Guardar Situación inicial.
  6.      SitID = "S"+BaseVS;
  7.      set (SitID+"VS", BaseVS);
  8.      set (SitID+"C", "Ninguno");
  9.      C = 1;
  10.      // Variables de Unsolved situaciones.
  11.      U = 0;
  12.      Us = 0;
  13.   actions for fotograma 2
  14.      // Reset Situación. Aplicación.
  15.      VS = BaseVS+C;
  16.      // ¿Sol?
  17.      if (20<VS) {
  18.         // Solución; iniciar mostrar lista.
  19.         List = C;
  20.         gotoAndPlay (4);
  21.         // Sino ¿la situación está anotada?
  22.      } else if (eval("S"+VS+"VS") == undefined) {
  23.         // No. Anotarla.
  24.         SitID = "S"+VS;
  25.         set (SitID+"VS", BaseVS);
  26.         set (SitID+"C", C);
  27.         Us = Us+1;
  28.         SitID = "U"+Us;
  29.         set (SitID+"VS", VS);
  30.      }
  31.   actions for fotograma 3
  32.      // La situación existe. ¿Modificar candidato es posible?
  33.      if (C<2) {
  34.         // Modificación de candidato.
  35.         C = C+1;
  36.         gotoAndPlay (2);
  37.      } else if (U<Us) {
  38.         // Usar Unsolveds.
  39.         U = U+1;
  40.         BaseVS = eval("U"+U+"VS");
  41.         C = 1;
  42.         gotoAndPlay (2);
  43.      } else {
  44.         // No hay Solución.
  45.         stop ();
  46.      }
  47.   actions for fotograma 5
  48.      SitID = eval("S"+BaseVS+"C");
  49.      BaseVS = eval("S"+BaseVS+"VS");
  50.      if (SitID != "Ninguno") {
  51.         List = SitID+" "+List;
  52.         gotoAndPlay (4);
  53.      } else {
  54.         stop ();
  55.      }

Se divide en 2 partes:
1- Fotogramas 2y3: Obtención de situaciones y cómo llegar a ellas.
2: Fotogramas 4y5: Mostrar lista de acciones.

Es como si hubiera un objeto en el casillero 10 y lo quiero llevar a más de 20 usando movimientos +1 o +2. El resultado es 1 2 2 2 2 2, o sea llega a 21 (10+1+2*5=21).

Ahora quiero hacer que use números decimales, pero algo falla en mi nuevo código:
Código
  1. Escena 1
  2.   actions for fotograma 1
  3.      // Situación inicial.
  4.      BaseVS = 1;
  5.      // Guardar Situación inicial.
  6.      SitID = "S"+BaseVS;
  7.      set (SitID+"VS", BaseVS);
  8.      set (SitID+"C", "Ninguno");
  9.      C = 0.1;
  10.      // Variables de Unsolved situaciones.
  11.      U = 0;
  12.      Us = 0;
  13.   actions for fotograma 2
  14.      // Reset Situación. Aplicación.
  15.      VS = BaseVS+C;
  16.      // ¿Sol?
  17.      if (2<VS) {
  18.         // Solución; iniciar mostrar lista.
  19.         List = C;
  20.         gotoAndPlay (4);
  21.         // Sino ¿la situación está anotada?
  22.      } else if (eval("S"+VS+"VS") == undefined) {
  23.         // No. Anotarla.
  24.         SitID = "S"+VS;
  25.         set (SitID+"VS", BaseVS);
  26.         set (SitID+"C", C);
  27.         Us = Us+1;
  28.         SitID = "U"+Us;
  29.         set (SitID+"VS", VS);
  30.      }
  31.   actions for fotograma 3
  32.      // La situación existe. ¿Modificar candidato es posible?
  33.      if (C<0.2) {
  34.         // Modificación de candidato.
  35.         C = C+0.1;
  36.         gotoAndPlay (2);
  37.      } else if (U<Us) {
  38.         // Usar Unsolveds.
  39.         U = U+1;
  40.         BaseVS = eval("U"+U+"VS");
  41.         C = 0.1;
  42.         gotoAndPlay (2);
  43.      } else {
  44.         // No hay Solución.
  45.         stop ();
  46.      }
  47.   actions for fotograma 5
  48.      trace ("BaseVS= "+BaseVS);
  49.      trace ("String BaseVS= "+String(BaseVS));
  50.      trace ("C= "+C);
  51.      trace ("VS= "+VS);
  52.      SitID = eval("S"+BaseVS);
  53.      SitID = eval(SitID+"C");
  54.      trace ("SitID= "+SitID);
  55.      trace ("loading S"+BaseVS+"C"+" or SitID= "+SitID);
  56.      BaseVS = eval("S"+BaseVS);
  57.      BaseVS = eval(BaseVS+"VS");
  58.      trace ("loading S"+BaseVS+"VS"+" or BaseVS= "+SitID);
  59.      if (SitID != "Ninguno") {
  60.         List = SitID+" "+List;
  61.         gotoAndPlay (4);
  62.      } else {
  63.         stop ();
  64.      }

Creo que en el frame 5. Dividí en 2 partes los eval de ese frame porque me daban resultados en blanco, creo que porque por ejemplo S2.1C se interpretaría como la variable 1C dentro de un objeto S2 (que no existe y para colmo creo que el nombre de una variable no puede iniciar con un número). Aunque no estoy seguro de que lo nuevo funcione bien, ya que sigue dando un error. El programa siempre carga la misma situación, no la "madre" de ella, y la lista es 0.2 0.2 0.2... interminable.


Título: Re: No logro usar números decimales bien en un código.
Publicado por: Tachikomaia en 17 Diciembre 2020, 02:36 am
Opté por no usarlos, simulo que es todo enteros pero al final los divido entre 10 o el número que se necesite.

Ahora quisiera trabajar con negativos pero no sirve lo mismo. No sirve hacer restas y multiplicar *-1 sí pero sólo si todos son negativos, sino los positivos se convierten en negativos..

Sé que no se entiende lo que digo, pero me cansé de explicar cosas que al final no puedo explicar.