トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> コードサンプル >> コンソールでのアニメーション表示

コンソールウィンドウでアニメーションを表示 (C言語)

C言語のコンソールウィンドウでアニメーション(もどき)を表示する方法です。
(※ Windows環境専用)

#include <stdio.h>
#include <conio.h>   // for _kbhit()
#include <windows.h> // for sleep();

int main(void)
{
    unsigned int i;

    char * szAnimeText[] = {
        "(゚Д゚;)                ",
        "( ゚Д) *****          ",
        "(  ゚) **********     ",
        "(   ) ***************",
        "(゚;  ) **********     ",
        "(Д゚; ) *****          ",
    };

    for (i=0; ; i++) {
        printf("%s\r", szAnimeText[i%6]);
        Sleep(100);

        if (_kbhit()) {
            break;
        }
    }

    return 0;
}
結果: コンソールウィンドウでアニメーション表示(C言語) (※ 実際にプログラムを実行すると、グルグルと回転する顔文字が表示されて面白いです^^;) 実行ファイルを置いておくので、よろしければダウンロードして実行してみて下さい。⇒ 05anime.zip 以下は、説明用に行番号を振ったものです。
 1 : #include <stdio.h>
 2 : #include <conio.h>   // for _kbhit()
 3 : #include <windows.h> // for sleep();
 4 :
 5 : int main(void)
 6 : {
 7 :     unsigned int i;
 8 :
 9 :     char * szAnimeText[] = {
10 :         "(゚Д゚;)                ",
11 :         "( ゚Д) *****          ",
12 :         "(  ゚) **********     ",
13 :         "(   ) ***************",
14 :         "(゚;  ) **********     ",
15 :         "(Д゚; ) *****          ",
16 :     };
17 :
18 :     for (i=0; ; i++) {
19 :         printf("%s\r", szAnimeText[i%6]);
20 :         Sleep(100);
21 :
22 :         if (_kbhit()) {
23 :             break;
24 :         }
25 :     }
26 :
27 :     return 0;
28 : }
「アニメーションの原理は、ノートの端に描いたパラパラ漫画と同じ」という事は、周知の事実^^;) というわけで、まずはアニメーション表示の元となるテキストを、配列のポインタという形で宣言します。(9~16行目) そして、ループ(18~25行目)内で表示します。 このプログラミングの肝は、 19行目の \r (キャリッジリターン)と、i%6 (ループカウンタ % (配列のMax要素数 + 1))、 そして、アニメーションテキスト配列の文字列長が、全て同じという点です。 まず \rは、\n (ラインフィード:改行)とは異なり、カーソル位置を現在行の先頭に移動させます。 そして、ループカウンタ % (配列のMax要素数 + 1) を指定する事で、      0, 1, 2, ... 配列のMax要素数, 0, 1, 2, ... が 周期的に繰り返されます。 よって、「アニメーションテキスト配列の内容が、繰り返し同じ場所に、次々と表示され、アニメーションが表示される」というわけです。 また、20行目のSleep(100)で、100ミリ秒間隔で表示が切り替わるようにしており、 22~24行目の_kbhit()は、キー入力があると、ループから抜け出してプログラムが終了する為のコードです。
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。