以下是引用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 流#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的主人发给我的,你们试试吧
[ 本帖最后由 BlueGuy 于 2010-12-18 22:26 编辑 ]
我就是真命天子,顺我者生,逆我者死!