2013-08-30 66 views
1

我寫了一個關於B-Trix的小程序。我想用getch()來獲得玩家的輸入。 我試圖讓上,下值,權,使用的getch()左按鍵,這裏是我的測試代碼:爲什麼我會從getch()獲得相同的「向右下方」按鍵值

#include <stdio.h> 
#include <curses.h> 
int main(void) 
{ 
int ch; 
initscr(); 
printw("Input a character:"); 
ch = getch(); 
printw("\nYou input a '%c'\n%d", ch, ch); 
refresh(); 
sleep(3); 
endwin(); 
return 0; 
} 

中的上下左右輸出27,爲什麼這些值相同嗎? 有人可以幫我嗎?

+1

你意識到「向上」並不是一個真正的角色,對吧? – McKay

+0

如果你調用getch()兩次會發生什麼? – McKay

+0

有人說我只需要判斷第一個字符是0x0還是0xE0。但是我做了一個測試,三個字符用於「up」。我該如何解決它? –

回答

0

在Ubuntu中,箭頭鍵由三個字符編碼。 所以我改變了我的代碼,像這樣檢查方向鍵。

if(kbhit()){ 
      switch(getch()){ 
      case 0x1b:   //For case arrow pressed 
       if(getch() == 0x5b){ 
        switch(getch()){ 
        case 0x41: 
         turn(); 
         break; 
        case 0x44: 
         mv_left(); 
         break; 
        case 0x43: 
         mv_right(); 
         break; 
        case 0x42: 
         mv_down(); 
         break; 
        } 
       } 
       break; 
      } 
} 
相關問題