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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  El código simple... no funciona.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: El código simple... no funciona.  (Leído 4,128 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.412


Hackentifiko!


Ver Perfil
El código simple... no funciona.
« en: 1 Febrero 2021, 10:12 am »

Código:
   actions for fotograma 1
      // Situación inicial.
      BaseVS = 83;
      C = 55;
   actions for fotograma 2
      CChar0 = String(C).charAt(0);
      CChar1 = String(C).charAt(1);
      if (CChar0<String(BaseVS).charAt(0)) {
         set (CChar0, CChar0+1);
      } else if (CChar0>String(BaseVS).charAt(0)) {
         set (CChar0, CChar0-1);
      } else if (CChar1<String(BaseVS).charAt(1)) {
         set (CChar1, C.charAt(1)+1);
      } else if (CChar1>String(BaseVS).charAt(1)) {
         set (CChar1, C.charAt(1)-1);
      } else {
         // Solución.
         stop ();
      }
   actions for fotograma 3
      gotoAndPlay (2);

La idea es que C tenga el valor de BaseVS a través de pistas como "el 1er caracter de C es menor que el 1er caracter de BaseVS", pero lo que el caprichoso código lo que hace es
  Variable _level0.BaseVS = 83
  Variable _level0.C = 55
  Variable _level0.CChar0 = "5"
  Variable _level0.CChar1 = "5"
  Variable _level0.5 = "51"

Debería, para empezar, hacer esto:
  Variable _level0.BaseVS = 83
  Variable _level0.C = 55
  Variable _level0.CChar0 = "6"
  Variable _level0.CChar1 = "5"


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.159



Ver Perfil
Re: El código simple... no funciona.
« Respuesta #1 en: 1 Febrero 2021, 17:06 pm »

No encuentro referencia a ese Set() supongo que sirve para asignar valores a una variable :-\

De todas maneras, y si entiendo bien, tu problema es que estás concatenando caracteres en lugar de hacer una suma, y esto es porque al menos uno de los operandos (en tu caso los dos) son texto. Primero debes de convertir tus caracteres a Números, lo normal es hacerlo en un principio para no irlos poniendo a cada rato:

Código
  1. CChar0 = Number(String(C).charAt(0));
  2. CChar1 = Number(String(C).charAt(1));
  3. BChar0 = Number(String(BaseVS).charAt(0));
  4. BChar1 = Number(String(BaseVS).charAt(1));
  5.  
  6. if ( CChar0 < BChar0 ) {
  7.  CChar0 = CChar0 + 1;
  8. } else if ( CChar0 > BChar0 ) {
  9.  CChar0 = CChar0 - 1;
  10. } else if ( CChar1 < BChar1 ) {
  11.  CChar1 = C.charAt(1) + 1;
  12. } else if ( CChar1 > BChar1 ) {
  13.  CChar1 = C.charAt(1) - 1;
  14. } else {
  15.  stop();
  16. }

Citar
Variable _level0.BaseVS = 83
Variable _level0.C = 55
Variable _level0.CChar0 = 6
Variable _level0.CChar1 = 5
Variable _level0.BChar0 = 8
Variable _level0.BChar1 = 3


En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.412


Hackentifiko!


Ver Perfil
Re: El código simple... no funciona.
« Respuesta #2 en: 2 Febrero 2021, 04:21 am »

Cambia de 5 a 6 pero luego nada... No estás cambiando un caracter sino una variable.

Ni siquiera me está funcionando esto
set (C.charAt(0), 7);
set (C.charAt(0), "7");
set ("C.charAt(0)", 7);
set ("C.charAt(0)", "7");
trace(C.charAt(0));

De ninguna manera el caracter nro0 que es 5 cambia a 7.
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.159



Ver Perfil
Re: El código simple... no funciona.
« Respuesta #3 en: 2 Febrero 2021, 07:22 am »

Código
  1. set (C.charAt(0), 7);
  2. set (C.charAt(0), "7");
  3. set ("C.charAt(0)", 7);
  4. set ("C.charAt(0)", "7");
  5. trace(C.charAt(0));

1. No funciona porque C es del tipo número y no tiene el Método charAt() así que set crea una variable llamada undefined y le asigna el valor "7"

2. No funciona por que "C.charAt(0)" debe ser un nombre de variable válido, sin paréntesis

3. Igual que la línea 2

4. Devuelve undefined porque C es del tipo número y no tiene el Método charAt()

Si quieres cambiar el primer caracter  de la variable C que vale 55 a 7 puedes usar lo siguiente:

Código
  1. set( "C", 7 + String(C).charAt(1) );
  2. trace(C);
  3. stop();

Solo recuerda que el primer parámetro de Set tienes que ser del tipo String y este debe corresponder al nombre de una variable a declarar o a cambiar su valor
En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.412


Hackentifiko!


Ver Perfil
Re: El código simple... no funciona.
« Respuesta #4 en: 2 Febrero 2021, 08:37 am »

Bien, aunque pareciera que el lenguaje tiene una falla, no debería ser tan complicado, nunca me pasó en este lenguaje ver algo así.

Tampoco funcionó esto:
set ((String(C).charAt(0)), 7);
set ((String(C).charAt(0)), "7");
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.159



Ver Perfil
Re: El código simple... no funciona.
« Respuesta #5 en: 2 Febrero 2021, 14:43 pm »

Código
  1. set( (String(C).charAt(0)), 7 );
  2. set( (String(C).charAt(0)), "7" );
  3. stop();

1. Lo que hace es crear una variable llamada 5 y le asigna el valor 7

2. Cambia el valor de la variable 5 a "7"

Por eso al mostrar las variables devuelve:

Código
  1. Variable _level0.BaseVS = 83
  2. Variable _level0.C = "75"
  3. Variable _level0.CChar0 = 6
  4. Variable _level0.CChar1 = 5
  5. Variable _level0.BChar0 = 8
  6. Variable _level0.BChar1 = 3
  7. Variable _level0.5 = "7"

- Ves, se a creado una variable llamada 5 que al final tiene el valor "7"

Set es para crear variables si estas no existen, o asignar valores a las variables si estas ya existen. El primer parámetro de Set debe ser siempre un String que será el nombre de la variable a crear o a cambiar el valor. El segundo parámetro es el valor a asignar.

No uses Set  :xD, usa la asignación normal de variables que es más estándar en los lenguajes de programación, por ejemplo estos dos códigos son completamente equivalentes:


Código
  1. set( "C", 7 + String(C).charAt(1) );

Código
  1. C = 7 + String(C).charAt(1);

Siempre puedes Depurar línea a línea para ver que sucede:

En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.412


Hackentifiko!


Ver Perfil
Re: El código simple... no funciona.
« Respuesta #6 en: 2 Febrero 2021, 15:07 pm »

set también puede usar de parámetro una variable, se usa para hacer referencia a otra variable cuyo nombre es en parte el contenido de la variable a nombrar. Sé que es complicado pero...

"por ejemplo estos dos códigos son completamente equivalentes"
De acuerdo, sólo intenté modificar el char de un modo más directo, como debería ser.

No sabía lo de depurar, no sé si mi flash (macromedia 5) tiene la opción.

Ya me funciona:
Código
  1. Escena 1
  2.   actions for fotograma 1
  3.      // Situación inicial.
  4.      BaseVS = 83;
  5.      C = 55;
  6.   actions for fotograma 2
  7.      CChar0 = Number(String(C).charAt(0));
  8.      CChar1 = Number(String(C).charAt(1));
  9.      BVSChar0 = Number(String(BaseVS).charAt(0));
  10.      BVSChar1 = Number(String(BaseVS).charAt(1));
  11.      if (CChar0<BVSChar0) {
  12.         CChar0 = CChar0+1;
  13.         C = CChar0+""+CChar1;
  14.      } else if (CChar0>BVSChar0) {
  15.         CChar0 = CChar0-1;
  16.         C = CChar0+""+CChar1;
  17.      } else if (CChar1<BVSChar1) {
  18.         CChar1 = CChar1+1;
  19.         C = CChar0+""+CChar1;
  20.      } else if (CChar1>BVSChar1) {
  21.         CChar1 = CChar1-1;
  22.         C = CChar0+""+CChar1;
  23.      } else {
  24.         // Solución.
  25.         stop ();
  26.      }
  27.   actions for fotograma 3
  28.      gotoAndPlay (2);
  29.  
Entre otras cosas ponía "Char0" en vez de "CChar0".

PD: Oye, es raro que alguien use Flash ¿lo usas o lo instalaste para mi problema O_O ? Si es así muchas gracias.
« Última modificación: 2 Febrero 2021, 15:25 pm por Tachikomaia » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.159



Ver Perfil
Re: El código simple... no funciona.
« Respuesta #7 en: 2 Febrero 2021, 16:44 pm »

Como cultura general hago esas cosas, el Flash CS6 lo recopilé hace tiempo cuando me lo pidieron, ActionScript nunca programé, solo vi algo de código cuando necesité modificarlos o verlos para hacer funcionar unos SWF.

También tengo un Curso de ActionScript 2 con Flash 8 bastante viejo, he visto unos cuantos capítulos para ver más o menos el uso de Flash con ActionScript y su depurador para tu problema.

- El curso lo puedes descargar desde acá: https://we.tl/t-xF0cLMFPnz

Al final todo conocimiento es válido porque estos se encadenan con otros, instalar programas, crear ISO, instalar máquinas virtuales, buscar en Internet, entender otros lenguajes, etc, etc, etc así uno gana destreza para enfrentarse a problemas similares o diferentes con más soltura.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necesito codigo simple.
Programación Visual Basic
newbY 1 1,751 Último mensaje 9 Noviembre 2007, 00:57 am
por skapunky
Este codigo en C# no funciona (es simple)
.NET (C#, VB.NET, ASP)
& eDu & 1 2,757 Último mensaje 22 Junio 2008, 23:08 pm
por MANULOMM
No funciona este simple codigo
Programación Visual Basic
luis456 6 5,429 Último mensaje 21 Septiembre 2013, 08:50 am
por luis456
Por que no me funciona este simple codigo?
Programación C/C++
CelDavid 8 3,665 Último mensaje 10 Mayo 2019, 06:06 am
por RayR
¿Lowi no funciona? Así de simple se soluciona su problema de red
Noticias
wolfbcn 0 1,435 Último mensaje 4 Diciembre 2019, 19:26 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines