#包含 <习语言系统.接口>
#定义 宏_流星数量 100
#定义 宏_星星数量 200
类型定义 结构类型 星星结构
{
整数类型 x;
整数类型 y;
整数类型 大小;
整数类型 速度;
颜色类型 颜色;
};
类型定义 结构类型 流星结构
{
整数类型 x;
整数类型 y;
整数类型 速度;
};
星星结构 星星[宏_星星数量];
流星结构 流星[宏_流星数量];
无返回值 初始化星星(整数类型 i)
{
星星[i].x = 取随机数() % 图形获取显示器宽();
星星[i].y = 取随机数() % 图形获取显示器高();
星星[i].大小 = 取随机数() % 3 + 1;
星星[i].速度 = 取随机数() % 2;
星星[i].颜色 = 红绿蓝(取随机数() % 256, 取随机数() % 256, 取随机数() % 256);
}
无返回值 初始化流星(整数类型 i)
{
流星[i].x = 取随机数() % (2 * 图形获取显示器宽()) - 图形获取显示器宽();
流星[i].y = 20 - 200;
流星[i].速度 = 取随机数() % 10 + 1;
}
无返回值 绘制星星(无参数)
{
步进循环(长度类型 i = 0; i < 宏_星星数量; i++)
{
图形设置画刷色(星星[i].颜色);
图形画圆形(星星[i].x, 星星[i].y, 星星[i].大小);
}
}
无返回值 绘制流星(无参数)
{
步进循环 (整数类型 i = 0; i < 宏_流星数量; i++)
{
图形画点( 流星[i].x, 流星[i].y, YS白色);
}
}
无返回值 移动星星(无参数)
{
步进循环(长度类型 i = 0; i < 宏_星星数量; i++)
{
星星[i].x += 星星[i].速度;
如果(星星[i].x > 图形获取显示器宽())
{
星星[i].x = 0;
}
}
}
无返回值 移动流星(无参数)
{
步进循环(长度类型 i = 0; i < 宏_流星数量; i++)
{
流星[i].x += 流星[i].速度;
流星[i].y += 流星[i].速度;
如果(流星[i].x >= 图形获取显示器宽() || 流星[i].y >= 图形获取显示器高() )
{
初始化流星(i);
}
}
}
整数类型 主函数(整数类型 参数个数, 字符串类型 参数[])
{
图形初始化显示器("流星雨 作者 泽宇",1366, 768, 零地址, 显示器属性_无标题无边框, 零地址);
图形打开显示器(0);
步进循环 (长度类型 i = 0; i < 宏_星星数量; i++)
{
初始化星星(i);
}
步进循环 (整数类型 i = 0; i < 宏_流星数量; i++)
{
初始化流星(i);
}
图形设置定时键间隔(10);
重复
{
设置当前窗口背景色(YS黑色);
图形清屏();
绘制星星();
移动星星();
绘制流星();
移动流星();
图形刷新显示();
}直到(获取按键()等于 宏_退出); //按 ESC 键退出
图形结束();
返回 0
}
/*
如果想要换成彗星图像可以复制下面的整条语句
图形显示透明位图(‘文件’, "D:\\习语言练习\\流星雨\\流星.bmp", 流星[i].x, 流星[i].y, 0, 0, 0,0,0);
复制上面的这条语句到"绘制流星"这个函数替换"图形画点".
图片的默认路径是D:\\习语言练习\\流星雨\\流星.bmp,图片背景是必须是黑色.
*/