CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 22 Oct 2019 13:20

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 24 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: 20 Ene 2005 13:48 
buenas, haber si alguien pudiera hecharme una mano ...
estoy haciendo un juego, en el que aparecen barias armas
(y objetos claro)
me gustarí­a programar algunas "TECLAS ESPECIALES" como por ejemplo f1 f2 etc
de forma que al pulsar por ejemplo f1 el jugador cambiara de arma
de esta forma podrí­a evitarse tener que teclear algo como: quitate daga
blande espada
se como hacer lo de f1 etc el problema que no funciona (pero compila bien)
me han comentado algo de que es culpa de winfrotce (compilo solo para máquina z)
¿puede hacerse algo al respecto?
saludetes
THANKS!


Arriba
  
 
NotaPublicado: 20 Ene 2005 18:17 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2918
Ubicación: España (Galicia)
Hola !

No sé a qué te refieres, no sé que código no te compila ... chico, dinos algo más :-)

En cuanto a las teclas especiales, o ya existe una forma estándar de asignarlas en el bucle de espera por que se pulsa una tecla dentro del input del jugador o tendrás que cambiar a manubrio la librerí­a.

En todo caso, ¿qué quieres hacer? ... quizás que al pulsar f1 se visualice "cambiar arma" en el input?

Lo dicho, ¡más datos!

Salud !

Balta

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 20 Ene 2005 18:29 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
baltasarq escribió:
Hola !

En todo caso, ¿qué quieres hacer? ... quizás que al pulsar f1 se visualice "cambiar arma" en el input?

Lo dicho, ¡más datos!

Salud !

Balta


Yo creo que lo que quiere es que el tema funcione como en los videojuegos de acción, que le das a una tecla y vayas cambiando de arma. Vamos que si en vez de manejarse con las teclas de función se pudiera manejar con el gamepad o con el ratón, pues mejor que mejor. xDD


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 20 Ene 2005 21:47 
jenesis escribió:

Yo creo que lo que quiere es que el tema funcione como en los videojuegos de acción, que le das a una tecla y vayas cambiando de arma.

si, exactamente
si que me compila
el problema que no funciona xdd
¿no se puede hacer????
gracias!


Arriba
  
 
 Asunto:
NotaPublicado: 21 Ene 2005 00:03 
herigzo escribió:
jenesis escribió:

Yo creo que lo que quiere es que el tema funcione como en los videojuegos de acción, que le das a una tecla y vayas cambiando de arma.

si, exactamente
si que me compila
el problema que no funciona xdd
¿no se puede hacer????
gracias!


Sí­... Poderse se puede.
Otra cosa es que cuando veas el mogollón que supone quieras hacerlo XDD

Yendo por partes, si algo no te funciona y por ahí­ te dicen que la culpa es del intérprete (¿winfrotce?) lo primero de todo es ejecutar la aventura con cualquier otro intérprete y ver si se produce el mismo fallo, con lo cual confirmarás o descartarás esa hipótesis.

Y sobre lo de las teclas epseciales, pues hombre... los juegos de ficción interactiva no están precisamente pensados para funcionar así­... y consecuentemente InformATE no viene preparado para afrontar esa situación, pero...

El manual inglés especifica que en Beyond Zork se admite precisamente esa posibilidad, y apunta por encima cual es el proceso... ahora cuando veas el nivel de complicación ya te pararás a pensar si merece o no la pena la complicación.

El proceso, sacado de lo explicado allí­, obviamente sólo sirve para máquina Z, pero en tu caso eso parece no ser un inconveniente, así­ que vamos allá.

Muy a grosso modo, se trata de que la rutina que se dedica a esperar la entrada por teclado de las órdenes del jugador reaccione ante las teclas de función y haga, en ese caso, lo que le digamos.

El primer malabarismo que efectuaremos será usar la directiva Zcharacter para indicar a Inform que queremos que determinadas teclas de función (las que queramos) se interpreten por el parser como teclas de "terminación de input", de tal suerte que el juego se comportará ante ellas igual que al pulsar la tecla "return"

Tras eso sustituiremos a cierta vieja amiga nuestra, la rutina "KeyboardPrimitive()" de Eparser.h por otra que se encarge de reconocer esas teclas y comportarse debidamente.
En este ejemplo, vamos a hacer que las teclas F1, F2 y F3 desencadenen respectivamente las acciones "blandir espada", "blandir daga" y "blandir cuchillo"

