podes hacerlo a la manera rapida con hilos, usando allegro.h y winalleg...
-   
-   
- #include <windows.h> 
- #include <stdio.h> 
- #include <conio.h> 
-   
-       DWORD THREADID; 
-       HANDLE HAND; 
-       char letra; 
-   
- DWORD WINAPI LeerTeclado(void* nul){ 
-       letra = getche();      
-       printf("\nLetra : %c",letra); 
-       } 
-      
-   
- int main(){ 
-     HAND = CreateThread(0,0,LeerTeclado,0,0,&THREADID); // creamos un hilo 
-     Sleep(3000); // esperamos 3 segundos como maximo 
-     TerminateThread(HAND,0); //ok, te quedaste sin tiempo, cortemos la entrada del teclado  
-   printf("\n se termino el tiempo !"); 
-     fflush(stdin); 
-     getchar(); 
-  return 0;    
- } 
-   
-   
-   
-   
ya se que ese code esta medio feo, pero andaba apurado xDDDD (por eso no puse las libs de allegro y headers, para no perder tiempo xD)
ahi tenes un programa simple con un limite de tiempo, si tenes duda de alguna funcion, decime que te explico ^^
este tema que te mostre de hilos es crucial en los juegos, ya que hay que hacer varias cosas a la vez ..
yo siempre uso hilos en mis apps 

en un juego que hice use hasta 6 hilos simultaneos...
un jueguito bastante completito xD
espero que te haya servido, cualquier cosa tenes mi mail/msn a disposicion
Au Revoir !