各位看官們,大家好,今天是平安夜,首先祝各位看官聖誕節快樂,同時也感謝各位看官對本章回體小說的關注。還是那句老話,閒話休提,言歸正轉。讓我們一起talk C栗子吧!
我們今天說的例子和前面的內容沒有聯系,我們今天准備做一個簡單的聖誕樹,就算是我給大家的聖誕禮物吧。我們制作聖誕樹時使用了curses庫,這樣方便在窗口中描繪簡單的圖形。curses庫是Linux上一個簡單的圖形庫,我在其它的博客中簡單介紹過curses庫,如果有哪位看官對curses庫不了解,可以點擊這裡進行查看,以便對curses庫有個簡單的了解。
下面是制作聖誕樹的步驟,請大家參考:
1.初始化屏幕; 2.描繪聖誕樹的最頂層; 3.接著描繪下一層,該層的坐標比上一層的大一些; 4.重復上一個步驟,我們描繪了6層。層數越多,聖誕樹越大,大家可以依據自己需要,定制層數; 5.描繪樹干; 6.刷新屏幕; 7.釋放屏幕相關的資源。下面是我們寫的代碼,請大家參考:
void show()
{
initscr();
move(1,10); // show the top layer
printw("%c",'/');
move(1,11);
printw("%c",'\\');
move(2,9); // show the next layer
printw("%c",'/');
move(2,12);
printw("%c",'\\');
move(3,8); // show the next layer
printw("%c",'/');
move(3,13);
printw("%c",'\\');
move(3,7); // put the gift on the tree
printw("%c",'@');
move(3,14);
printw("%c",'*');
move(4,7); // show the next layer
printw("%c",'/');
move(4,14);
printw("%c",'\\');
move(4,6); // put the gift on the tree
printw("%c",'*');
move(4,15);
printw("%c",'@');
move(5,6); // show the next layer
printw("%c",'/');
move(5,15);
printw("%c",'\\');
move(6,5); // show the bottom layer
printw("%c",'/');
move(6,16);
printw("%c",'\\');
mvvline(5,10,'|',5);
move(20,20);
refresh();
sleep(1);
endwin();
}
看官們,我們對上面代碼中的一些細節進行說明。
我們描繪聖誕樹每層的內容時,先使用move把光標移動到相應的位置,然後在該位置使用printw函數輸出一個符號來表示聖誕樹的枝干。我們同時使用該方法在聖誕樹上添加了一些“禮物”,代碼中使用符號“@”和“*”表示。
描繪聖誕樹的樹干時使用了mvvline函數直接畫出樹干。
整個聖誕樹呈金字塔形狀,因此,大家可以計算出其中的坐標來,我就不詳細說明了。
下面是程序的運行結果,請大家參考。(這是個靜態圖形,大家可以運行程序,聖誕樹會閃動起來)
為了創建閃動的效果,我們使用偏移的方法描繪聖誕樹<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqGjz8LD5srHvt/M5bXEtPrC66O6PC9wPg0KPHByZSBjbGFzcz0="brush:java;">
在代碼中show先描繪一次聖誕樹,然後把聖誕樹的坐標整體向右偏移一位,使用print再次描繪聖誕樹。如此反復,就實現了閃動的效果。 看官們,正文中就不寫代碼了,詳細的代碼放到了我的資源中,大家可以點擊這裡下載使用。編譯程序的時候需要使用使用l參數鏈接curses庫,具體命令是: 各位看官,關於簡單聖誕樹的例子咱們就說到這裡,欲知後面還有什麼例子,且聽下回分解 。最後,再次祝大家聖誕節快樂! for(i=0; i<9; ++i)
{
if(i%2 == 0)
show();
else
print();
}
gcc ChristmasTree.c -o s -lcurses