| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4410 人关注过本帖
标题:发个网友做的动画
只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用li520rong在2010-11-21 01:55:22的发言:

#include
#include
#include

#define myrand(m) ((float)(rand() % 10000) * m / 10000.0f)

typedef struct
{
    float x, y;
    float vx, vy;
    int color;
}Point;

class AniObj
{
public:
    //初始化,设置坐标
    AniObj()
    {
        Init();
    }

    void Init()
    {
        n = 150;
        float x = myrand(600.0f) + 20.0f;
        float y = myrand(100.0f) + 100.0f;
        for (int i = 0; i < n; i++)
        {
            p.x = x;
            p.y = y;
            p.vx = 1.0f - myrand(2.0f);
            p.vy = 1.0f - myrand(2.0f);
            p.color = HSVtoRGB(myrand(360.0f), 1.0f, 1.0f);
        }
        color = HSVtoRGB(myrand(360.0f), 1.0f, 1.0f);
        start = rand() % 300;
        cnt = 0;
    }

    //更新位置等相关属性
    void updateobj()
    {
        if (cnt++ > start)
            for (int i = 0; i < n; i++)
            {
                p.vy += 0.01f;
                p.x += p.vx;
                p.y += p.vy;
            }
            if (cnt > start + 300) Init();
    }

    //根据属性值绘画
    void drawobj()
    {
        for (int i = 0; i < n; i++)
        {
            putpixel(p.x, p.y, color);
        }
    }

    //释放这个对象时调用
    ~AniObj()
    {
    }

private:
    Point p[200];
    int n;
    int color;
    int start;
    int cnt;
};


#define MAXOBJ 20

int main()
{
    initgraph(640, 480);
    srand((unsigned)time(NULL)); //初始化随机种子

    AniObj obj[MAXOBJ]; //定义对象数组
    int n;

    //为什么这里没有初始化?因为在类对象声明的时候就调用了构造函数初始化好了

    BeginBatchDraw();
    for ( ; kbhit() == 0; delay_fps(120) )
    {
        for (n = 0; n < MAXOBJ; ++n)
        {
            obj[n].updateobj(); //更新位置
        }

        imagefilter_blurring(NULL, 0x4F, 0x100);
        for (n = 0; n < MAXOBJ; ++n)
        {
            obj[n].drawobj(); //绘画
        }
    }
    EndBatchDraw();

    closegraph();
    return 0;
}
这是那个QQ的主人发给我的,你们试试吧
发现这代码写的还过的去 。/ 一般喜欢把域放在后面写的,都是 java 流

[ 本帖最后由 BlueGuy 于 2010-12-18 22:26 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-12-18 22:19
快速回复:发个网友做的动画
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057396 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved