一起talk C栗子吧(第八十二回:C语言实例--简单圣诞树)


各位看官们,大家好,今天是平安夜,首先祝各位看官圣诞节快乐,同时也感谢各位看官对本章回体小说的关注。还是那句老话,闲话休提,言归正转。让我们一起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

各位看官,关于简单圣诞树的例子咱们就说到这里,欲知后面还有什么例子,且听下回分解 。最后,再次祝大家圣诞节快乐!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值