第1张

写在前面(必读)

         1.编译环境为:

                     Visual C++ 6.0Visual Studio 2010 ~ Visual Studio 2022 都可以使用。

        2.使用了“EasyX”图形库,务必安装才可以实现哦。

        (如果没有安装包,评论区留言备注发送哦)

代码实现
//导入头文件
#include
#include
#include 
#include 
#include
#define MAXSTAR 200	//宏定义常量,星星个数
#define WIDTH 700 //窗口宽度
#define HEIGHT 560 //窗口高度

//星星数据结构体
struct STAR{
	double	x;//x坐标
	int		y;//y坐标
	double	step;//移动速度
	int		color;//颜色
}star[MAXSTAR];

// 初始化星星数据
void InitStar(int i){
	star[i].x = 0;//x初始坐标为0
	star[i].y = rand() % 480;//随机产生y坐标
	star[i].step = (rand() % 5000) / 1000.0 + 1;
	star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5);// 速度越快,颜色越亮
	star[i].color = RGB(star[i].color, star[i].color, star[i].color);//设置颜色
}

// 移动星星
void MoveStar(int i){
	putpixel((int)star[i].x, star[i].y, 0);//擦掉原来的星星
	star[i].x += star[i].step;//获取位置
	if (star[i].x > WIDTH){
		InitStar(i);//越界后重新生成星星
	}
	putpixel((int)star[i].x, star[i].y, star[i].color);//绘画新星星
}

// 主函数
int main(){
	srand(time(NULL));//随机刷新
	initgraph(WIDTH, HEIGHT);//创建窗口
	//初始化
	for(int i = 0; i < MAXSTAR; i++){
		InitStar(i);
		star[i].x = rand() % WIDTH;
	}
	// 绘制星空,按任意键退出
	while(!_kbhit()){
		for(int i = 0; i < MAXSTAR; i++){
			MoveStar(i);
		}
		Sleep(20);
	}
	closegraph();//关闭窗口
	return 0;
}

运行结果

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/793861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存