编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 雪花
共有回复1条  每页10条  第1页/共1页  首页  上页  下页  尾页
1
  · 雪花

用户:  明日科技
发帖:  417 篇
作品:  1 个
回复:  2 篇
技术分:  805 分
等级:  
注册:  2009-09-07 06:37:23



发表于:2010-06-11 09:02:16
          楼主

程实现模拟雪花自由下落的过程,并在屏幕中显示“HAPPY NEW YEAR”,要求字体在雪花下落的过程中不停的改变颜色。

l 雪花的绘制

在雪花绘制的过程中使用了line()函数及数学函数sincos,这里使用数学函数主要是来确定以(200200)为起点向外画直线所需的六个点的坐标。line()函数完成从(200200)分别到这六个点的连线。这样一个简单的雪花就化成了。

l 雪花的飘落过程

实例中雪花出现的位置及下落过程都是随机产生的,这样会使整个界面看起来错落有致,还有一点十分关键需要注意,就是在实现雪花下落的过程中要擦除雪花下落的痕迹,我们通常采用前面保存好的一块屏幕背景区域来擦除便可。

#include <stdlib.h>

#include <math.h>

#include <graphics.h>

int size, color = 1;

void *save1,  *save2;

void save();

void dsnow();

void font();

struct Snow

{

    int x;

    int y;

    int speed;

} snow[100];

void save()

{

    int i, x, y;

    setcolor(WHITE);

    for (i = 1; i <= 6; i++)

    {

        x = 200+5 * sin(i *3.1415926 / 3);

        y = 200-5 * cos(i *3.1415926 / 3);

        line(200, 200, x, y);

    }

    size = imagesize(195, 195, 205, 205);

    save1 = malloc(size);

    save2 = malloc(size);

    getimage(195, 195, 205, 205, save1);

    getimage(100, 100, 110, 110, save2);

}

 

void font()

{

    setcolor(color);

    settextstyle(0, 0, 4);

    outtextxy(80, 200, "HAPPPY NEW YEAR");

    color++;

    if (color > 15)

        color =1;

}

自定义dsnow()函数用来实现雪花飘落的过程。代码如下:

void dsnow()

{

    int a[66], i, num = 0;

    randomize();

    for (i = 0; i < 66; i++)

        a[i] = (i - 2) *10;

    cleardevice();

    while (!kbhit())

    {

        font();

        if (num != 100)

        {

            snow[num].speed = 2+random(10);

            i = random(66);

            snow[num].x = a[i];

            snow[num].y = 0;

        }

        for (i = 0; i < num; i++)

            putimage(snow[i].x, snow[i].y, save2, COPY_PUT);

        font();

        if (num != 100)

            num++;

        for (i = 0; i < num; i++)

        {

            snow[i].y += snow[i].speed;

            putimage(snow[i].x, snow[i].y, save1, COPY_PUT);

            if (snow[i].y > 500)

                snow[i].y = 0;

        }

    }

}

main()

{

    int gdriver = DETECT, gmode;

    initgraph(&gdriver, &gmode, "");

    save();

    dsnow();

    getch();

    closegraph();

}

 

本帖赏分:0 分   回复数:1 篇     
修改   删除   引用   回复
  · 关于雪花程序的回复。

用户:  hitmanx
发帖:  0 篇
作品:  0 个
回复:  1 篇
技术分:  32 分
等级:  学员
注册:  2011-06-08 07:52:57



回复于:2011-06-08 08:48:05
         1 楼
你忽悠人呢把!graphics.h根本就是TC上的图形库类,不能用在任何的另外平台。我嘞个去!!!!
修改   删除   引用
共有回复1条  每页10条  第1页/共1页  首页  上页  下页  尾页
1
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页