【EasyX】使用C/C++实现 流星雨效果(配上详细注释解释)

news2024/11/15 15:25:50

🎊专栏【​​​​​​​EasyX】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【Love Story】
🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰

文章目录

  • 🍔效果
  • 🌺过程
    • ⭐星星
    • ✨流星
  • 🏳️‍🌈添加图片
  • 🎄代码
  • 🎁资料
    • 🏳️‍🌈基础知识
    • 🏳️‍🌈图片资源

文末有网盘资料哦,需要的小伙伴请自取

某一天下午忙完学校的事后,本来准备复习近代史的,但是根本复习不下去🤖,然后想了想,一时半会也比较迷茫,就想到了前几天想着把这个流星雨给记录下来的想法

🍔效果

在这里插入图片描述

🌺过程

大概就分为以下几步

⭐星星

  • 初始化星星
  • 绘制星星
  • 移动星星

✨流星

  • 初始化流星
  • 绘制流星
  • 移动流星

🏳️‍🌈添加图片

打开文件夹
在这里插入图片描述

在这里插入图片描述

把图片粘贴进去即可

在这里插入图片描述

🎄代码

#include<easyx.h>
#include<stdio.h>
#include<time.h>
#include<conio.h>

#define STAR 500
#define METEOR 20
struct Star
{
	int x;
	int y;
	int speed;
	int r;
	COLORREF color; //颜色
};
struct Star star[STAR];

struct Meteor
{
	int x;
	int y;
	int speed;
};
struct Meteor meteor[METEOR];

