各位讀者好,今天是平安夜,首先祝大家聖誕節快樂!感謝各位對「一起talk C栗子」系列的持續關注。閒話少說,今天送上一份特別的聖誕禮物——用C語言繪製一棵會閃爍的聖誕樹。
本例獨立於前文內容,使用curses庫在終端窗口繪製簡單圖形。curses是Linux下常用的終端圖形庫,若不熟悉可先參考博主其他文章簡介。
initscr())refresh())endwin())void show() {
initscr();
move(1,10); printw("%c", '/');
move(1,11); printw("%c", '\\');
move(2,9); printw("%c", '/');
move(2,12); printw("%c", '\\');
move(3,8); printw("%c", '/');
move(3,13); printw("%c", '\\');
move(3,7); printw("%c", '@'); // 掛飾
move(3,14); printw("%c", '*'); // 掛飾
move(4,7); printw("%c", '/');
move(4,14); printw("%c", '\\');
move(4,6); printw("%c", '*');
move(4,15); printw("%c", '@');
move(5,6); printw("%c", '/');
move(5,15); printw("%c", '\\');
move(6,5); printw("%c", '/');
move(6,16); printw("%c", '\\');
mvvline(5,10, '|', 5); // 樹幹
move(20,20);
refresh();
sleep(1);
endwin();
}
move(y,x)移動光標,再用printw輸出字符構成樹枝mvvline直接畫垂直線為了創造閃爍效果,採用偏移重繪法:
for(i=0; i<9; ++i) {
if(i%2 == 0) show();
else print(); // print() 為將整棵樹向右偏移一位後重繪
}
交替調用show()與偏移後的print(),即可產生閃動視覺效果。
需鏈接curses庫:
gcc ChristmasTree.c -o christmas_tree -lcurses
完整代碼已上傳資源區供下載。再次祝大家聖誕快樂,期待下回分解!