[spoiler]
Código:
Zcharacter terminating 133 134 135;

!Directiva de inform que, por arte
!de magia hace que las teclas F1, F2 y F3
!tengan el efecto de interrumpir
!el input de teclado igual
!que la tecla de retorno

Replace KeyboardPrimitive;

!sentencia que avisa al compilador
!de que pretendemos reemplazar
!la sentencia KeyboardPrimitive()
!de la librerí­a por una versión
!nuestra. El "replace" debe
!ponerse siempre antes de los includes

Include "EParser";
Include "Acciones";
Include "Mensajes";
Include "Gramatica";

!los includes de rigor

Class Arma
with
antes
[;
   blandir:
      "Blandes ", (el)self;
];

!una clase "arma" sencillita
!que no hace más que definir
!la reacción de los objetos
!"arma" ante la acción "blandir"

object limbo "limbo"
with
descripcion "¿Como has llegado aquí­?^ Malditos betatesters...^^",
has luz;

!una localidad

Arma cuchillo "cuchillo" limbo
with
nombre 'cuchillo',
descripcion "Pues un bonito cuchillo.";

!un arma...

Arma daga "daga" limbo
with
nombre 'daga',
descripcion "Pues una hermosa daga",
has femenino;

!...otra arma...

Arma espada "espada" limbo
with
nombre 'espada',
descripcion "Pues una bella espada.",
has femenino;

!...y otra, de sobra para
!nuestro ejemplo

[inicializar;
   localizacion=limbo;
];

!rutina de inicialización que
!manda al jugador a la
!localidad de inicio
!Ahora viene lo gordo...
!La siguiente va a ser nuestra
!nueva rutina KeyboardPrimitive()

[KeyboardPrimitive  a_buffer a_table result;
   
   a_buffer ->1=0;
   a_table ->1=0;
   
!Pone a cero el elemento nº 1
!de loa arrays a_buffer y a_parse
!(predefinidos en la liberí­a)
!Es un modo de dejarlos
!"limpios". Lo cierto es que
!no terminé de entender por qué,
!pero en todos los ejemplos del
!manual lo hací­a así­, y si no
!lo poní­as no funcionaba
   
   @aread a_buffer a_table -> result;
   
!sentencia de ensamblador de la
!máquina Z. Si todo sucede
!con normalidad, es decir, el jugador
!teclea un comando y pulsa "enter",
!rellena debidamente los arrays
!a_buffer y a_parse para que la
!librerí­a continue trabajando
!con ellos para interpretarlos.
!Pone en "result" el código de
!la tecla con que se ha terminado
!de escribir el comando
!(normalmente la susodicha "enter" o
!"retorno")

   if (result==13) return;
   
!así­ que en caso de que sea esa tecla
!(el código de "enter" es 13) sale de
!la rutina con un return para que el
!proceso siga con normalidad. Lo
!que viene a continuación es la
!otra posibilidad, es decir, la
!de que la tecla de terminación
!pulsada fuera alguna de las
!que hemos definido, F1, F2 o F3.

   switch (result)
   {
      133:
         print "Has pulsado F1 (blandir espada)^";
         a_buffer->1=13;
         a_buffer->2='b';
         a_buffer->3='l';
         a_buffer->4='a';
         a_buffer->5='n';
         a_buffer->6='d';
         a_buffer->7='e';
         a_buffer->8=' ';
         a_buffer->9='e';
         a_buffer->10='s';
         a_buffer->11='p';
         a_buffer->12='a';
         a_buffer->13='d';
         a_buffer->14='a';
      134:
         print "Has pulsado F2";
         a_buffer->1=11;
         a_buffer->2='b';
         a_buffer->3='l';
         a_buffer->4='a';
         a_buffer->5='n';
         a_buffer->6='d';
         a_buffer->7='e';
         a_buffer->8=' ';
         a_buffer->9='d';
         a_buffer->10='a';
         a_buffer->11='g';
         a_buffer->12='a';
      135:
         print "Has pulsado F3";
         a_buffer->1=15;
         a_buffer->2='b';
         a_buffer->3='l';
         a_buffer->4='a';
         a_buffer->5='n';
         a_buffer->6='d';
         a_buffer->7='e';
         a_buffer->8=' ';
         a_buffer->9='c';
         a_buffer->10='u';
         a_buffer->11='c';
         a_buffer->12='h';
         a_buffer->13='i';
         a_buffer->14='l';
         a_buffer->15='l';
         a_buffer->16='o';
         
!aaaghsrrf!!! XDD
!Estoo... bueno, lo que ha hecho
!es, para cada uno de los
!posibles casos, ha rellenado letra
!por letra el array a_buffer con
!lo que hubiera sido el input normal
!del jugador para la acción que
!queremos asociar a las
!respectivas teclas de función.
!Notese como, siguiendo la manera
!habitual de comportarse de
!KeyboardPrimitive, pone en el
!elemento 1 la longitud de la cadena
!y los acaracteres en los siguienetes.
   
   }
   
   @tokenise a_buffer a_table;
   
!Y por último usa otra sentencia
!de ensamblador Z para "tokenizar"
!el contenido de a_buffer en la
!tabla a_parse, que es lo que
!hubiera hecho ella solita en
!circunstancias normales. La cosa
!está en que al no ser una situación
!"normal", hay que decirle que lo haga

];

