2014 年度「計算数学」 2014-11-21

§8.1 画面制御エスケープシーケンス

(8.1.1) これは、C言語ではなく、端末の話である。

(8.1.2) ここの端末は、よその多くの端末と同じく、 「\033[」で始まる特別な文字列を画面に出力することで、 文字に色をつけたり、出力位置を変えたりすることができる。

(8.1.3) 「\033[自然数m」で文字の色などが変わる。 「\033[m」で普通に戻る。

#include <stdio.h>

main() {
    int i;

    for (i = 0; i < 256; i++) {
        printf("\033[%dm [%03d] \033[m  "  , i, i);
        if (i % 16 == 15) {
            printf("\n");
        }
    }
}

(8.1.4) printf("\033[2J"); で画面全体を消去。 printf("\033[10;20H"); で次の出力位置を 10 行 20 桁めに変更。 printf("\033[2K"); で行末まで削除。

(8.1.5) ランダムな位置に、ランダムな色で「#」を書くプログラム。

#include <stdio.h>
#include <stdlib.h>

#define HEIGHT 40
#define WIDTH 80

main() {
    int i;

    for (i = 0; i < 10000; i++) {
        printf("\033[%d;%dH", rand()%HEIGHT+1, rand()%WIDTH+1);
        printf("\033[%dm", rand()%256);
        printf("#");
    }
    printf("\033[m");
}

岩瀬順一