2012-07-13 254 views
5

可能重複:
Non-blocking getch(), ncurses非阻塞的getch()

林試圖在標準控制檯的俄羅斯方塊遊戲。我需要無阻塞的getch(),所以塊可以在沒有按任何鍵的情況下下降。如果沒有按下按鍵,返回-1的函數將會很好,否則返回鍵代碼。

如果有人能給我一個提示或一些鏈接,我會很高興。

+0

您需要有一個無限循環並在其中處理_keypress_事件。 – SingerOfTheFall 2012-07-13 14:06:59

+0

@RobKennedy - dupe假定使用ncurses – 2012-07-13 14:10:28

+0

@kittyPL,你在使用什麼操作系統和編譯器?正如你從重複投票中推斷的那樣,'getch()'是一個非標準函數。具有該名稱的函數在MS Windows API和名爲「curses」的Unix庫中提供。除了巧合地分享一個名字外,這些功能完全不相關。 – 2012-07-13 14:58:36

回答

7

它的操作系統,具體的,但你的圖書館可能有一個函數調用的kbhit()或類似的,將做到這

11

這正是你想要的東西:

int getch_noblock() { 
    if (_kbhit()) 
     return _getch(); 
    else 
     return -1; 
} 

基本上kbhit()做確定的工作如果按鍵。

假設Windows和Microsoft Visual C++。

+0

只需提及您需要#include 才能使用_kbhit() – lowtech 2017-08-04 13:23:46