CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 11 Jul 2020 06:23

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 32 mensajes ]  Ir a página 1, 2, 3  Siguiente
Autor Mensaje
 Asunto: Recibir texto?
NotaPublicado: 21 Dic 2005 15:15 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 30 Nov 2005 20:53
Mensajes: 136
Ubicación: Lima - Perú
Hay alguna forma de recibir texto en el InformATE???

Es decir.... Yo quiero que el usuario ingrese un número, el parser lo tome y lo procese...

Para tenerlo más claro..estoy haciendo un programa de Decimal a Binario con InformATE :D Y ya está listo....Pero necesito que el usuario ingrese un número, para poder devolver su correspondiente en binario :cry:

Obviamente....puede ser cualquier número.....He buscado en la DM4 y en la IBG, pero no he encontrado nada :(

Aquí­ está mi código....

Código:
Constant Historia "Decimal a Binario^";
Constant Titular "^Blag - SinglePath games design. ";
Release 1;

Include "EParser";
Include "Acciones";

Object Programa "Programa"
    with descripcion "Programa",
has luz;

Object Num "Numero" Programa
   with nombre 'numero',
   antes
   [;
   examinar: Decimal_a_Binario(5);
           "";   
   ],
has masculino;

[Decimal_a_Binario num suma expo digito;
suma = 0;
expo = 1;

while (num > 0)
{
digito = num % 2;
num = num / 2;
suma = suma + digito * expo;
expo = expo * 10;
}
print suma;
];

[Inicializar;
localizacion = Programa;
];

Include "Gramatica";


Yo sé que el InformATE no está diseñado para esto...pero lo necesito para un artí­culo de mi revista Código Latino 8) Ya tengo el mismo código en unos 17 lenguajes :twisted:

Saludos,

Blag :twisted:

_________________
Alvaro Tejada Galindo
Consultor ABAP Senior - Mentor SAP
http://atejada.blogspot.com
http://tinyurl.com/jnlfd
Lima - Perú


Arriba
 Perfil  
 
NotaPublicado: 21 Dic 2005 16:39 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Blag escribió:
Ya tengo el mismo código en unos 17 lenguajes


Ah, entonces igual te interesa el proyecto PAEE

Es un poyecto de Presi, para portar su aventura a el máximo de lenguajes de programación y máquinas posibles.
No creo que consigas ganarle. ;)

Saludos
Jenesis


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Dic 2005 16:43 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 30 Nov 2005 20:53
Mensajes: 136
Ubicación: Lima - Perú
Citar:
Ah, entonces igual te interesa el proyecto PAEE


Wow! :shock: Muy interesante...Y muy buen trabajo :D

Aunque a diferencia de Presi :wink: Lo que yo estoy portando es mi programa de Decimal a Binario y no un juego de IF :P

De todos modos, muchas gracias por el enlace 8)

Saludos,

Blag :twisted:

_________________
Alvaro Tejada Galindo
Consultor ABAP Senior - Mentor SAP
http://atejada.blogspot.com
http://tinyurl.com/jnlfd
Lima - Perú


Arriba
 Perfil  
 
NotaPublicado: 21 Dic 2005 16:44 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Blag escribió:
Hay alguna forma de recibir texto en el InformATE???

Es decir.... Yo quiero que el usuario ingrese un número, el parser lo tome y lo procese...

Para tenerlo más claro..estoy haciendo un programa de Decimal a Binario con InformATE :D Y ya está listo....Pero necesito que el usuario ingrese un número, para poder devolver su correspondiente en binario :cry:

