CAAD

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

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 23 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: 01 Oct 2005 07:21 
Hola, tras un tiempecito sin entrar por aqui, vuelvo con un pasito abanzado en mi ... aventura en glulx.
Con la ayuda de un colega también interesado en esto de desarrollar aventuras en glulx he conseguido crear un menú con dicho sistema resolviendo el problema que hace un tiempo plantee por aqui (lectura de teclas)...

Ahora mi/s pregunta/s de momento siguen siendo acerca de menús con glulx (dado que no tengo relativamente ni idea sobre este sistema ni de donde encontrar buena documentación) pero creo que esta vez se trata de algo más sencillo...

¿puede utilizarse el tiempo real que viene implementado en glulx dentro de un menú? o al igual que en inform no es posible (Aunque son cosas diferentes, en inform el tiempo real se tocaba con rtimex)

En la página de gull ví­ una sentencia de menús que esperaba que el jugador pulsara una tecla o bien, que transcurrieran determinados segundos bueno decimas de segundo (las que se le indicaran) alguien sabe si se puede hacer con glulx o es para máquina z? decir que en máquina z no me funcionaba... pero tampoco veo muy claro con que sistema se utiliza.

Por último he intentado programar un pequeño menú de muestra donde elegir una opción con los cursores pero el resultado (pese a que compila correctamente) no es el esperado. simplemente imprime el texto del menú cada vez que pulsas la tecla de cursor que hayas programado...

¿Es culpa del intérprete? (utilizo el que entra con el kit del programador) aunque no sabrí­a decir la versión. Entra creo que frotz 2002 y informbp 6.30...

de momento es todo... (respecto a menús) ja ja ja abriré más hilos para nuevas consultas!!! gracias ante todo! ^---


Arriba
  
 
 Asunto:
NotaPublicado: 01 Oct 2005 12:30 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Mar 2004 21:54
Mensajes: 378
Ubicación: La red
Mi consejo es que hagas la aventura y dejes el menú para el final. La librerí­a de tiempo real es totalmente desaconsejable para esto.


Arriba
 Perfil  
 
NotaPublicado: 01 Oct 2005 14:17 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
lupysoft escribió:
¿puede utilizarse el tiempo real que viene implementado en glulx dentro de un menú? o al igual que en inform no es posible (Aunque son cosas diferentes, en inform el tiempo real se tocaba con rtimex)


Pues poderse se deberí­a poder. Ya me imagino que te habrás leido la sección "Pausas y Tiempo Real" de Gull. La verdad es que allí­ se dice todo lo que harí­a falta saber sobre cómo manejar tiempo real en Glulx. El único problema posible (me acaba de pasar en el ensayito que estoy haciendo mientras escribo esto) es que antes de empezar el menu establezca un "glk_request_timer_events()" que llame a un punto de entrada "HandleGlkEvents" donde pondré lo que quiero que haga cada X milisegundos (todo según explica Gull) y que luego la rutina del menu, o alguna de las que llamé, me lo cancele sin que me de cuenta (me pasaba porque en una de las pantallas con texto de ayuda que llama mi menu invoco una rutina de la librerí­a "BajoNivel" de Zak -la de esperar hasta pulsar una tecla- y esta me cancela los "timer events")
Pero vamos ¡nada que no se pueda solucionar trasteando un poco! (ejem..., XDD)

En cualquier caso, olvidate de "Rtimex.h", que, como dice en los comentarios de su código fuente, es Z y sólo Z.

Lupy escribió:
En la página de gull ví­ una sentencia de menús que esperaba que el jugador pulsara una tecla o bien, que transcurrieran determinados segundos bueno decimas de segundo (las que se le indicaran) alguien sabe si se puede hacer con glulx o es para máquina z? decir que en máquina z no me funcionaba... pero tampoco veo muy claro con que sistema se utiliza.


Si está en la página de Gull es que te está explicando cómo se hace en Glulx, lo cual no deja lugar a muchas dudas :)


Lupy escribió:
Por último he intentado programar un pequeño menú de muestra donde elegir una opción con los cursores pero el resultado (pese a que compila correctamente) no es el esperado. simplemente imprime el texto del menú cada vez que pulsas la tecla de cursor que hayas programado...
¿Es culpa del intérprete? (utilizo el que entra con el kit del programador) aunque no sabrí­a decir la versión. Entra creo que frotz 2002 y informbp 6.30...