void initStar(int i)
{
	star[i].x = rand() % getwidth();
	star[i].y = rand() % getheight();
	star[i].r = rand() % 3 + 1;
	star[i].speed = rand() % 5;
	star[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
}
//绘制星星
void drawStar()
{
	for (size_t i = 0; i < STAR; i++)
	{
		//putpixel(star[i].x, star[i].y, star[i].color);
		setfillcolor(star[i].color);
		solidcircle(star[i].x, star[i].y, star[i].r);
	}
}

//移动星星
void moveStar()
{
	for (size_t i = 0; i < STAR; i++)
	{
		star[i].x += star[i].speed;
		if (star[i].x > getwidth())
		{
			star[i].x = 0;
		}
	}
}

//流星
IMAGE img[2];
void loadImage()
{
	loadimage(img, _T("img1.png", 500, 500));//50代表图片缩放后的大小
	loadimage(img + 1, _T("img2.png", 50, 50));

}

//初始化流星
void initMeteor(int i)
{
	meteor[i].x = rand() % (2 * getwidth()) - getwidth();
	meteor[i].y = 20 - 200;
	meteor[i].speed = rand() % 15 + 1;
}


//绘制流星
void drawMeteor()
{
	for (size_t i = 0; i < METEOR; i++)
	{
		putimage(meteor[i].x, meteor[i].y, img + rand() % 2, SRCPAINT);//加上SRCPAINT,防止流星遮挡星星
	}
}

//移动流星
void moveMeteor()
{
	for (size_t i = 0; i < METEOR; i++)
	{
		meteor[i].x += meteor[i].speed;
		meteor[i].y += meteor[i].speed;
		if (meteor[i].x >= getwidth() || meteor[i].y >= getheight())
		{
			initMeteor(i);
		}
	}
}
int main()
{

	initgraph(1200, 1100);
	cleardevice();
	//setbkcolor(RGB(255,12,16));
	setbkcolor(RGB(6, 5, 5));

	IMAGE bj;

	for (size_t i = 0; i < STAR; i++)
	{
		initStar(i);
	}
	for (size_t i = 0; i < METEOR; i++)
	{
		initMeteor(i);
	}
	moveStar();

	//防止频闪
	BeginBatchDraw();
	while (1)
	{

		loadImage();
		cleardevice();
		putimage(0, 0, &bj);

		drawStar();
		moveStar();

		drawMeteor();
		moveMeteor();

		Sleep(1);
		FlushBatchDraw();

	}
	EndBatchDraw();

	getchar();
	return 0;
}

🎁资料

🏳️‍🌈基础知识

如果有小伙伴看上面的代码有一定的问题,可以去查看我的EasyX专栏,里面总结了一些基础知识
小吉的EasyX专栏

🏳️‍🌈图片资源

制作这个效果需要有图片资源,图片就放在 夸克网盘 里面了,需要的同学请自取,不需要提取码

我用夸克网盘分享了「流星雨图片」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:夸克网盘分享的图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RNN LSTM

参考资料&#xff1a; 《机器学习2022》李宏毅史上最详细循环神经网络讲解&#xff08;RNN/LSTM/GRU&#xff09; - 知乎 (zhihu.com) LSTM如何来避免梯度弥散和梯度爆炸&#xff1f; - 知乎 (zhihu.com) 1 RNN 的结构 首先考虑这样一个 slot filling 问题&#xff1a; 注意…

云解析DNS

云解析过程&#xff1a; DNS查询的结果通常会在本地域名服务器中进行缓存&#xff0c;如果本地域名服务器中有缓存的情况下&#xff0c;则会跳过如下DNS查询步骤&#xff0c;很快返回解析结果。下面的示例则概述了本地域名服务器没有缓存的情况下&#xff0c;DNS查询所需的8个步…

电路的组成和连接方式-通路、开路、短路

电路是电子设备中最基本的组成部分之一&#xff0c;它由各种电子元件组成&#xff0c;并通过连接方式构建成不同的电路结构。在电路设计和维护中&#xff0c;通路、开路和短路是常见的概念&#xff0c;它们分别代表了电路中不同的连接状态和故障情况。 工具认识&#xff1a; …

万能的微信小程序个人主页:商城系统个人主页、外卖系统个人主页、购票系统个人主页等等【全部源代码分享+页面效果展示+直接复制粘贴编译即可】

前言 以下给出来四个常见的小程序个人主页,分别是商城系统个人主页,外卖系统个人主页,挂号系统个人主页,电影购票系统个人主页。包括完整的页面布局代码,完整的样式代码。使用的时候,只需要将页面代码和样式代码复制到自己项目对应的页面即可。而且可以根据已有代码只需稍…

【机器学习】准确率、精确度、召回率和 F1 定义

一、说明 数据科学家选择目标变量后 - 例如他们希望预测电子表格中的“列”&#xff0c;并完成了转换数据和构建模型的先决条件&#xff0c;最后步骤之一是评估模型的性能。 二、混淆矩阵的模型 2.1 混淆矩阵 选择性能指标通常取决于要解决的业务问题。假设您的数据集中有 10…

电子时钟制作(瑞萨RA)(2)----使用串口进行程序烧写

概述 本篇文章主要介绍如何使用UART串口烧写程序到瑞萨芯片&#xff0c;并以实际项目进行演示。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是芯片型号R7FA2E1A72DFL的开发板&#xff1a; 视频教程 https://www.bilibili.com/video/BV1kX4y1v7tL/ 电子时钟制…

Symbol.for()

示例&#xff1a;Symbol() 和 Symbol.for(‘ ’)的区别 Symbol.for("foo"); // 创建一个 symbol 并放入 symbol 注册表中&#xff0c;键为 "foo" Symbol.for("foo"); // 从 symbol 注册表中读取键为"foo"的 symbolSymbol.for("b…

常见面试题之线程池

1. 说一下线程池的核心参数&#xff08;线程池的执行原理知道嘛&#xff09;&#xff1f; 线程池核心参数主要参考ThreadPoolExecutor这个类的7个参数的构造函数 corePoolSize 核心线程数目 maximumPoolSize 最大线程数目 (核心线程救急线程的最大数目) keepAliveTime 生存…

蘑菇车联用城市级落地讲述自动驾驶新故事

作者 | 魏启扬 来源 | 洞见新研社 “如果不能实现自动驾驶&#xff0c;特斯拉将一文不值”。 这是马斯克在接受媒体采访时的公开发言&#xff0c;这句话的语境是&#xff0c;特斯拉是自动驾驶坚实的拥护者&#xff0c;且一直在付诸行动。 可是特斯拉渐进式的单车智能路线&am…

【游戏逆向】探索可靠的线程检查方法

一、关键的线程检查 在对抗外挂和木马的方案中&#xff0c;不可能将所有的检查操作放在主线程中&#xff0c;因此&#xff0c;在方案中总有一个扫描线程或者环境检查线程必须保持工作&#xff0c;而它们也就成了外挂和木马的重要攻击目标&#xff0c;外挂和木马只要搞定了它们…

【高可用架构】聊聊故障和高可用架构设计

在架构设计中&#xff0c;高性能、高可用、可拓展以及安全等等有多种维度去判断架构的设计纬度&#xff0c;但是一般来说我们需要考虑具体的业务场景&#xff0c;去判断采用那种合适的架构方案&#xff0c;但是对于大多数的设计来说&#xff0c;都需要满足高性能、高可用。所以…

专科学历,有机会转行程序员吗?

你好&#xff0c;我是程序员晚枫&#xff0c;昨晚又1对1沟通了一位想转行程序员的朋友。 这位朋友是专科毕业&#xff0c;在电子厂干了2年多&#xff0c;感觉看不到希望&#xff0c;来找我咨询一下有没有转行程序员的可能性 学习计划。 我觉得他的情况和提问很有代表性&…

软件测试综述

概述 在不短不长的7年多研发生涯中&#xff0c;听过无数个软件测试概念&#xff1a;单元测试、功能测试、白盒测试、黑盒测试、自动化测试、契约测试、基准测试、性能测试、集成测试、渗透测试、接口测试、UI测试、端到端测试、E2E测试…… 恰逢在准备系统架构设计师软考高级…

我的创作纪念日-256天

机缘&#xff1a; 没有在csdn进行写作&#xff0c;我就不会认识更多对应领域的博主&#xff0c;并且也认识到了很多不同领域的博主这令我感到非常荣幸&#xff0c;能够加入到csdn。在分享交流的过程种我获得了&#xff1a; 实战项目中的经验分享日常学习过程中的记录通过文章进…

Ubuntu20.04安装arm-linux-gcc 4.3.2 (提供安装包)

⁡​​⁢‬‌​⁢‌⁡‍⁣⁤‬‌⁡⁢⁢‍⁡⁤​⁣‬‌&#xfeff;‬‍⁤​⁤‌⁣⁤​&#xfeff;⁤⁢‍⁢⁤‬⁣‬​‌&#xfeff;&#xfeff;Ubuntu20.04安装arm-linux-gcc 4.3.2 - 飞书云文档 (feishu.cn) CSDN编辑太丑了 转移阵地了

Google Colab:云端的Python编程神器

Google Colab&#xff0c;全名Google Colaboratory&#xff0c;是Google Research团队开发的一款云端编程工具&#xff0c;它允许任何人通过浏览器编写和执行Python代码。Colab尤其适合机器学习、数据分析和教育目的。它是一种托管式Jupyter笔记本服务&#xff0c;用户无需设置…

SQL-每日一题【185.部门工资前三高的员工】

题目 表: Employee 表: Department 公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的 高收入者 是指一个员工的工资在该部门的 不同 工资中 排名前三 。 编写一个SQL查询&#xff0c;找出每个部门中 收入高的员工 。 以 任意顺序 返回结果表。 查询结果格式如…

Python基础语法第二章、变量和运算符

目录 一、常量和表达式 二、变量和类型 2.1变量是什么 2.2变量的语法 2.2.1定义变量 2.2.2使用变量 2.3变量的类型 2.3.1整数 2.3.2浮点数(小数) 2.3.3字符串 2.3.4布尔 2.3.5其他 2.4动态类型 4.1为什么要有这么多类型? 2.4.2动态类型特性 三、注释 3.1注释…

IT人,别人公司与自家差距到底有多大?

年底&#xff0c;是IT人最心酸的时候。辛辛苦苦了一年&#xff0c;别人家的公司员工人手一台 iPhone14Pro&#xff0c;自家可能连个年会都不开&#xff01;想想就气人 不能笑饱就气饱&#xff0c;省下一顿当赚到 - 1 - 形象 别人公司的IT男帅气又有(发)型 然&#xff0c;我们…

7.3 SpringBoot整合MyBatis分页插件github.pageHelper:实现图书列表API

文章目录 前言一、自己实现分页第一步&#xff0c;count 查询 总记录数&#xff08;totalCount&#xff09;&#xff0c;计算总页数&#xff08;totalPages&#xff09;第二步&#xff0c;limit 查询 指定页数据 二、不考虑分页的查询图书列表MapperBookServiceImplBookListPar…