Obviamente....puede ser cualquier número.....He buscado en la DM4 y en la IBG, pero no he encontrado nada :(



Inform se toma muy mal eso de los "inputs", de todos modos en mi aventura "Dios en zapatillas" en la versión para InformATE, se consigue capturar un "input" exterior del jugador y manejarlo desde el propio programa.
No sé si te servira, porque en este caso el valor es un array, o sea no es un valor númerico. Pero tal vez puedas adaptarlo a lo que deseas. El código ya sabes que está disponible.

Suerte
Jenesis


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Dic 2005 16:50 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 30 Nov 2005 20:53
Mensajes: 136
Ubicación: Lima - Perú
Listo, ya descargué el código :D Lo reviso y te aviso :wink: Gracias :D

Saludos,

Blag :twisted:

_________________
Alvaro Tejada Galindo
Consultor ABAP Senior - Mentor SAP
http://atejada.blogspot.com
http://tinyurl.com/jnlfd
Lima - Perú


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Dic 2005 17:17 
Desconectado
Yiepp
Yiepp
Avatar de Usuario

Registrado: 20 Ene 2005 14:58
Mensajes: 92
Ubicación: Tarragona
No me hagas mucho caso, pero es probable que funcione algo tan sencillo como esto:

Código:
[ ConvertirSub ;
  DecimalABinario(uno);
];

verb 'convierte'
* number -> Convertir;



En la librerí­a ZN de Presi puedes ver un ejemplo de código que responde a órdenes de tipo "z 5" convirtiéndolas en "z.z.z.z.z"

Lo que sí­ que es realmente complicado es leer cadenas de texto, por paradójico que parezca. Puedes echar un vistazo al código del juego de jenesis.

En el SPAC 42 tienes un artí­culo de Baltasar sobre la gramática de Inform y el atributo 'number' de los verbos. Según lo que pone allí­ informATE aceptará "convierte 1" y "convierte cinco" pero no "convierte 0".

¡Saluditos!


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Dic 2005 19:35 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
juanvi escribió:
No me hagas mucho caso, pero es probable que funcione algo tan sencillo como esto:

Código:
[ ConvertirSub ;
  DecimalABinario(uno);
];

verb 'convierte'
* number -> Convertir;



En la librerí­a ZN de Presi puedes ver un ejemplo de código que responde a órdenes de tipo "z 5" convirtiéndolas en "z.z.z.z.z"

Lo que sí­ que es realmente complicado es leer cadenas de texto, por paradójico que parezca. Puedes echar un vistazo al código del juego de jenesis.

En el SPAC 42 tienes un artí­culo de Baltasar sobre la gramática de Inform y el atributo 'number' de los verbos. Según lo que pone allí­ informATE aceptará "convierte 1" y "convierte cinco" pero no "convierte 0".

¡Saluditos!


Pues tampoco me hagáis mucho caso a mi, pero sí­ podrí­a aceptar "convertir 0". Lo que dicen tanto el manual inglés como la sección fielmente traducida por Baltasar es que hay que andarse con ojo si el programador invoca (que no es necesariamente este caso) el punto de entrada "InterpretaNumero" y este retorna cero, ya que la librerí­a se lo tomarí­a como un rfalse y podrí­a llevar la ejecución del programa a algun sitio que no nos esperasemos.

De todos modos, la parte mala del token "number" o de las funciones "IntentaNumero" e "InterpretaNumero" (que vendrí­an que ni pintadas para esto) es que sólo se tragan números entre 0 y 10000 inclusive... lo que deja las prestaciones del programa de conversión ciertamente limitadas... pero eso es lo que hay :|


Última edición por Nombre En Blanco el 21 Dic 2005 21:56, editado 1 vez en total

Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Dic 2005 21:08 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
juanvi escribió:
No me hagas mucho caso, pero es probable que funcione algo tan sencillo como esto:

Código:
[ ConvertirSub ;
  DecimalABinario(uno);
];

verb 'convierte'
* number -> Convertir;




Sí­, funcionarí­a, pero esto, al igual que el código inicial de Blag, requiere incluir todaaa la librerí­a de Informate, y la verdad es que para hacer una simple conversión decimal-binario, no es necesaria en absoluto.

Por si lo quiere hacer de la manera difí­cil (en Inform pero sin librerí­a Informate) precisamente en los fuentes de PAEE en Inform tengo una rutina biplataforma (Z y Glulx) que recoge texto del usuario.

juanvi escribió:
En la librerí­a ZN de Presi puedes ver un ejemplo de código que responde a órdenes de tipo "z 5" convirtiéndolas en "z.z.z.z.z"


Sí­, hace eso, pero realmente no lo convierte a esa órden sino que inicia un bucle interno.

Por otro lado, si Blag quiere experimentar con algo nuevo, puede usar Attomole, que contiene una librerí­a de entrada/salida.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Dic 2005 21:37 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 30 Nov 2005 20:53
Mensajes: 136
Ubicación: Lima - Perú
Citar:
Por otro lado, si Blag quiere experimentar con algo nuevo, puede usar Attomole, que contiene una librerí­a de entrada/salida.


¿¿¿??? Que es eso??? :?


Citar:
Por si lo quiere hacer de la manera difí­cil (en Inform pero sin librerí­a Informate) precisamente en los fuentes de PAEE en Inform tengo una rutina biplataforma (Z y Glulx) que recoge texto del usuario.


Voy a revisarla :)

