Hola, aprovecho esta duda para presentarme, llevo unos 6 meses programando (ingeniería electrónica), así que soy lo que viene siendo un novato. Pero bueno, vamos al tema,
estoy haciendo una programa/juego en C con Devcpp y allegro, tipo Space Invaders pero más cutre, se generan enemigos y van bajando por un tablero a lo que yo los intento matar, puntuación, distintos niveles... etc.
El problema viene dado ya que no se como jugar con las funciones sleep(), systempause, getchar(), para que cuando apriete la tecla 'P', el juego se quede pausado hasta que apriete cualquier otra tecla y entonces se reanude el juego.
Seguro que es una tontería así que a ver si alguien puede ayudarme, gracias de antemano.
Cuando se pulse P, que se llame a esta función:
do
{
ch = readkey();
} while (ch != KEY_P);
El bucle no termina mientras no vuelvas a pulsar P.
¿Cuál es la diferencia entre readkey() y getchar()?
Disculpen, es que no soy muy entendido en funciones de bliblioteca Windows (si es éste el caso), prefiero dentro de lo posible moverme dentro del C estándar ...
Cita de: amchacon en 10 Marzo 2014, 17:51 PM
Cuando se pulse P, que se llame a esta función:
do
{
ch = readkey();
} while (ch != KEY_P);
El bucle no termina mientras no vuelvas a pulsar P.
Hola, muchas gracias, esta tarde lo probaré, necesito alguna libreria especifica para el readkey ()?
Cita de: erovira en 12 Marzo 2014, 08:08 AMHola, muchas gracias, esta tarde lo probaré, necesito alguna libreria especifica para el readkey ()?
No, es la misma de Allegro.
Cita de: yoel_alejandro en 12 Marzo 2014, 01:34 AM
¿Cuál es la diferencia entre readkey() y getchar()?
Disculpen, es que no soy muy entendido en funciones de bliblioteca Windows (si es éste el caso), prefiero dentro de lo posible moverme dentro del C estándar ...
getchar() lee un caracter, readkey la pulsación de una tecla.
No es la biblioteca de windows, es la librería multimedia Allegro.
Hola, lo acabo de probar y lo que me pasa es que al apretar P, el programa efectivamente se pausa, pero si aprieto P o cualquier otra tecla no pasa nada, es como si se bloquease. Esa parte la tengo asi:
if (keypressed()){
if(key[KEY_P]){
do{
ch = readkey();
}while (ch != KEY_P);
}
//aqui tengo unas cuantas condiciones mas (mover jugador etc etc...) y luego cierro
}
Cambia la condición del bucle por la del if:
while(!key[KEY_P]);
Con esto último si que funciona pero lo he solucionado antes de ver el mensaje, al final lo he hecho así:
if(key[KEY_P]){
clear_keybuf();
readkey();
}
Muchas gracias