ホームページ >バックエンド開発 >C++ >C コンソール アプリケーションで矢印キーの押下を検出するにはどうすればよいですか?

C コンソール アプリケーションで矢印キーの押下を検出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-09 10:06:02772ブラウズ

How to Detect Arrow Key Presses in C   Console Applications?

C での矢印キーの押下を検出する

多くの開発者は、C コンソール アプリケーション内で矢印キーの押下を検出する際に課題に直面しています。この記事は、さまざまな方法を検討し、信頼できる解決策を特定することで、この問題に対処することを目的としています。

既存の試行のトラブルシューティング

質問で説明されている 2 つの方法はどちらも getch( ) キー入力をキャプチャする関数。しかし、矢印キーは通常 2 回連続してキーを押すという事実を考慮していません。最初のキー押下は「拡張キー」コードを表し、その後に実際の矢印キー コードが続きます。

検出方法の改善

矢印キーの押下を正確に検出するために、アプローチが改訂されました。

#include <conio.h>
#include <iostream>
using namespace std;

#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77

int main() {
    int c = 0;
    while (1) {
        c = 0;

        switch ((c = getch())) {
        case KEY_UP:
            cout << "Up" << endl;
            break;
        case KEY_DOWN:
            cout << "Down" << endl;
            break;
        case KEY_LEFT:
            cout << "Left" << endl;
            break;
        case KEY_RIGHT:
            cout << "Right" << endl;
            break;
        default:
            cout << "null" << endl;
            break;
        }
    }
    return 0;
}

このメソッドは、まず「拡張キー」コードを取得し、それを既知の矢印キー コードのリストと比較します。一致するものが見つかった場合、対応する矢印キーの方向がコンソールに出力されます。キャプチャされたコードがどの矢印キー コードにも一致しない場合、それは「null」キー押下とみなされます。

出力と結論

実行すると、プログラムは正常に検出され、押された各矢印キーに対応する方向を出力します。このソリューションは、矢印キーの押下を効果的にキャプチャして解釈し、開発者がユーザー入力に適切に応答する対話型コンソール アプリケーションを構築できるようにします。

以上がC コンソール アプリケーションで矢印キーの押下を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。