各位看官们,大家好,今天是平安夜,首先祝各位看官圣诞节快乐,同时也感谢各位看官对本章回体小说的关注。还是那句老话,闲话休提,言归正转。让我们一起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函数直接画出树干。
整个圣诞树呈金字塔形状,因此,大家可以计算出其中的坐标来,我就不详细说明了。
下面是程序的运行结果,请大家参考。(这是个静态图形,大家可以运行程序,圣诞树会闪动起来)
为了创建闪动的效果,我们使用偏移的方法描绘圣诞树。下面是具体的代码:
for(i=0; i<9; ++i)
{
if(i%2 == 0)
show();
else
print();
}
在代码中show先描绘一次圣诞树,然后把圣诞树的坐标整体向右偏移一位,使用print再次描绘圣诞树。如此反复,就实现了闪动的效果。
看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击这里下载使用。编译程序的时候需要使用使用l参数链接curses库,具体命令是:
gcc ChristmasTree.c -o s -lcurses
各位看官,关于简单圣诞树的例子咱们就说到这里,欲知后面还有什么例子,且听下回分解 。最后,再次祝大家圣诞节快乐!