2017-02-19 29 views
0

我正在嘗試構建一個簡單的蛇遊戲。 功能void Input()調用_kbhit()_getch() 但問題是,我不能實現這些功能的原因conio.h不包括在Linux中的gcc包。是否有替代方法來完成_kbhit()_getch()的任務而不使用conio頭文件?如何在Linux上使用C++實現kbhit()和gethch()

void Input() // handle controls 
{ 
if(_kbhit()) // boolean positive if key is pressed 
{ 
switch(_getch()) // gets ascii val of key pressed 
{ 
     case 'a': 
     dir = LEFT; 
     break; 

     case 'd': 
     dir = RIGHT; 
     break; 

     case 'w': 
     dir = UP; 
     break; 

     case 's': 
     dir = DOWN; 
     break; 

     case 'x': 
     gameOver = true; 
     break; 
    } 
} 
} 

回答

1

這些函數有點「非法」,不再用於標準C++。

ncurses圖書館可能會有所幫助。

ncurses,順便說一句,定義TRUE和FALSE。正確配置的ncurses將使用與ncurses'bool相同的數據類型作爲用於配置ncurses的C++編譯器。

下面是說明ncurses的可以像conio例如使用一個例子:

#include <ncurses.h> 
int main() 
{ 
initscr(); 
cbreak(); 
noecho(); 
scrollok(stdscr, TRUE); 
nodelay(stdscr, TRUE); 
while (true) { 
    if (getch() == 'g') { 
     printw("You pressed G\n"); 
    } 
    napms(500); 
    printw("Running\n"); 
} 
} 
+1

再次閱讀問題,GetAsyncKeyState()是WinAPI的一部分,他想要的東西爲Linux – CrizerPL

相關問題