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

🎊专栏【​​​​​​​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.hqwc.cn/news/9685.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Webots介绍

Webots介绍 1 介绍1.1 概述1.2 应用1.3 入门要求1.4 技术支持1.5 仿真步骤世界&#xff08;webots定义&#xff09;控制器超级控制器 1.6 平台能力三维建模能力物理引擎外设支持 2 软件使用启动webots用户界面文件菜单编辑菜单查看菜单模拟菜单构建菜单叠加菜单工具菜单帮助菜单…

机器学习洞察 | JAX,机器学习领域的“新面孔”

在之前的《机器学习洞察》系列文章中&#xff0c;我们分别针对于多模态机器学习和分布式训练、无服务器推理进行了解读&#xff0c;本文将为您重点介绍 JAX 的发展并剖析其演变和动机。下面&#xff0c;就让我们来认识一下 JAX 这一新崛起的深度学习框架—— 亚马逊云科技开发…

react生命周期

react生命周期 16.3版本之前 挂载阶段&#xff1a; constructor&#xff1a;组件的构造函数&#xff08;constuctor&#xff09;部分&#xff0c;继承React Component&#xff0c;在constructor中通过super(props)调用父类React Component的构造函数&#xff0c;才拥有了之后的…

C语言程序环境和预处理

本章主要以图片和文字的形式给大家讲解 程序的翻译环境和程序的执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码 2. 详解编译…

python 中禁用 SettingWithCopyWarning

最近代码中出现了这个warn&#xff0c;但是我确信我已经把所有的df赋值都改成loc了&#xff0c;依旧会出现&#xff0c;只有把这个warn禁了。 import pandas as pd import warnings# 禁用 SettingWithCopyWarning 警告 warnings.filterwarnings("ignore", categorypd…

【Kafka】Kafka基础操作笔记

【Kafka】Kafka基础操作笔记 文章目录 【Kafka】Kafka基础操作笔记1. 两种模式1.1 点对点模式1.2 发布/订阅模式 2. 基础架构3. Topic命令行操作3.1 查看 Topic 操作3.2 创建 Topic3.3 查看所有 Topic3.4 查看 Topic 的详情3.5 修改分区数3.6 删除 Topic 1. 两种模式 Kafka作为…

K8S应用生命周期管理

K8S应用生命周期管理. 1 应用周期管理1.1 资源对象1.1.1 基础知识1.1.2 资源属性 1.2 Pod基础1.2.1 Pod概述1.2.2 简单实践1.2.3 流程解读1.2.4 应用解析1.2.5 初始化容器1.2.6 Sidecar实践1.2.7 静态POD实践 1.3 Pod进阶1.3.1 Pod探测机制1.3.2 命令探测1.3.3 TCP探测1.3.4 HT…

服务无法注册进Eureka

相同的配置&#xff0c;在demo里能注册&#xff0c;在自己项目的无法注册&#xff0c;眼睛都快盯出老花眼了&#xff0c;还是不行&#xff0c;果然出现的问题只有在发现问题以后才觉得简单&#xff08;虽然确实是小问题&#xff0c;但是排查了一整天&#xff0c;值得记录一下&a…

3-Spring cloud之搭建Ribbon负载均衡——服务器上实操(上)

3-Spring cloud之搭建Ribbon负载均衡——服务器上实操&#xff08;上&#xff09; 1. 前言2. ribbon整合eureka入门2.1 修改相关配置2.1.1 修改服务消费者pom&#xff0c;引入ribbon相关依赖2.1.2 修改服务消费者yml&#xff0c;将客户端注册进eureka服务列表内2.1.3 修改配置类…

用户与组管理介绍

文章目录 一、服务器系统版本介绍二、用户管理1. 用户概述2. 内置账户3. 配置文件4. 用户管理命令 三、组管理1. 组概述2. 内置组&#xff08;系统自带的组&#xff09;3. 组管理命令 一、服务器系统版本介绍 Windows服务器系统&#xff1a;win2000、win2003、win2008、win2012…

charles 如何获取电脑端微信小程序接口

安装证书 设置代理端口 即可抓取美团酒店小程序的数据 从charles 可以抓取出header 请求&#xff0c;没有所谓的通过遍历循环能简单的得到数据&#xff0c;请求包含加密信息 随便改下数据就是 所以如果要得到这些数据&#xff0c;还非得通过小程序模拟人滑动获取数据&…

<QT开发> QT开发工具-之-QT应用程序打包

&#xff1c;QT开发&#xff1e; QT开发工具-之-QT应用程序打包 一 前言 笔者为什么会写这篇文章呢&#xff1f;这是因为&#xff0c;笔者使用windows QT开发了一个测试工具。目的是通过TCP/IP测试其它应用程序。首先这个QT程序是笔者自己开发的&#xff0c;所以笔者的电脑当…