!Acabada la rutina keyboardPrimitive
!ya solo ponemos algo de gramática

[blandirSub;
   "Eso no es blandible.";
];

!Rutina encargada de manejar
!por defecto el verbo "blandir"

Verb 'blande'
   * held   ->   blandir;
Verboirregular "blandir" with imperativo 'blande';

!Y por último hemos puesto la gramática
!del verbo "blandir" en sí­.
!Notese que entre unos y otros
!nos aseguramos de que sólo
!se aplica a objetos poseidos y de
!la clase arma
[/spoiler]

Según el manual y los ejemplos que pone esta es la única manera de hacerlo... ¡y yo espero que no sea verdad! XDD En cualquier caso, se trata de otro ejemplo de maniobra para la que Inform no está preparado y que puede hacerse dando multitud de rodeos... tantos que es para pensarse si compensa el esfuerzo.


Arriba
  
 
 Asunto:
NotaPublicado: 21 Ene 2005 02:06 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
La máquina Z se puede ejecutar en multitud de plataformas, desde mainframes hasta ordenadores de bolsillo, ¿qué pasa en aquellas máquinas en las que simplemente por su construcción no poseen las teclas de función? Obviamente todo este esfuero habrá sido en vano, ¿no?


Arriba
 Perfil  
 
 Asunto: ¿invitado?
NotaPublicado: 21 Ene 2005 02:10 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Zak ¿eres tú?

:roll:


(Si no eres Zak) Saludos
(Si eres ZAk) Un abrazo, dos besotes y una lagrimita de emoción. :wink:

Jenesis


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Ene 2005 08:03 
ufffffffffffffffffffff!
realmente ...
FLIPADO! XDDD
bueno ... la verdad, es que supone un gran esfuerzo
si
pero,
podrí­a estar bien
para el tema de las máquinas que no dispongan de teclas de funcion
hombre hay formas de evitar el problema
y es programando normalmente
la acción quitar y blandir arma ¿No?
en ese caso direis
¿para qué entonces tanto esfuerzo?
es verdad ...
pero el saber no ocupa lugar ¿verdad?
gracias!!!!!!!!!!


Arriba
  
 
 Asunto:
NotaPublicado: 21 Ene 2005 09:46 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
herigzo escribió:
¿para qué entonces tanto esfuerzo?
es verdad ...
pero el saber no ocupa lugar ¿verdad?
gracias!!!!!!!!!!


Pues tienes razón, y esto ya como curiosidad estoy casi seguro de que eso mismo se podrí­a hacer tambien para Glulx, aunque de una manera distinta y quizá no tan rebuscada ya que Glulx/Glk requiere un bucle en la función de entrada que espera a eventos, no costarí­a mucho capturar el evento de pulsación de una tecla y comprobar si corresponde a las teclas de función.

Aunque yo sigo teniendo cierta alergia a las llamadas Glk :o


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Ene 2005 09:50 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
herigzo escribió:
ufffffffffffffffffffff!
para el tema de las máquinas que no dispongan de teclas de funcion
hombre hay formas de evitar el problema
y es programando normalmente
la acción quitar y blandir arma ¿No?
en ese caso direis
¿para qué entonces tanto esfuerzo?
es verdad ...
pero el saber no ocupa lugar ¿verdad?
gracias!!!!!!!!!!


