アニメーションループを実装する
雨滴の位置を継続的に更新し、画面に表示するためのループを設定します。アニメーションループを終了するためのユーザー入力をチェックします。
while (1) {
int ch = getch();
if (ch == 'q') {
break;
}
for (int i = 0; i < MAX_RAIN; i++) {
attron(COLOR_PAIR(rain[i].color));
mvaddch(rain[i].y, rain[i].x, ' ');
rain[i].y += rain[i].speed;
if (rain[i].y >= max_y) {
rain[i].y = 0;
rain[i].x = rand() % max_x;
}
mvaddch(rain[i].y, rain[i].x, rain[i].ch);
attroff(COLOR_PAIR(rain[i].color));
}
refresh();
napms(50);
}
getch()
関数を使用してユーザーの入力文字を取得し、整数型変数ch
に格納します。
for
ループは雨滴の効果をシミュレートするために使用されます。複数の雨滴に関する情報が含まれるrain
と呼ばれる配列をループ処理します。各雨滴は次のプロパティで構成されています。色、位置座標(xとy)、落下速度(speed)、および文字(ch)。
このループは、q
キーを押すまで続行されます。その時点でプログラムはbreak;
文を通過し、ループを抜け、プログラムが終了します。
アニメーションループが終了した後、ncurses
環境をクリーンアップし、プログラムを終了します。
endwin();
return 0;
getch()
関数を使ってユーザーの入力文字を取得し、整数変数ch
に格納する。
for
ループは、複数の雨滴に関する情報が格納されたrain
配列をループ処理し、雨滴の落下をシミュレートする。各雨滴は、色、位置座標(xとy)、落下速度(speed)、文字(ch)の4つのプロパティで構成される。
このループは、q
キーが押されるまで継続し、そのときbreak;
文が実行され、ループを抜け、プログラムが終了する。
アニメーションループが終了した後、ncurses
環境をクリーンアップし、プログラムを終了する。
endwin();
return 0;