cursesライブラリを使ったプログラミング(1)
9月になってずっと、Unix/Linuxプログラミングを読んでいる。7.4節のsleepまできた。
7章でcursesライブラリの使い方を学んだことで、端末画面でカーソルを動かしたり、文字を表示するしくみが少しはわかった。Linuxコマンドで、lsと打つのを間違えてslとすると、画面上をSLの絵が走るものが昔あった(今もあるが。http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/)が、その類のプログラムが作れそうだなと思った。
そこでちょっと作ってみる。
/* mona.c * ver.0.1 * 2008 09/13 * compile: cc mona.c -lcurses -o mona */ #include <curses.h> #define LEFTEDGE 10 #define RIGHTEDGE 50 #define ROW 10 main() { char fig[][38] = {" ∧_∧ / ̄ ̄ ̄ ̄ ̄", " ( ´∀`)< オマエモナー", " ( ) \_____ ", " | | | ", " (__)_) "}; char blank[] = " "; int i; int dir = +1; int pos = RIGHTEDGE; initscr(); clear(); while(1){ for (i=0; i<5; i++){ move(ROW+i, pos); addstr(fig[i]); } move(LINES-1, COLS-1); refresh(); sleep(1); for( i=0; i<5; i++){ move(ROW+i, pos); addstr(blank); } pos -= dir; } }
% cc mona.c -lcurses -o mona.c
とコンパイルして、
% ./mona
で動作する。いまのところ、端末画面上で絵が右から左へ移動していくだけ。
- 今後の方針
- 移動速度を速くする。sleep(1)では遅い(7.5節以降を参考に)。
- 画面の端まで到達した際の処理を入れる。