Buenas, soy estudiante de programación, apenas comenzando. En la facultad llevamos una materia donde vemos solo ejercicios, y esta última sesión se nos asignó un ejercicio algo complicado. No por todo el ejercicio en sí, sino por la funcionalidad que especificó el profesor.
Solo para mostrar de que trata:
Mi duda surge de lo que está resaltado en negritas... Se supone que el juego, debe preguntar una operacion con datos especificados por el usuario -incluyendo el nivel de dificultad-.
(Supongamos 1+2... valor inicial=1, valor modificador=2), en cuanto el juego comienze y esta operación aparezca en pantalla, debe iniciarse un contador (supongamos de nivel 1, 12 segundos), y este contador debe continuar aun MIENTRAS el usuario introduce la respuesta y detenerse al presionar ENTER, para luego comparar la respuesta. En caso de que el tiempo se termine sin datos introducidos, debe pasar a la sig. operación.
¡Bueno! Ese es mi dilema, no tengo ni la menor idea de como detener este ciclo unicamente con la tecla ENTER, y que mientras este siga corriendo, me acepte los datos numericos del teclado.
Me han hablado de kbhit pero no he encontrado una forma de implementarla de la forma que deseo (ya que almacena caracteres segun entendí).
Esta es solo una muestra de la parte del codigo donde se realizaria la operacion/pregunta en caso de ser una suma, no incluyo todo lo demas para no confundir (y porque aun está en proceso jeje, pero mi única duda es ahí) :
Sé que el incluir el tiempo restante cada segundo sería problematico (tal vez no solo visualmente) pero así se especificó, a menos de que pueda demostrarle al profesor porque no es conveniente..
Agradecería mucho su ayuda, criticas, apoyos, rosas, chocolates, mentadas de mami y demas.
Solo para mostrar de que trata:
CitarEl juego consiste en jugar con el CPU a realizar operaciones de sumar, restar, multiplicar o dividir en base a un mismo numero dentro de limites de tiempo.
La primera pantalla de dicho juego mostrara el siguiente menú:
1.- Sumas.
2.- Restas
3.- Multiplicaciones
4.- Divisiones
5.- Configuracion del juego.
Dentro de la configuracion del juego:
1.- Ajuste de nivel de dificultad (del 1 al 12)
2.- Asignar valor inicial.
3.- Asignar el valor de modificador.
-El nivel de dificultad, incrementa despues de 5 inferencias, teniendo más exitos que fracasos (3 de 5 para aumentar)
-En el nivel 1, el tiempo para responder es de 12 segundos, en el nivel 12 es de 0.1 segundos, (esto incluye el tiempo en teclear hasta que presiona "enter" el usuario).
-El juego termina al obtener mas fallos que exitos.
-Al final el programa debe de mostrar una pantalla con promedios y estadisticas por nivel y generales.
Mi duda surge de lo que está resaltado en negritas... Se supone que el juego, debe preguntar una operacion con datos especificados por el usuario -incluyendo el nivel de dificultad-.
(Supongamos 1+2... valor inicial=1, valor modificador=2), en cuanto el juego comienze y esta operación aparezca en pantalla, debe iniciarse un contador (supongamos de nivel 1, 12 segundos), y este contador debe continuar aun MIENTRAS el usuario introduce la respuesta y detenerse al presionar ENTER, para luego comparar la respuesta. En caso de que el tiempo se termine sin datos introducidos, debe pasar a la sig. operación.
¡Bueno! Ese es mi dilema, no tengo ni la menor idea de como detener este ciclo unicamente con la tecla ENTER, y que mientras este siga corriendo, me acepte los datos numericos del teclado.
Me han hablado de kbhit pero no he encontrado una forma de implementarla de la forma que deseo (ya que almacena caracteres segun entendí).
Esta es solo una muestra de la parte del codigo donde se realizaria la operacion/pregunta en caso de ser una suma, no incluyo todo lo demas para no confundir (y porque aun está en proceso jeje, pero mi única duda es ahí) :
Citarrespuesta=valorinicial+valormod;
printf("%d + %d = ",valorinicial,valormod);
do{
Sleep( (clock_t)1 * CLOCKS_PER_SEC );
tiempo=tiempo-1;
printf(" %d ",tiempo);
}while (tiempo>0); //*Ciclo que necesito detener con Enter y recibir datos*//
//*Recibir respuesta2*//
if (respuesta==respuesta2)
acierto=acierto+1;
else
fallo=fallo+1;
Sé que el incluir el tiempo restante cada segundo sería problematico (tal vez no solo visualmente) pero así se especificó, a menos de que pueda demostrarle al profesor porque no es conveniente..
Agradecería mucho su ayuda, criticas, apoyos, rosas, chocolates, mentadas de mami y demas.