Hola, un saludo y gracias a la moderación por revivir este hilo. En otro hilo un usuario pidió que se le ayudara con un menú,
a lo que nikola.tesla respondió, con un ejemplo vastante claro. Cabe resaltar que haciendo el menú así, hablará con la voz sapi predeterminada que tengas, será un menú envolvente escir que no se detiene en el último elemento, si no que regresa al primero, bácicamente esas dos cositas. Si
queremos un menú que utilice un lector como NVDA, deberíamos tener en nuestra carpeta de proyecto la dll del lector, cuyo nombre es nvdaControllerClient32.dll, y añadir lo siguiente, pongo el ejemplo de nikola para ilustrar;
antes que se me olvide, debo anotar que si las funciones a las que llama el menú no están creadas aunque no presenten algún código, o si dicha función que se invoca no hace ni siquiera parte del propio bgt,
al intentar compilar o correrlo dará error.
include "dynamic_menu.bgt" // Cargamos la librería "dynamic_menu.bgt", la cual nos permitirá hacer nuestros menús.
void main()
{
show_game_window("¡Mi primer menú!"); // Le asignamos un título a la ventana, indispenzable para que el cursor no e vuelba loco y nos deje acceder a la ventana.
dynamic_menu m; // Asignamos "m" para dirigirnos a la función "dynamic_menu".
m.allow_escape = true; permite ejecutar una acción presionando la tecla escape, por ejemplo salir del juego.
m.wrap = false; // Evita que nuestro menú sea emvolvente
m.set_speech_mode(4); // hace que nuestro menú utilice el lector de pantallas NVDA, dirigirse a la documentación para mas info
m.add_item_tts("Jugar"); // Creamos una opción.
m.add_item_tts("Salir"); // Creamos otra opción.
int menu=m.run("Bienvenido a mi primer menú. Elige una opción con las flechas y pulsa énter para activarla", true); // Creamos un int para poder dirigirnos a las distintas opciones mediante el if, y ponemos un texto el cual se vervalizará al acceder al menú.
if(menu == 0) // si presionamos escape, menu toma como valor cero y salimos del programa
{
screen_reader_speak(4, "¡Gracias por jugar!");
wait(50); // añadimos una pequeña pausa
exit();
}
if(menu==1) // Si menu toma el valor uno (La primera opción), se ejecutará el bloque que esté en el.
{
juego();
}
if(menu==2) // Si menu es igual a dos, se ejecutará el bloque que le asignemos.
{
exit();
}
}
/*
El int menú tomará el valor correspondiente a la opción sobre la cual el usuario pulse énter, o sea ejecute, active o como se le quiera decir.
De este modo si por ejemplo yo accedo al menú y apreto en jugar, estaría apretando en la opción uno y por lo tanto el int tomará ese valor, entonces ahí se ejecuta el bloque de uno de los if, el que dice "menu==1", o sea el que compara si menú tiene el valor 1.
Espero se me entienda, si no se me entendió algo escribime al privado o por acá que te ayudo con gusto.
Saludos.
*/
Lo que se ocurra, preguntan que para eso estamos, para apoyar