Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: erovira en 10 Marzo 2014, 17:46 pm



Título: [Solucionado] Pausar y reanudar programa.
Publicado por: erovira en 10 Marzo 2014, 17:46 pm
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.


Título: Re: [?][C] Pausar y reanudar programa.
Publicado por: amchacon en 10 Marzo 2014, 17:51 pm
Cuando se pulse P, que se llame a esta función:

Código
  1. do
  2. {
  3.   ch = readkey();
  4. } while (ch != KEY_P);

El bucle no termina mientras no vuelvas a pulsar P.


Título: Re: [?][C] Pausar y reanudar programa.
Publicado por: 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 ...


Título: Re: [?][C] Pausar y reanudar programa.
Publicado por: erovira en 12 Marzo 2014, 08:08 am
Cuando se pulse P, que se llame a esta función:

Código
  1. do
  2. {
  3.   ch = readkey();
  4. } 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 ()?


Título: Re: [?][C] Pausar y reanudar programa.
Publicado por: amchacon en 12 Marzo 2014, 10:52 am
Hola, muchas gracias, esta tarde lo probaré, necesito alguna libreria especifica para el readkey ()?
No, es la misma de Allegro.

¿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.


Título: Re: [?][C] Pausar y reanudar programa.
Publicado por: erovira en 13 Marzo 2014, 14:24 pm
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:

Código:
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

}



Título: Re: [?][C] Pausar y reanudar programa.
Publicado por: amchacon en 13 Marzo 2014, 15:13 pm
Cambia la condición del bucle por la del if:

Código
  1. while(!key[KEY_P]);


Título: Re: [?][C] Pausar y reanudar programa.
Publicado por: erovira en 13 Marzo 2014, 15:53 pm
Con esto último si que funciona pero lo he solucionado antes de ver el mensaje, al final lo he hecho así:
Código
  1. if(key[KEY_P]){  
  2.      clear_keybuf();  
  3.      readkey();              
  4. }
  5.  

Muchas gracias