1

B-Trix に関する小さなプログラムを作成します。そして、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;
}

up down left right の出力は 27 ですが、これらの値が同じなのはなぜですか? 誰でも私を助けることができますか?

4

1 に答える 1

0

矢印キーは、Ubuntu では 3 文字でエンコードされていました。そこで、矢印キーをチェックするようにコードを次のように変更しました。

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;
            }
}
于 2013-09-01T10:38:02.117 に答える