¿A cuántos conocéis que jueguen aventuras en máquinas sin teclas de función?
No exageremos, esa funcionalidad de inform hoy en dí­a, es poco más que anecdótica. Está bien, pero no es la principal.
No creo que limitar el uso de esa aventura, a los que juegan en máquinas con teclas de función sea desaprovechar el esfuerzo en implementar su uso en la aventura.

Saludos
Jenesis


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Ene 2005 10:16 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4647
NMP tenia soporte de teclas de funcion, en concreto, cuando pulsabas un valor de F1 a F9 escribia algo en el input y forzaba un 'enter'. Era configurable por el programador aunque traia determinadas palabras 'de serie' (mirar, grabar, cargar, salidas). F10 quedaba libre porque era el 'QUIT a lo bestia' del parser. y F11 y F12 no las implementé porque cuando lo hice aun quedaban teclados de solo 10 teclas de funcion (decision un poco absurda vista desde el dia de hoy, porque el que no tuviera F11 y F12 simplemente no podrí­a realizar esas acciones de modo automatico).

Resultado: lo usaba yo, yo y nada mas que yo, y solo a veces. No existe la 'cultura' de usarlas y nadie preguntó ni pidió nada nunca sobre un cambio o mejora en lo de las teclas de funcion.

El hecho de que algunos equipos no tengan teclas de funcion no es un problema siempre que puedas seguir dando las ordenes a mano, pero por mi experiencia os aviso: el exito de la funcionalidad fue nulo.

No se SINTAC tenia algo parecido, quiza JSJ pueda decirnos algo sobre su exito si es que lo tení­a.

Con esto quiero decir que si el esfuerzo es notable muy probablemente no merece la pena, aunque quien sabe, quiza los tiempos han cambiado y hoy nos acostumbramos a usar las 'efes' mas rapido (ciertamente hoy el boca a boca es mucho mas rapido y efectivo) :)

Nota: lo apunto también en el CVSTrac de Superglus, para estimar tiempos y prioridades en el futuro, lo cierto es que no lo veo tan dificil con Glk, pero eso lo digo sin mirar el codigo demasiado, en maquina Z ni idea.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Ene 2005 15:15 
presi escribió:

Pues tienes razón, y esto ya como curiosidad estoy casi seguro de que eso mismo se podrí­a hacer tambien para Glulx, aunque de una manera distinta y quizá
no tan rebuscada ya que Glulx/Glk requiere un bucle en la función de entrada que espera a eventos, no costarí­a mucho capturar el evento de pulsación de
una tecla y comprobar si corresponde a las teclas de función.

Aunque yo sigo teniendo cierta alergia a las llamadas Glk

yo más que alergia, ni siquiera intento programar en glulx xddd
es mucho parami ...
saludos


Arriba
  
 
 Asunto:
NotaPublicado: 21 Ene 2005 15:23 
por cierto

el código de invitado lo he compilado pero ocurre lo que comentaba al principio. (f1 winfrotce lo reserva para la ayuda) y f2 y f3 no responden ...


Arriba
  
 
 Asunto:
NotaPublicado: 21 Ene 2005 15:44 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
herigzo escribió:
por cierto

el código de invitado lo he compilado pero ocurre lo que comentaba al principio. (f1 winfrotce lo reserva para la ayuda) y f2 y f3 no responden ...


¿winfrotce?

¿Qué intérprete es ese?
Al principio pensé que era una errata en la redacción del post, pero es que ahora ya me estoy empezando a mosquear. :shock:
A ver si va a ser... que todo el lí­o es por usar un intérprete que no es el Winfrotz nuestro de todos los dí­as....

Saludos
Jenesis


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 21 Ene 2005 16:02 
mmmm
pues si, jenesis tiene razon :P
estaba poniendo winfrotce
nooo
uso winfrotze (el que viene con el kit del jugador) almenos así­ lo pone en escritorio "WinFrotzE"
¿alguien ha probado el ejemplo??
es más que nada por saber si soy yo o que xddd
saludos!


Arriba
  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 24 mensajes ]  Ir a página 1, 2  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