| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7933 人关注过本帖
标题:一个下雪小程序,刚刚学写的
取消只看楼主 加入收藏
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
结帖率:96.15%
收藏
已结贴  问题点数:20 回复次数:11 
一个下雪小程序,刚刚学写的
snow.zip (86.99 KB)

某人让我发的,不过源码要等一会发,感觉有BUG,一会儿吃完饭再改改,御坂御坂说道

------
补充:修改了一下,不然没有VC2005的人运行不了


-----------------
再补充:
这里是新版本的程序:
snow.zip (86.98 KB)

以下是源代码:

程序代码:
#define _GRAPHICS_LIB_LINK_ 1
#include"yzfy_graphics.h"
#include"yzfy_dos.h"

#define MAXSNOW 500
struct SNOW
{
    int n;
    int lx, ly;
    int color;
    double x;
    double y;
    double cx;
    double dcx;
    double vx;
    double vy;
    double k;
};

const int sc_width = 640;
const int sc_height = 480;

void InitSnow(struct SNOW *snow)
{
    double vx = 0.5;
    double fvx = 0.5;
    double vy = (double)random(1000) / 1000;
    snow->x = random(sc_width);
    snow->y = 0;
    snow->cx = snow->x;
    snow->dcx = (double)random(1000) / 1000 * 2 * vx - vx;
    snow->k = (double)random(1000) / 1000 * -0.001;
    snow->vx = (double)random(1000) / 1000 * 2 * fvx - fvx;
    snow->vy = vy * 2.0 + 0.5;

    snow->color = (int)(192 * vy) + 64;
    snow->color = (((snow->color<<8) | snow->color) << 8) | snow->color;
}

void MoveSnow(struct SNOW *snow, double dt)
{
    double d = dt * 60 / 1000;

    putpixel(snow->lx, snow->ly, 0);

    snow->x += snow->dcx * d;
    snow->cx += snow->dcx * d;
    snow->y += snow->vy * d;

    if (snow->y > sc_height)
        InitSnow(snow);

    snow->lx = (int)snow->x;
    snow->ly = (int)snow->y;
    putpixel(snow->lx, snow->ly, snow->color);
}

int __stdcall OnUpdate(void* param, float ms)
{
    struct SNOW* snow = (struct SNOW *)param;
    int i;
    for (i = 1; i <= snow->n; i++)
    {
        snow[i].vx += (snow[i].x - snow[i].cx) * snow[i].k * 0.99;
        snow[i].x += snow[i].vx;
    }
    return 0;
}
int __stdcall OnRender(void* param, float ms)
{
    int i;
    for (i = 1; i <= ((struct SNOW*)param)->n; i++)
        MoveSnow((struct SNOW*)param+i, ms);
    return 0;
}

int main()
{
    {
        int g = TRUECOLORSIZE, m = sc_width | (sc_height << 16);
        initgraph(&g, &m, "Snow");
        randomize();
    }
    {
        struct SNOW snow[MAXSNOW+1];
        int i;
        snow[0].n = MAXSNOW;
        for (i = 1; i <= MAXSNOW; i++)
        {
            InitSnow(snow + i);
            snow[i].y = random(sc_height);
        }
        ege_gameloop(OnUpdate, snow, 60, OnRender, snow, 0);
    }

    closegraph();
    return 0;
}
至于代码所用到的库,请自己下载吧,御坂说

[ 本帖最后由 御坂美琴 于 2010-8-22 14:09 编辑 ]
搜索更多相关主题的帖子: 下雪 
2010-08-21 19:51
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
我用学姐的图形库写的,写的太乱了,代码还在修改中,御坂回答道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-21 21:15
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
qingmeisu200能不能发一下你的给大家看看呢?
源代码已发,写的不怎么样,水平有限,还是改了很多次的,御坂说

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-22 14:16
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
以下是引用BlueGuy在2010-8-22 21:11:15的发言:

给你一个弱弱的建议哦, 矛盾了好长时间不知道该不该发。
typedef struct SNOW
{
    ...;
}Snow;
这样每次会少打一个 struct 关键字,对于保护你的纤手有好处的。
这个建议我不接受,御坂回答道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-22 21:20
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
http://www.
在这里,支持bmp,jpg,gif等等,里面有更详细的说明,御坂介绍道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-22 22:03
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
28楼的明显是GDI而不是GDI+,我也试试用我的方法写一下你那个,御坂说

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-23 11:20
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
to szw982:
http://www.

to qingmeisu200
如果你把点的速度加快三倍,颜色改成固定,那图像不流畅的问题就会暴露的很明显了

御坂回复道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-23 11:41
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
to qingmeisu200
还有一点,如果把SIZE那个宏,改到2000,就已经卡的不行了,御坂提醒道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-23 12:32
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
是的,我发现同是画像素,效率的差别还不止一点点,御坂回答道

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-23 14:09
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
那个图形库,也是GDI写的,作者介绍是这样说的,御坂说

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-23 17:38
快速回复:一个下雪小程序,刚刚学写的
数据加载中...
 
   



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

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