Saludos,

Blag :twisted:

_________________
Alvaro Tejada Galindo
Consultor ABAP Senior - Mentor SAP
http://atejada.blogspot.com
http://tinyurl.com/jnlfd
Lima - Perú


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 22 Dic 2005 10:45 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
Blag escribió:
Citar:
Por otro lado, si Blag quiere experimentar con algo nuevo, puede usar Attomole, que contiene una librerí­a de entrada/salida.


¿¿¿??? Que es eso??? :?


http://caad.mine.nu/atto


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 22 Dic 2005 11:19 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
En mi web pongo el fuente de mi juego Aventurero en el Segapark donde se toma una cadena de caracteres y luego se imprime. Muy sencillo.

También en la eztanterí­a o en la zona de documentos de informate deberás encontrar un artí­culo especial de Zak donde habla de los arrays y cadenas de texto en inform.

Chao y suerte.

_________________
Ruber "Urbatain" Eaglenest.
------------------------
http://www.indieorama.com/author/rubereaglenest/


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 22 Dic 2005 12:31 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
Urbatain escribió:
En mi web pongo el fuente de mi juego Aventurero en el Segapark donde se toma una cadena de caracteres y luego se imprime. Muy sencillo.


Sencillo porque usas la función KeyboardPrimitive() que proporciona Informate. De todas maneras no tan sencillo de imprimir una cadena comparado con otros lenguajes en los que no es suele ser necesario (o existen funciones que lo hacen) recorrer el array de dicha cadena para imprimir los caracteres individualmente.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 22 Dic 2005 16:05 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 30 Nov 2005 20:53
Mensajes: 136
Ubicación: Lima - Perú
Citar:
En mi web pongo el fuente de mi juego Aventurero en el Segapark donde se toma una cadena de caracteres y luego se imprime. Muy sencillo.


Excelente Urbatain :D Lo reviso en la noche :D

Gracias por el enlace presi :wink: Se ve interesante :twisted:

Citar:
También en la eztanterí­a o en la zona de documentos de informate deberás encontrar un artí­culo especial de Zak donde habla de los arrays y cadenas de texto en inform.


Voy a leerlo también 8)

Saludos,

Blag :twisted:

_________________
Alvaro Tejada Galindo
Consultor ABAP Senior - Mentor SAP
http://atejada.blogspot.com
http://tinyurl.com/jnlfd
Lima - Perú


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 23 Dic 2005 16:54 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 30 Nov 2005 20:53
Mensajes: 136
Ubicación: Lima - Perú
Citar:
Sencillo porque usas la función KeyboardPrimitive() que proporciona Informate.


Jejeje....Esa función funciona muy bien :wink: Pero solamente para textos....y no para números :x

Citar:
[ ConvertirSub ;
DecimalABinario(uno);
];

verb 'convierte'
* number -> Convertir;


Utilicé la rutina de conversión....pero...a que usuario le va a gustar escribir Quince para que el sistema le devuelva el 1111 en binario :?

Supongo que tendré que probar con el Attomole que me recomendó Presi.....Sino....ni modo :cry: Tendré que aprender ASM para InformATE 8)

Saludos,

Blag :twisted:

_________________
Alvaro Tejada Galindo
Consultor ABAP Senior - Mentor SAP
http://atejada.blogspot.com
http://tinyurl.com/jnlfd
Lima - Perú


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 23 Dic 2005 23:36 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
Blag escribió:
Utilicé la rutina de conversión....pero...a que usuario le va a gustar escribir Quince para que el sistema le devuelva el 1111 en binario :?

Supongo que tendré que probar con el Attomole que me recomendó Presi.....Sino....ni modo :cry: Tendré que aprender ASM para InformATE 8)

Saludos,

Blag :twisted:


Attomole, en su estado actual, no te va a ofrecer más facilidades que usar Inform "a pelo". Vamos a reconsiderar paso por paso tu duda y ver las alternativas.

De entrada, creo que tienes conocimientos previos tanto de inglés como de programación, así­ que, para empezar a pelearte con Inform esta emisora pirata marciana te recomienda fervorosamente que te hagas por un lado con el "Manual de Referencia de InformATE" (aunque eso seguramente lo hayas hecho ya, sino buscalo por http://caad.mine.nu/informate/docs/index.html ) y que por otro apuntes en los marcadores de tu navegador web la dirección de la página web de Roger Firth, http://www.firthworks.com/roger/index.html , y sobre todo su FAQ de Inform: http://www.firthworks.com/roger/informfaq/index.html . Fijate que en ella ya hay un amplio surtido de dudas tí­picas de principiantes resueltas, sobre todo el tipo de cosas que se le atascan a quienes están acostumbrados a otros lenguajes. Y mira, precisamente en una de las preguntas se trata a fondo todo lo relativo a introducir textos explicando con algo de claridad todos los pormenores. Ver: http://www.firthworks.com/roger/informfaq/tt.html#11

Con esto llegamos hasta donde ya sabes ahora, es decir, que trasteando a bajo nivel con Inform puedes aceptar inputs del usuario, pero, como ya has dicho tu problema es que algo tan básico en otros lenguajes como asignar un input del usuario directamente a una variable numérica es algo que sencillamente no existe en Inform. ¡Genial! XDD

Así­ que tus alternativas son:

-crear tu propia rutina que convierta la cadena de caracteres introducida por el usuario (que, como ya has visto, Inform almacena en un buffer que es una matriz de caracteres) en un valor numérico que se pueda almacenar en una variable que puedas luego mandar a tu rutina "Decimal_A_Binario" o...

-aprovechar la existente en la librerí­a de InformATE... que tiene las limitaciones que expuse en el mensaje de más arriba (básicamente, no admite números mayores de 10000, si los metes, los convierte a 10000)


Un momento... si lo he entendido bien, el lí­mite de 10000 es una precaución originada por el lí­mite de la máquina Z para manejar números, que llega hasta 16 bits, pero en Glulx no es una precaución necesaria, creo, aunque la rutina "IntentarNumero" de la librerí­a la aplica igual tanto si compilas para Z como para Glulx...

...Y probablemente ya sepas que puedes, en tus programas, sustituir las rutinas de la librerí­a por otras adaptadas a tus necesidades especí­ficas... o bien hacer un programa en Inform que no incluya todas las librerí­as de InformATE pero metiendo en él una copia de la rutina "IntentarNumero" (buscala por el fichero "EParser.h") en la que cambies lo que te interese...

Yo creo que la cosa no tiene mal color :-)


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 32 mensajes ]  Ir a página 1, 2, 3  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM