C言語関数:getch





C言語のページでは、次の内容を解説しております。
C言語の入門講座  C言語の文法を中心に、基本的な関数などの解説をしています。
C言語ケーススタディ  C言語での実践的なプログラミングについて解説をしています。
C言語の関数リファレンス  C言語で用意されている関数を解説しています。
C言語で3次元動画プログラム  C言語で3次元タートルグラフィックを使用した3次元の動画プログラムの作成例です。
C言語の検定試験  C言語の文法に関する検定試験を実施することができます。
C言語でゲーム作成  C言語を使用したゲームの作り方を解説したページも用意しております。



2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を協力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。




■getch
エコーなし文字入力

【分類】
標準入出力/ストリーム関数

【書式】
int getch(void);

【パラメータの型と説明】
なし

【機能説明】
標準入力(キーボード)から1文字読み込み、その文字を返します。
バッファリングや入力文字の画面表示が行われなず直接読み込みます。
また、この関数ではカーソルキーなどの特殊キーも読み込むことができます。

getch()関数の使用例です。

main()
{
        int     ch;

        for(;;){
                ch = getch();
                switch(ch){
                case 5:
                        printf("[上]");
                        break;
                case 6:
                        printf("[下]");
                        break;
                case 7:
                        printf("[左]");
                        break;
                case 8:
                        printf("[右]");
                        break;
                case 0x1B: /*ESCキー*/
                        return;
                default:
                        printf("[%x]", ch);
                }
        }
}

実行結果は以下になります。カーソルキーやその他のキーを押した実行結果です。

[上][上][上][左][左][左][右][右][右][下][下][下][a][9]

1.カーソルキーを押した場合は、[上][右]などとその方向が表示されます。
2.その他のキーを押した場合は、キーコードが16進数で表示されます。
3.ESCキーを押すと終了します。

次のプログラムは、ゲームのような使用例です。

main()
{
        int     ch;
        int     x, y, ox, oy;

        ox = oy = -1;
        x = 40;
        y = 10;
        printf("\033[2J");        /*画面消去*/
        for(;;){
                /*位置が変更されていなければ表示しない*/
                if(ox != x || oy != y){
                        /*初回は消去しない*/
                        if(ox != -1 && oy != -1)
                                printf("\033[%d;%dH ", oy+1, ox+1);
                        ox = x;
                        oy = y;
                        printf("\033[%d;%dH+", y+1, x+1);
                }

                ch = getch();
                switch(ch){
                case 5: /*上*/
                        if(y <= 0)
                                break;
                        y--;
                        break;
                case 6: /*下*/
                        if(y >= 24)
                                break;
                        y++;
                        break;
                case 7: /*左*/
                        if(x <= 0)
                                break;
                        x--;
                        break;
                case 8: /*右*/
                        if(x >= 79)
                                break;
                        x++;
                        break;
                case 0x1B:
                        return;
                }
        }
}

1.画面上に「+」が表示されます。
2.カーソルキーを押すと「+」が、その方向に移動します。
3.ESCキーを押すと終了します。

【参照関数】
getchar

【使用例】
C言語ケーススタディ 時計の作り方2
C言語ケーススタディ カウントダウン時計の作り方1
C言語ケーススタディ カウントダウン時計の作り方2