SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Dunadan en Lunes 15 de Agosto de 2005, 17:11

Título: Comprobación Teclado
Publicado por: Dunadan en Lunes 15 de Agosto de 2005, 17:11
Buenas, estuve probando y no pude lograrlo: lo que quiero es una función que se fije si el teclado tiene alguna tecla en la memoria, si no es asì que siga.  Intenté pero lo que pasa es que el programa se queda esperando a que pulse una tecla, sigue corriendo la función infinitamente o directamente salta de la función.  
   
       Lo único que quiero es saber si el usuario pulsó una tecla, pero que no se quede esperando a que la pulse.

Gracias de antemano y saludos.
Título: Re: Comprobación Teclado
Publicado por: Eternal Idol en Lunes 15 de Agosto de 2005, 17:17
Cita de: "Dunadan"
Buenas, estuve probando y no pude lograrlo: lo que quiero es una función que se fije si el teclado tiene alguna tecla en la memoria, si no es asì que siga.  Intenté pero lo que pasa es que el programa se queda esperando a que pulse una tecla, sigue corriendo la función infinitamente o directamente salta de la función.  
   
       Lo único que quiero es saber si el usuario pulsó una tecla, pero que no se quede esperando a que la pulse.

Gracias de antemano y saludos.
Seria interesante que aclararas con que sentido queres hacer eso como para poder proponerte una solucion.
Título: Re: Comprobación Teclado
Publicado por: Dunadan en Lunes 15 de Agosto de 2005, 18:22
Mil disculpas, lo que quería hacer es lo siguiente: en realidad es una pavada, estaba haciendo un jueguito para practicar lo recién aprendido sobre matrices, y dónde sería la presentación dice "Por favor presione un tecla para continuar", en seguida después de eso quería hacer una función en la que nada más escriba continuamente una serie de "puntos", haciendo la ilusiòn de que estuviera pensando, acá el código:

Código: Text
  1.  
  2. void Puntitos(int X,int Y,int iVeces)
  3. {
  4.   int i,j,r,w;
  5.  
  6.   do{
  7.   gotoxy(X,Y);
  8.  
  9.   for(i=0;i < iVeces;i++) /*procede a escribir los puntos con delay*/
  10.   {
  11.     putchar('.');
  12.     if(stdin != NULL ) /*Esto esta mal, no funciona*/
  13.     {
  14.       return;
  15.     }
  16.     else
  17.     {
  18.     delay(1000);
  19.      }
  20.   }
  21.  
  22.  
  23.   for(r=0;r<iVeces;r++) /*Borra lo puntitos*/
  24.   {
  25.    gotoxy(X+r,Y);
  26.    putchar(' ');
  27.   }
  28.  
  29.  
  30.   }while(kbhit !=  0 ); /*No funciona*/
  31. return;
  32.  
  33.  

Lo finalidad es ecribir X puntitos con cierto delay entre cada uno, borrarlos y volverlos a escribir hasta que el usuario pulse una tecla.  Quería comprobar entre cada punta que se escribe y después de borrarlos si el usuario pulsó una tecla, pero no encuentro la función adecuada (si es que la hay) para verificar sólo si hay una tecla en espera, no que espere que el usuario teclee una.  Después de esta función entraría directamente en la pantalla principal del juego, pero eso ya es otra cosa.  Espero haber aclarado un poco más y disculpas nuevamente.

Saludos.

P.D= Esto es aparte pero tiene que ver con matrices; conozco lo algoritmos de ordenamiento de vectores,¿pero cómo hago para ordenar matrices? Por ejemplo:

Código: Text
  1.  
  2. 159                   123
  3. 864       a esto   456  
  4. 732                   789
  5.  
  6.  

Aprovecho de paso para no crear otro post, si lo que hago es desubicado por favor díganmelo.
Título: Re: Comprobación Teclado
Publicado por: Eternal Idol en Lunes 15 de Agosto de 2005, 18:46
En cuanto al codigo deberias usar un bucle de este estilo:

do
{
}while(!kbhit());

Ya que kbhit devuelve 0 cuando no tiene ninguna tecla pulsada:
http://www.scriptlogic.com/Kixtart/htmlhel...tions/kbhit.htm (http://www.scriptlogic.com/Kixtart/htmlhelp/functions/kbhit.htm)


PD. Me parece mas logico que abras otra pregunta para el tema del ordenamiento  :devil:
Título: Re: Comprobación Teclado
Publicado por: piyey en Martes 16 de Agosto de 2005, 00:43
Hola amigos...

Segun lo que entendi el ciclo seria mas o menos asi:

Código: Text
  1. while(condicion)
  2. {
  3.     if(kbhit())//si presiona una tecla
  4.     {
  5.         ...
  6.     }
  7. }
  8.  

ah... y el ciclo no te funcionaba porque kbhit() es una función y no le pusiste los parentesis...

See you!!! :hola:
Piyey.
Título: Re: Comprobación Teclado
Publicado por: Dunadan en Martes 16 de Agosto de 2005, 14:32
Muchas gracias a los dos, yo busqué varias posibilidades, pero la primera que había probado (kbhit) no le había puesto los paréntesis, error de principiante  :P
Después abro otro post sobre el tema del ordenamiento de matrices  <_<

Saludos