se lo pasé a dali, el me lo pasó correjido, pero, al poner el link que lo contenía en google, lo que estaba en inglés ahora está en español. es mucho trabajo y no recuerdo mucho como era. si quieres, aquí debajo lo dejo igual para que lo chequees.
include "dynamic_menu.bgt"
// Objetos sonoros.
música sonora;
sonido error_sonido;
sonido [] tono (5); // Los cuatro tonos utilizados para las secuencias.
void main()
{
// Carga los cuatro tonos.
tone [1] .load ("uno.ogg");
tone [1] .volumen = -10;
tone [2] .load ("dos.ogg");
tone [2] .volumen = -10;
tone [3] .load ("tres.ogg");
tone [3] .volumen = -10;
tone [4] .load ("cuatro.ogg");
tone [4] .volumen = -10;
// Carga el sonido de error.
error_sound.load ("error.wav");
error_sound.volume = -10;
// Carga la música.
music.load ("music.wav");
volumen de música = -10;
// Configurar voz.
tts_voice voice;
// Menú de configuración.
menú dinámico_menú;
menu.allow_escape = true;
menu.wrap = true;
menu.add_item_tts ("Iniciar juego");
menu.add_item_tts ("Práctica del teclado");
menu.add_item_tts ("Salir del juego");
// Muestra la ventana del juego y pronuncia un mensaje de bienvenida.
show_game_window ("Tren de memoria");
voice.speak_wait ("¡Bienvenido a Memory Train!");
// Reproduce la música en segundo plano antes de ejecutar el menú.
music.play_looped ();
int elección; // Esto almacena las selecciones de menú del usuario.
hacer
{
choice = menu.run ("Elija un elemento del menú con las teclas de flecha, luego presione enter para activarlo.", verdadero);
si (opción == 1)
{
music.stop ();
play_round (); // Definiremos esta función más tarde.
music.play_looped ();
}
si no (opción == 2)
{
music.stop ();
keyboard_practice (); // Definiremos esta función más tarde.
music.play_looped ();
}
}
while (opción! = 0 y opción! = 3);
// El usuario presionó escape o eligió salir.
voice.speak_wait ("Gracias por jugar");
}
void play_round ()
{
// Inicializa el estado del juego.
bool game_over = false; // El juego continuará mientras sea falso.
secuencia int []; // La secuencia de ejecución.
int secuencia_length = 0;
flotante time_between_tones = 500; // La velocidad inicial a la que se reproducen los tonos, en milisegundos.
flotante time_between_inputs = 2000; // Tiempo máximo para ingresar la siguiente clave antes de que el jugador sea rebotado.
hacer
{
// Agrega otro tono a la secuencia.
longitud_secuencia ++;
secuencia.resize (secuencia_length);
secuencia [secuencia_length-1] = aleatorio (0,3);
// Reproduce la secuencia de principio a fin.
output_sequence (@sequence, time_between_tones);
// Permítales repetirlo si pueden.
game_over = input_sequence (@sequence, time_between_inputs);
// Cada vez que se dominan otros cinco tonos:
// aumenta la velocidad muy ligeramente.
if ((secuencia_longitud% 5) == 0)
{
time_between_tones = time_between_tones * 0.9;
// Asegúrese de que no caiga por debajo de 150.
if (time_between_tones <150)
{
time_between_tones = 150;
}
}
}
while (! game_over);
int score = secuencia_length-1; // menos 1 porque fallaron en el último.
tts_voice voice;
voice.speak_wait ("Tu puntaje final fue" + puntaje);
}
void keyboard_practice ()
{
tts_voice voice;
voice.speak_wait ("Presione las teclas de flecha para averiguar qué tecla genera qué tono");
voice.speak_wait ("Presiona escape para dejar de practicar");
while (! key_pressed (KEY_ESCAPE))
{
if (clave_presionada (KEY_LEFT))
{
tono [0] .play ();
}
de lo contrario if (key_pressed (KEY_DOWN))
{
tono [1] .play ();
}
de lo contrario if (key_pressed (KEY_RIGHT))
{
tono [2] .play ();
}
de lo contrario if (key_pressed (KEY_UP))
{
tono [3] .play ();
}
espera (5);
}
}
bool input_sequence (int [] @sequence, float time_between_inputs)
{
reloj temporizador;
para (uint i = 0; i <secuencia.length (); i ++)
{
// Haz lo siguiente para cada tono de la secuencia:
clock.restart ();
int input = -1; // Establecerlo en algo no válido.
while (clock.elapsed <time_between_inputs)
{
if (clave_presionada (KEY_LEFT))
{
entrada = 0;
}
de lo contrario if (key_pressed (KEY_DOWN))
{
entrada = 1;
}
de lo contrario if (key_pressed (KEY_RIGHT))
{
entrada = 2;
}
de lo contrario if (key_pressed (KEY_UP))
{
entrada = 3;
}
if (entrada> = 0)
{
rotura; // Deja de esperar porque algo fue escrito.
}
espera (5);
}
// El juego termina si se agotó el tiempo de espera o la clave es incorrecta.
if (entrada! = secuencia [i])
{
error_sound.play_wait ();
volver verdadero;
}
// Reproduce tonos exitosos como feedback
tono [entrada] .play ();
}
// El jugador logró reproducir toda la secuencia.
// Espera un segundo para dejarlos recuperar el aliento.
clock.restart ();
while (clock.elapsed <1000)
{
espera (5);
}
falso retorno;
}
secuencia_de_salida nula (int [] @ secuencia, flotante time_between_tones)
{
reloj temporizador;
int actual;
para (uint i = 0; i <secuencia.length (); i ++)
{
// Para cada tono menos el primero, espera antes de tocar.
si (i> 0)
{
clock.restart ();
while (clock.elapsed <time_between_tones)
{
espera (5);
}
}
actual = secuencia [i];
tono [actual] .play ();
}
// Finalmente, espera a que disminuya el último sonido.
while (tono [actual] .playing)
{
espera (5);
}
}
espero le encuentre la buelta por que no pude yo jaja. gracias