No, el intérprete no harí­a eso si tu no se lo indicas expresamente en el programa, vamos, ¡que tienes algún fallo por ahi! ¿Cómo es esa rutina de menú que te has montado al final?

Y recuerda que "Frotz 2002" es el intérprete de Z. El de Glulx es "Windows Gulxe" (que tambí­en te viene en el kit y es que se ejecuta automáticamente cuando pulsas sobre un fichero glulx)


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 01 Oct 2005 14:56 
bueno el menú (que en realidad me han pasado) es este:


[menu1;
.bucle;
print "^Usa las teclas 1 y 2 para cambiar el número.^";
tecla = keycharprimitive();
if (tecla==130)
print "Has pulsado 1.";
if (tecla==129)
print "has pulsado 2.";
jump bucle;
];


yo he cambiado los números que habí­a en el if (correspondientes al 1 y 2 (49 y 50) por 130 (cursor abajo) y 129 (cursor arriba) o al reves...
almenos en máquina Z el manejo de cursores se hacia asi (en cuanto a menús se refiere)

si, no pensaba usar RTimeX en glulx ... se que contempla la posibilidad de manejar tiempo real por si mismo he ojeado gull pero tengo que hacerlo más detenidamente... no es un documento que entienda facilmente ja ja ja...

gracias!


Arriba
  
 
 Asunto:
NotaPublicado: 01 Oct 2005 15:16 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
lupy escribió:
yo he cambiado los números que habí­a en el if (correspondientes al 1 y 2 (49 y 50) por 130 (cursor abajo) y 129 (cursor arriba) o al reves...
almenos en máquina Z el manejo de cursores se hacia asi (en cuanto a menús se refiere)


¡Nooops! :P Ese código que te han pasado controla (y muy bien) la posibilidad de que el jugador eliga pulsando las teclas "1" o "2"... y sólo espera que sean una de esas dos (o las que hayas puesto cambiando los códigos como tu has hecho) Pero no contempla en absoluto la opción de "navegar" entre las distintas opciones con los cursores, que entiendo que es lo que tu pretendes.

Date cuenta de que para eso tendrí­a que haber lineas de código que controlasen la posición del cursor (probablemente almacenandola en alguna variable), y que cambiasen esa posición cuando se detectase una pulsación de teclas de cursor, y que detectasen que el jugador ha pulsado "intro" para llamar a la opción de esa posición... y ahí­ no hay nada de eso. Por supuesto, se puede añadir, pero no esperes que sea simple :roll:


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 01 Oct 2005 17:20 
si... es cierto en algun codigo que hice hace un tiempecito lo hací­a con algo así­...
lástima no tener un menú de aquellos para enseñaros mas o menos ... la cuestion es, que me inventaba una especie de indicador (flecha) algo como ">" que señalaba que opción estaba marcada.moviendo los cursores movias el ">" entre las opciones y todo ello se almacenaba dentro de una propiedad tal como control.cursor... pero, lo que en realidad queria saber es si, lo estoy haciendo bien... osea. Si para referirme a una flecha tengo igualmente que poner 130 131 132 129 ... o son otros códigos ... ¿se me entiende? xdd...


Arriba
  
 
 Asunto:
NotaPublicado: 01 Oct 2005 18:35 
bueno... aqui tengo el mismo menú, pero retocado para compilar en máquina z (que por cierto no compila con informbp 6.30) ... pero con informbp 6.21 si ... ¿porque?...
aqui va el programilla que muestra un menú con las opciones
opcion 1
opcion 2


y el signo > que nos indicarí­a que opcion tenemos marcada. Para cambiar de opción debemos pulsar las teclas...

*- He anulado las partes que en principio (sin tocar nada) daban error al compilar para máquina z, y he añadido el código que maneja la posición del cursor entre las opciones así­ como el código necesario para compilar con máquina z (ensamblador de máquina Z)??



! Constantes, globales, includes, menús y propiedades del juego

Constant Historia "^^";
Constant Titular "^^";
Constant ADMITIR_COMANDO_SALIDAS;
Constant NO_LUGARES;
Constant NO_PUNTUACION;
Constant IMPRIMIR_DEDUCCIONES;

! VARIABLES GLOBALES

global menu;

! INCLUDES Y REPLACES

Include "EParser";
Include "Acciones";
include "bajonivel";
Include "Gramatica";

! inicialización

[ Inicializar;
print "este es el menú de prueva en ...^^";
! keycharprimitive();
print "Glulx...^^";
! KeyCharPrimitive();
modomirar = 2;
! menus();
Helpmenu.select();

];

class menu
! [menus;
with select [pkey;
.bucle;
if (control.cursor==1)
{
print "> ";
}
print "Opción 1^";
if (control.cursor==2)
{
print "> ";
}
print "Opción 2^";
! menu = keycharprimitive();
@read_char 1 -> pkey;
if (pkey==130)
{
if (control.cursor<2)
control.cursor++;
}
if (pkey==129)
{
if (control.cursor>1)
control.cursor--;
}
jump bucle;
];

Menu HelpMenu;

! control de propiedades generales

object control "control de propiedades"
with descripcion "control de propiedades generales.^^",
cursor 1,
has estatico;

esto mismo pero hecho de la siguiente manera (para que compile en glulx):

! Constantes, globales, includes, menús y propiedades del juego

Constant Historia "^^";
Constant Titular "^^";
Constant ADMITIR_COMANDO_SALIDAS;
Constant NO_LUGARES;
Constant NO_PUNTUACION;
Constant IMPRIMIR_DEDUCCIONES;

! VARIABLES GLOBALES

global menu;

! INCLUDES Y REPLACES

Include "EParser";
Include "Acciones";
include "bajonivel";
Include "Gramatica";

! inicialización

[ Inicializar;
print "este es el menú de prueva en ...^^";
keycharprimitive();
print "Glulx...^^";
KeyCharPrimitive();
modomirar = 2;
menus();
];

[menus;
.bucle;
if (control.cursor==1)
{
print "> ";
}
print "Opción 1^";
if (control.cursor==2)
{
print "> ";
}
print "Opción 2^";
menu = keycharprimitive();
if (menu==130)
{
if (control.cursor<2)
control.cursor++;
}
if (menu==129)
{
if (control.cursor>1)
control.cursor--;
}
jump bucle;
];

! control de propiedades generales

object control "control de propiedades"
with descripcion "control de propiedades generales.^^",
cursor 1,
has estatico;

(compila perfectamente) pero el resultado no es el mismo... ¿alguien sabe donde esta el problema???...
Saludos! ---


Arriba
  
 
 Asunto:
NotaPublicado: 01 Oct 2005 21:05 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
Veamos, centrandonos en la primera rutina, la de la versión Z:

A mi no me compila con el 6.30 porque, por algún motivo en el que ahora mismo no caigo pero que seguro que será evidente, no acepta la palabra "menu" como nombre de una "clase".
Lo he cambiado por "newmenu" (el nombre nuevo es arbitrario) y compila bien, pero el resultado es un desastre en el que las frases "opción 1" y "opción 2" se repiten una y otra vez en la pantalla cada vez que pulsas cualquier tecla.
Ciertamente, lo que te faltaba era, ya que has incluido la librerí­a "Bajonivel", poner una llamada a "BorrarPantalla()" al principio del bucle del menu. Ahora todo parece en su sitio.
Parece, claro, es decir, el cursor se mueve entre las dos opciones sin mayor problema. Por supuesto, no hay nada preparado para que cuando el jugador pulse "intro" en cualquier opción el programa haga algo, aunque me imagino que ya sabrás ponerlo tu en su momento...

Nos queda una cosa así­ (insisto en que para Z):

Código:
! Constantes, globales, includes, menús y propiedades del juego

Constant Historia "^^";
Constant Titular "^^";
Constant ADMITIR_COMANDO_SALIDAS;
Constant NO_LUGARES;
Constant NO_PUNTUACION;
Constant IMPRIMIR_DEDUCCIONES;

! VARIABLES GLOBALES

global menu;

! INCLUDES Y REPLACES

Include "EParser";
Include "Acciones";
include "bajonivel";
Include "Gramatica";

! inicialización

[Inicializar;
   print "este es el menú de prueva en ...^^";
   !keycharprimitive();
   print "Glulx...^^";
   !KeyCharPrimitive();
   modomirar = 2;
   Helpmenu.select();
];

class newmenu
with
select
[pkey;
   .bucle;
   
   BorrarPantalla();
   
   if (control.cursor==1)
   {
      print "> ";
   }
   
   print "Opción 1^";
   
   if (control.cursor==2)
   {
      print "> ";
   }
   
   print "Opción 2^";
   
   @read_char 1 -> pkey;
   
   if (pkey==130)
   {
      if (control.cursor<2)
         control.cursor++;
   }
   
   if (pkey==129)
   {
      if (control.cursor>1)
         control.cursor--;
   }
   
   jump bucle;
];

newmenu HelpMenu;

! control de propiedades generales

object control "control de propiedades"
with descripcion "control de propiedades generales.^^",
cursor 1,
has estatico;


Repito que esto lo único que te da es un cursor que se mueve entre las frases "opción 1" y "opción 2". Lo que suceda cuando el jugador pulse "intro" queda en tus sabias manos ;)

Ahora vamos a ver si esto se pasa con facilidad a Glulx...

Probandoooo...

Vale...

Pues no me preguntes ahora mismo por qué... pero el caso es que sólo se traga los códigos correspondientes a las teclas del cursor si se los pones en hexadecimal.

Lo que me lleva a que...

La versión Z rula tal cual en Glulx cambiando la llamada a read_char por su equivalente KeycharPrimitive(), tal y como te venimos sugiriendo desde el hilo anterior. Una cosa así­:

Código:
! Constantes, globales, includes, menús y propiedades del juego

Constant Historia "^^";
Constant Titular "^^";
Constant ADMITIR_COMANDO_SALIDAS;
Constant NO_LUGARES;
Constant NO_PUNTUACION;
Constant IMPRIMIR_DEDUCCIONES;

! VARIABLES GLOBALES

global menu;

! INCLUDES Y REPLACES

Include "EParser";
Include "Acciones";
include "bajonivel";
Include "Gramatica";

! inicialización

[Inicializar;
   print "este es el menú de prueva en ...^^";
   !keycharprimitive();
   print "Glulx...^^";
   !KeyCharPrimitive();
   modomirar = 2;
   Helpmenu.select();
];

class newmenu
with
select
[pkey;
   .bucle;
   
   BorrarPantalla();
   
   if (control.cursor==1)
   {
      print "> ";
   }
   
   print "Opción 1^";
   
   if (control.cursor==2)
   {
      print "> ";
   }
   
   print "Opción 2^";
   
   !@read_char 1 -> pkey;
   pkey=KeycharPrimitive();
   
   print pkey;
   print "^hola^";
   
   if (pkey==$fffffffb)
   {
      if (control.cursor<2)
         control.cursor++;
   }
   
   if (pkey==$fffffffc)
   {
      if (control.cursor>1)
         control.cursor--;
   }
   
   jump bucle;
];

newmenu HelpMenu;

! control de propiedades generales

object control "control de propiedades"
with descripcion "control de propiedades generales.^^",
cursor 1,
has estatico;


Repito que esto sólo te mueve el cursor por entre las opciones, el resto depende de ti.

En cualquier caso a esto la puedes meter virguerí­as en tiempo real siguiendo las instrucciones de Gull.
Así­ podrí­as, por ejemplo, llamar cada varios segundos a una rutina que durante el menu, imprima un mensaje invitando al jugador a apretar una tecla si este se queda parado sin hacer nada, o lo que tu quisieras.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 01 Oct 2005 21:54 
bieng! ara si! acias!

pero en exadecimal? solo teclas digamos especiales no? cursores y ... intro...
y escape o teclas de funcion (que imagino, se pueden tb programar)... como puedo saber el equivalente en exadecimal de una tecla?...

para letras o numeros serí­a lo mismo pero poniendo if (pkey=='codigo en isolatin1') no?

si, se que tengo luego qu darme un trabajito weno programando la tecla intro... a eso estoy acostumbrado... lo de tiempo real me gusta (poder implementarlo en menús... haber si sale como quiero ...



SalUdoS ---


Arriba
  
 
 Asunto:
NotaPublicado: 01 Oct 2005 21:59 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
RML escribió:
Pues no me preguntes ahora mismo por qué... pero el caso es que sólo se traga los códigos correspondientes a las teclas del cursor si se los pones en hexadecimal.


Ya estaba yo delirando con eso del hexadecimal, a veeer, los códigos "buenos" de KeycharPrimitive en Glulx para las teclas del cursor y de intro son respectivamente:

Código:
-4: cursor arriba
-5: cursor abajo
-6: intro


Notese que me refiero a los números negativos -4, -5, y -6

Que nos va a servir para futuras referencias, ya verás :)


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 01 Oct 2005 22:32 
biiiennngggg! asi mejor xdddd

los cursores izquierda y derecha tienen numero negativo??...
saludos ---


Arriba
  
 
 Asunto:
NotaPublicado: 02 Oct 2005 00:37 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
lupy escribió:
los cursores izquierda y derecha tienen numero negativo??...


(RML hace la prueba...)

¡Pues va a ser que si! -2 y -3 respectivamente

Bueno, como te contaba el otro dí­a, habí­a hecho un pequeño ensayo de menú en Glulx mientras posteabamos por aquí­ sobre el tema, pero era un menú tipo "teclas directas", ya sabes, pulsar "1" para la opción 1, "2" para la 2, etc... Pero ahora que, gracias a que has sacado el tema, ya he visto como va lo de hacerlo por cursores, pues lo he mezclado con lo que tení­a para hacer un "mixto" y ha salido este pequeño ejemplito. Anarroseo el código lo más comentado que he podido. Se trata de un simple ejemplo de menú de inicio que llevarí­a a distintas pantallas con créditos del juego, ayuda, o lo que fuera. Por supuesto podrí­a aplicarse a establecer opciones o cualquier cosa que se te ocurra. Espero que al copypastear no se descoloque mucho :

Código:
Constant Historia "Ensayo Menu Glulx^";
Release 0;

Include "EParser";
Include "Acciones";
Include "Mensajes";
Include "BajoNivel";
Include "infglk";

!Notense las inclusiones de "BajoNivel",
!que nos proporciona las rutinas Esperartecla()
!y BorrarPantalla(), y de "infglk", que permite
!llamadas a rutinas Glk en un lenguaje lejanamente
!comprensible XDD

Object Sitio_01 "Sitio 1"
with
descripcion "Estás en la localidad de inicio.^Teclea ~reiniciar~ para volver al menú.",
has luz;

!Una simple habitación para empezar el juego

!Ahora viene la rutina "Inicializar"

[Inicializar;
   glk_window_close(gg_statuswin,0);
   
   !cierra la barra de estado para que
   !no haga feo durante el menú
   
   Menu_Inicio();
   
   !llamada a la rutina del menú
   
   gg_statuswin = glk_window_open(gg_mainwin, $12, gg_statuswin_cursize, 4, GG_STATUSWIN_ROCK);
   
   !una vez que hemos vuelto del menú
   !vuelve a abrir la barra de estado
   !para que funcione con normalidad
   
   modomirar = 2;
   localizacion = Sitio_01;
];

[Menu_Inicio pkey cursor_pos;

!la rutina Menu_inicio (nombre arbitrario)
!tiene 2 variables locales:
!pkey (que va a pillar la tecla pulsada) y
!cursor_pos (que mantendrá la posición
!del cursor)

   cursor_pos=1;
   
   !pone posición del cursor a 1
   
   !Ahora viene el grueso del menú, que está en un
   !bucle "do-until" que se repetirá cuanto
   !haga falta hasta que pkey valga 3, es decir
   !cuando el jugador haya optado por la opción
   !de comenzar la partida. En ese momento el
   !programa vuelve a la rutina "inicializar"
   !desde donde seguirá su curso normal
   
   do
   {
      glk_request_timer_events(10000);
      
      !activa un timer_event cada 10 segundos
      !será la rutina HandleGlkEvent quien lo
      !"recoga" y se encargue de hacer lo que queramos
      
      BorrarPantalla();
      
      !Borra la pantalla :p
      
      print "^MENíš.^^";
      if (cursor_pos==1) print "-[1]>"; else print "-[1] "; print "Créditos^";
      if (cursor_pos==2) print "-[2]>"; else print "-[2] "; print "Ayuda^";
      if (cursor_pos==3) print "-[3]>"; else print "-[3] "; print "Comenzar nueva partida^";
      if (cursor_pos==4) print "-[4]>"; else print "-[4] "; print "Salir^";
      
      !imprime el menu en la pantalla
      !cuidandose de que el cursor ">"
      !esté en la posición que le corresponde
      
      
      pkey=KeyCharPrimitive();

      !espera a que se pulse una tecla y pone
      !su código correspondiente en
      !la variable pkey

      !Ahora mira el valor de pkey
      !y actua en consecuencia

      switch (pkey)
      {
         '1':
            Creditos();
            
            !si el jugador pulsa 1
            !llama a la rutina de créditos
            
         '2':
            Ayuda();
            
            !si pulsa 2
            !llama a la rutina de ayuda
            
         '3':
            BorrarPantalla();
            
            !si pulsa 3 limpia la pantalla
            !como pkey vale 3 saldrá del menú sin más
            !y ¡a juugaaar!

         '4':
            print "¡Has pulsado salir!^";
            quit;
            
            !finaliza el programa
            !sin más contemplaciones
            
         -4:
            if (cursor_pos>1) cursor_pos--;
            
            !mueve el cursor hacia abajo
         -5:
            if (cursor_pos<4) cursor_pos++;
            
            !idem hacia ariiba
         -6:
            switch (cursor_pos)
            {
               1:Creditos();
               2:Ayuda();
               3:BorrarPantalla();pkey='3';
               4:quit;
            }
            
            !si pulsa intro toma la decisión
            !de adonde llamar según la posición
            !del cursor. Esto es redundante con lo
            !de más arriba, pero es para que
            !coexistan los dos sistemas
            !(tecla directa y cursor + intro)
            !Notese la pequeña trampa de poner a 3 el
            !valor de pkey para asegurar la salida
            !del bucle do-until
            
         default:
            print "^Elige opción entre 1-4^";
            EsperarTecla();
      }
      
      glk_request_timer_events(0);
               
      !cancela los "timer events"
   
   }
   until (pkey=='3');
   
   !salimos de Menu_Inicio y volvemos a inicializar
   !que nos mandará al cominzo del juego en la localidad
   !de inicio, como hace normalmente
   
];

[Ayuda;
   BorrarPantalla();
   print "Esto es la ayuda.^";
   Esperartecla("Pulsa una tecla.");
];

!Esta serí­a la rutina de ayuda
!aquí­, por supuesto, vendrí­an pantallas
!y más pantallas de explicaciones sobre
!cómo se juega y todo eso

[Creditos;
   BorrarPantalla();
   print "Esto son los créditos.^";
   EsperarTecla("Pulsa una tecla.");
];

!Rutina de créditos, aquí­ contarí­as orgullosamente
!tu vida, milagros, curriculum, etc, XDD

[HandleGlkEvent ev context;
   switch (ev-->0)
   {
      evtype_Timer:
         "^Vamos hombre ¡pulsa algo!^";
   }
];

!Punto de entrada que maneja, en este caso,
!los eventos de tiempo real. La explicación
!detallada viene al principio de la sección
!"Pausa y Tiempo Real" de Gull
!En nuestro caso, sólo es un simple mensaje
!que apremia al jugador a tomar una opción del menú
!si se queda sin hacer nada

Include "Gramatica";


A destacar lo de que, en el switch (pkey) del bucle del menú las opciones de teclas directas (1, 2, 3...) van con el sí­mbolo del caracter puesto en comillas simples ('1', '2', '3'...) mientras que para las otras (cursores e intro) van con el valor de su código (-4, -5, -6 ) ... No preguntéis... XDD

editado al cabo de un rato: XDD, y se me habí­a olvidado decir que, como sale en los comentarios, he metido un evento de tiempo-real para ver cómo se podrí­a manejar uno durante un menú en Glulx. La mecánica se explica más claramente en:

http://caad.mine.nu/eztanteria/gull/gull_6.html#3

En este ejemplo es un simple mensaje que cada 10 segundos invita al jugador a pulsar una tecla si no se decide por ninguna. Por supuesto, podrí­a ser cualquier otra cosa


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 02 Oct 2005 01:36 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 11:58
Mensajes: 1817
Ubicación: Madrid
Radio Marte Libre escribió:
editado al cabo de un rato: XDD, y se me habí­a olvidado decir que, como sale en los comentarios, he metido un evento de tiempo-real para ver cómo se podrí­a manejar uno durante un menú en Glulx. La mecánica se explica más claramente en:

http://caad.mine.nu/eztanteria/gull/gull_6.html#3

En este ejemplo es un simple mensaje que cada 10 segundos invita al jugador a pulsar una tecla si no se decide por ninguna. Por supuesto, podrí­a ser cualquier otra cosa


Gracias por el código, me lo guardo porque seguro que es útil. Por otro lado, como esto del tiempo en Glulxe no es muy estándar de un ordenador a otro, me estaba preguntando si en un futuro el mensaje de "Pulsa algo, hombre!" podrí­a empezar a salir machacona e insistentemente como ocurre con las viejas aventuras de spectrum cuando las cargas en el emulador y van a toda hostia, y aparecen en cadena los mensajes del tipo "Venga haz algo" "el tiempo apremia"...

_________________
_/ /\ R e \_


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 02 Oct 2005 12:33 
muy técnico (como ami me gusta)!! para maquear por completo este peazo menú, ¿podrí­a hacerse que las opciones además de con cursores se eligieran con click de ratón???
eso serí­a un puntazo! ¿no?...

y en vez de un ">" no podrí­a hacerse que, las opciones salieran resaltadas con más brillo de otro color... el código entero de todo eso serí­a la leche!!


saludos ---


Arriba
  
 
 Asunto:
NotaPublicado: 02 Oct 2005 18:56 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
Jarel escribió:
Por otro lado, como esto del tiempo en Glulxe no es muy estándar de un ordenador a otro, me estaba preguntando si en un futuro el mensaje de "Pulsa algo, hombre!" podrí­a empezar a salir machacona e insistentemente como ocurre con las viejas aventuras de spectrum cuando las cargas en el emulador y van a toda hostia, y aparecen en cadena los mensajes del tipo "Venga haz algo" "el tiempo apremia"...


¡Buena pregunta! :o La verdad es que no tengo ni idea, y no he encontrado especificaciones técnicas ni nada en lo que se mencione expresamente, así­ que cabe suponer que habrá que confiar en que las futuras implementaciones de la máquina virtual, particularmente los intérpretes, tengan en cuenta el manejo correcto del tiempo real, como, al fin y al cabo, también hacen ya hoy en dí­a los emuladores de Spectrum.

lupy escribió:
para maquear por completo este peazo menú, ¿podrí­a hacerse que las opciones además de con cursores se eligieran con click de ratón??? eso serí­a un puntazo! ¿no?...


XDD, Sí­, serí­a un puntazo, pero de los tres tipos de ventana que hay en Glk (buffer de texto, rejilla de texto, y gráfica) sólo las de rejilla y gráficos detectan pulsaciones de ratón... y nosotros tenemos nuestro flamante menú en una de buffer :( Por supuesto, podemos reescribirlo todo y colocarlo en una ventana de rejilla creada expresamente para ese fin, o incluso utilizar la de la barra de estado, que se prestarí­a muy bien a ello. Otra cosa serí­a que a estas alturas compense la molestia. Ver capí­tulos "Ventanas Glk", "Lí­neas de Estado" y "Entrada por ratón" de Gull

lupy escribió:
y en vez de un ">" no podrí­a hacerse que, las opciones salieran resaltadas con más brillo de otro color...


Sip, de hecho, a estas alturas seguro que ya sabes cómo hacerlo. Fijate que al escribir las opciones en pantalla lo único que hacemos es imprimir el cursor ">" si su posición se corresponde con esa linea y si no, dejar un espacio en blanco.
Por las mismas lo que podemos hacer es imprimir el texto de esa opción modo "normal" si no le toca estar seleccionada o bien con un estilo diferente (como por ejemplo, en negrita) si tiene el cursor en su posición.
Cómo cambiar esos estilos de impresión viene en la sección "Estilos de texto" del Gull. Si te fijas, puedes llegar a sofisticarlo con virguerí­as como cambios de colores, o color inverso, aunque, tal y como te cuentan allí­, no es del todo recomendable. Por un lado puede chocar con las limitaciones de algún intérprete, y por otro, podrí­a no cuadrar bien con la configuración de fuentes y colores de letra y fondo que tenga cada usuario en el suyo, todo lo cual podrí­a llevar a problemas de compatibilidad y/o accesibilidad.
Yo he hecho la prueba simplemente poniéndolo en negrita (style_emphasized) y me queda muy bien. Además es "razonablemente seguro" que no va a dar "muchos" problemas con intérpretes ni configuraciones, y si fuera el caso de que en un intérprete o configuración determinada las negritas no se ven bien por lo que sea, siempre queda el salvavidas para el jugador de escoger las opciones por el método de la tecla directa 1, 2, 3... (¡por eso era interesante conservarlo!)
En cualquier caso, ¡seguro que sabiendo esto ya puedes modificar el código de antes para hacerlo resaltando las opciones!


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 23 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