2011-01-21 85 views
5

我想做一個基本上是控制檯乒乓球的小控制檯程序。所以現在我有這樣的:從控制檯獲取輸入而不使用cin?

int main() 
{ 
    while(1) 
    { 
     clearScreen(); 
     restThread(100); 
    } 
    return 0; 
} 

我需要輪詢的輸入是當用戶按下A或d鍵,因爲屏幕被清除。我還需要知道密鑰何時發佈。我也試圖做這個跨平臺。

所以我真正需要的只是一個if(keyWasDown('a')){}函數。

感謝

+1

沒有標準的方法。你得到的答案將會是平臺特定的。 – GManNickG 2011-01-21 01:17:40

回答

7

也許你想kbhit(非阻塞)或getch(阻塞),均來自<conio.h>。還有getchar,從<stdio.h><cstdio>

如果你想程序等待鍵盤按下,getchgetchar自己會做。

如果希望程序等待按下鍵盤,加上無論是getchgetchar就足夠kbhit。然而,正如GMan所說,這些方法並不是真正的跨平臺(如果你從不打算在不同的平臺上嘗試這種方法,那真的沒有實際意義)。對於遊戲機遊戲,您可能有興趣查看ncurses

+0

哪個操作系統? – Raedwald 2011-01-21 01:21:11

3
 

#include <stdio.h> 
#include <conio.h> 

int main() 
{ 
    while(1) 
    { 
     clearScreen(); 

     if(kbhit()) 
     { 
      int const ch = getch(); 
      switch(ch) 
      { 
      case 0x61: printf("A was pressed!\n"); break; 
      case 0x64: printf("D was pressed!\n"); break; 
      } 
     } 

     restThread(100); 
    } 

    return 0; 
} 
 
相關問題