当前位置: 首页 > news >正文

C/C++大雪纷飞代码

图片

目录

写在前面

C语言简介

EasyX简介

大雪纷飞

运行结果

写在后面


写在前面

本期博主给大家带来了C/C++实现的大雪纷飞代码,一起来看看吧!

系列推荐

序号目录直达链接
1爱心代码https://want595.blog.csdn.net/article/details/136360684
2李峋同款跳动的爱心https://want595.blog.csdn.net/article/details/139722249
3满屏飘字代码https://want595.blog.csdn.net/article/details/136342476
4大雪纷飞代码https://want595.blog.csdn.net/article/details/140735166
5新春烟花代码
6黑客帝国字母雨https://want595.blog.csdn.net/article/details/139923742
7樱花树https://want595.blog.csdn.net/article/details/140690893

C语言简介

C语言是一种通用的高级编程语言,由美国贝尔实验室的Dennis Ritchie在20世纪70年代开发的。它是一种面向过程的结构化编程语言,被广泛应用于各种领域,尤其在操作系统、嵌入式系统、网络编程等方面具有重要地位。

C语言的设计目标是提供一种简单、高效、可移植的编程语言,使程序员可以通过简洁的语法和丰富的库函数来实现复杂的计算任务。C语言的语法规则相对简单,仅有几十个关键字和一些基本的语法结构,如循环、条件判断等。这使得初学者可以迅速上手,同时也方便了程序的阅读和维护。

C语言具有高性能和低级别的特点,可以方便地访问计算机的底层硬件资源。它提供了丰富的数据类型,如整型、浮点型、字符型等,以及数组、结构体、指针等高级数据结构,这使得程序员可以灵活地处理各种数据类型和数据结构。

C语言还提供了强大的库函数支持,如输入输出函数、字符串处理函数、数学函数等,这些函数可以帮助程序员更方便地进行输入输出、字符串操作、数学计算等操作。

C语言的可移植性也是其重要的特点之一,它的语法规则和标准库函数在各种计算机平台上都得到了广泛的支持,这使得使用C语言开发的程序可以很容易地在不同的操作系统和平台上移植和运行。

总之,C语言是一种功能强大、灵活、高效的编程语言,被广泛应用于各类软件开发和系统编程中,是学习编程的重要基础。

EasyX简介

EasyX是一个基于Windows GDI(图形设备接口)的C++图形库。它为C++程序员提供了一个易于使用且功能强大的图形编程接口,可以在Windows操作系统下创建各种图形界面应用程序。EasyX提供了丰富的绘图函数,可以实现图形绘制、文本输出、图像处理等功能,开发者可以使用它来实现各种有趣的图形应用程序,比如游戏、画图等。

EasyX的最大特点是其易用性,它基于简单易懂的GDI接口封装了一套易于学习和使用的C++接口。EasyX支持众多的图形绘制函数,比如直线、矩形、椭圆、圆弧等,再加上丰富的颜色、字体、图片等参数设置,可以轻松实现各种复杂的图形绘制。

除此之外,EasyX还提供了一些实用的辅助功能,比如键盘输入、鼠标操作等。开发者可以使用这些辅助功能来实现用户交互、游戏逻辑等功能,使得开发过程更加简单快捷。

EasyX适用于Windows操作系统,并且可以兼容多个版本的VC++编译器。EasyX不仅支持多种语言的编程,比如C++、C#、Python等,而且还提供了详细的开发文档和示例代码,方便开发者使用和学习。

总之,EasyX是一款易学易用且功能强大的图形编程库,它可以帮助开发者快速创建各种有趣的图形应用程序,在Windows操作系统上实现卓越的用户体验。

大雪纷飞

完整程序

#include <graphics.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <vector>
using namespace std;
#define MAXSnow 1314  // 设置雪花总数
struct Snow
{double x;    // 雪花横坐标int y;          // 雪花纵坐标int r;        // 雪花的大小double  speed;  // 雪花下落速度int   color;      // 雪花的颜色
};
Snow snow[MAXSnow]; // 保存所有雪花
// 初始化雪花
void InitSnow(int i, int width, int height)
{snow[i].x = rand() % width;snow[i].y = rand() % height - height;snow[i].r = rand() % 4 + 1;snow[i].speed = (rand() % 3333) / 1000.0 + 1;snow[i].color = (int)(255);  // 设置雪花颜色snow[i].color = RGB(snow[i].color, snow[i].color, snow[i].color);
}
// 雪花的下落函数
void MoveSnow(int i, int width, int height)
{setlinecolor(RGB(0, 0, 0));setfillcolor(RGB(0, 0, 0));// 删除原来的雪花fillcircle((int)snow[i].x, snow[i].y, snow[i].r);// 计算雪花新位置snow[i].y += snow[i].speed;if (snow[i].y > height)  InitSnow(i, width, height);// 画新雪花setfillcolor(snow[i].color);setlinecolor(snow[i].color);fillcircle((int)snow[i].x, snow[i].y, snow[i].r);
}
// 主函数
int main()
{srand((unsigned)time(NULL));// 设置随机种子int ScreenWidth = GetSystemMetrics(SM_CXSCREEN);int ScreenHeight = GetSystemMetrics(SM_CYSCREEN);initgraph(ScreenWidth, ScreenHeight);// 创建绘图窗口HWND hwnd = GetHWnd(); // 获取绘图窗口句柄int x = 0; // 窗口左上角横坐标int y = 0; // 窗口左上角纵坐标SetWindowPos(hwnd, HWND_TOP, x, y, 0, 0, SWP_NOSIZE); // 设置窗口位置// 初始化所有雪花for (int i = 0; i < MAXSnow; i++){InitSnow(i, ScreenWidth, ScreenHeight);snow[i].x = rand() % ScreenWidth;}// 绘制雪花,按任意键退出while (!_kbhit()){for (int i = 0; i < MAXSnow; i++)MoveSnow(i, ScreenWidth, ScreenHeight);Sleep(0);}closegraph();// 关闭绘图窗口
}

程序分析

雪花结构体

  • 结构体定义:定义了一个名为 Snow 的结构体,用于描述每一片雪花的属性。属性包括雪花的横坐标 (x),纵坐标 (y),半径 (r),下落速度 (speed),以及颜色 (color)。
  • 数组:声明了一个 Snow 类型的数组 snow[MAXSnow],用于存储所有的雪花。

初始化雪花函数 InitSnow

  • 初始化位置:随机生成雪花的初始横坐标 x 和纵坐标 y,其中 x 是屏幕宽度范围内的随机数,y 是屏幕高度范围内的随机数减去屏幕高度,确保雪花从屏幕顶部开始下落。
  • 随机大小和速度:雪花的半径 r 是 1 到 4 的随机数,下落速度 speed 是 1 到 4.333 之间的随机数。
  • 颜色设定:雪花的颜色被设置为白色(RGB 值为 255, 255, 255)。

雪花移动函数 MoveSnow

  • 擦除旧雪花:使用黑色填充圆形来擦除当前雪花的位置。
  • 更新位置:更新雪花的 y 坐标,使其按照设定的速度下落。如果雪花的 y 坐标超过屏幕高度,则重新初始化雪花的位置。
  • 绘制新雪花:在新的位置绘制雪花。

主函数 main

  • 随机数种子:使用 srand((unsigned)time(NULL)) 设置随机数种子,以确保每次运行程序时,雪花的位置、大小和速度都是随机的。
  • 获取屏幕尺寸:使用 GetSystemMetrics(SM_CXSCREEN)GetSystemMetrics(SM_CYSCREEN) 获取屏幕的宽度和高度。
  • 初始化图形窗口:调用 initgraph 函数创建全屏图形窗口,并使用 SetWindowPos 设置窗口位置。
  • 初始化所有雪花:通过循环调用 InitSnow 函数来初始化每一片雪花。
  • 绘制和移动雪花:在一个无限循环中,通过调用 MoveSnow 函数来不断更新每片雪花的位置,并重绘屏幕上的雪花。_kbhit() 函数用于检测是否有键盘输入,如果有键盘输入则退出循环。
  • 关闭图形窗口:循环结束后调用 closegraph 函数关闭图形窗口。

总结

这段代码实现了一个简单的雪花飘落动画。它利用随机数生成雪花的初始位置、大小和下落速度,并在屏幕上模拟雪花下落的过程。每次重绘屏幕时,通过擦除旧的雪花并绘制新的雪花,实现了雪花的动态效果。程序通过检测键盘输入来结束动画并关闭窗口。

运行结果

图片

写在后面

我是一只有趣的兔子,感谢你的喜欢!

相关文章:

C/C++大雪纷飞代码

目录 写在前面 C语言简介 EasyX简介 大雪纷飞 运行结果 写在后面 写在前面 本期博主给大家带来了C/C实现的大雪纷飞代码&#xff0c;一起来看看吧&#xff01; 系列推荐 序号目录直达链接1爱心代码https://want595.blog.csdn.net/article/details/1363606842李峋同款跳…...

【linux】【设备树】具有 GPIO 控制器和连接器的硬件配置的备树(Device Tree)代码讲解

具有 GPIO 控制器和连接器的硬件配置的备树(Device Tree)代码讲解 背景 -学习Linux设备树 代码 soc {soc_gpio1: gpio-controller1 {#gpio-cells = <2>;};soc_gpio2: gpio-controller2 {#gpio-cells = <2>;}; };connector: connector {#gpio-cells = <2>…...

【2025留学】德国留学真的很难毕业吗?为什么大家不来德国留学?

大家好&#xff01;我是德国Viviane&#xff0c;一句话讲自己的背景&#xff1a;本科211&#xff0c;硕士在德国读的电子信息工程。 之前网上一句热梗&#xff1a;“德国留学三年将是你人生五年中最难忘的七年。”确实&#xff0c;德国大学的宽进严出机制&#xff0c;延毕、休…...

Apache Solr 最常用的命令

目录 一、Solr 安装与配置 1.1 下载与安装 1.2 启动与停止 二、Core 和 Collection 管理 2.1 创建与删除 2.2 核心操作 三、索引管理 3.1 添加与删除文档 3.2 批量操作 3.3 提交与优化 四、查询与检索 4.1 基本查询 4.2 高级查询 五、Schema 管理 5.1 字段管理 …...

经济下行,企业还在“裁员至上”?

最近小红书、B站崩溃&#xff0c;又延伸到某云服务厂商问题频发&#xff0c;让人忍不住戏谑&#xff1a;“这算不算裁员裁到大动脉&#xff1f;” 在阿道看来&#xff0c;各大企业的裁员动作&#xff0c;绕不开的依旧是“人月神话”&#xff1a;盲目加人带来的是成本的倍增和效…...

学习笔记之Java篇(0729)

p 数组 大纲知识点数组的概念数组的定义、四个特点数组的常见操作普通遍历、for-each遍历、java.util.Array类用法多维数组多维数组的内存结构、存储表格、Javabean和数组存储表格常见算法冒泡排序基础算法、冒泡排序优化算法、二分法查找&#xff08;折半查找&#xff09; 1、…...

吃肉的刷题记录4-基础知识-字符串

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 leetcode.186.反转字符串中的单词 leetcode.186.反转字符串中的单词 https://leetcode.cn/problems/reverse-words-in-a-string-ii/ 给你一个字符数组 s &#xf…...

人工智能与机器学习原理精解【7】

文章目录 凸优化基础理论加权正规方程线性回归模型加权最小二乘法加权正规方程注意使用Diagonal函数使用diagm函数总结 加权最小二乘法加权最小二乘法的定义加权最小二乘法的算法加权最小二乘法的计算加权最小二乘法的原理一、基本思想二、原理详解三、总结 加权最小二乘法的例…...

ResNet学习笔记

《Deep Residual Learning for Image Recongition》&#xff1a;用于图像分类的深度残差学习。 ResNet&#xff08;残差网络&#xff09;是在2015年由微软研究院的Kaiming He等人提出的&#xff0c;旨在解决深度神经网络训练过程中的梯度消失、梯度爆炸问题&#xff0c;并允许…...

使用chainlit快速构建类似OPEN AI一样的对话网页

快速开始 创建一个文件&#xff0c;例如“chainlit_chat” mkdir chainlit_chat进入 chainlit_chat文件夹下&#xff0c;执行命令创建python 虚拟环境空间(需要提前安装好python sdk。 Chainlit 需要python>3.8。,具体操作&#xff0c;由于文章长度问题就不在叙述&#xf…...

【根据字符出现频率排序】python刷题记录

R2-字符串算法 包哈希表的呀。 注意 class Solution:def frequencySort(self, s: str) -> str:dictdefaultdict(list)#字符串不能直接排序&#xff0c;需要转换为列表["a","b","c"]slist(s)for str in s:if not dict[str]:dict[str]1else:…...

活动报名小程序

#活动报名工具# # 活动报名小程序 ## 项目简介 一款通用的活动报名工具&#xff0c;包含活动展示&#xff0c;微信支付&#xff0c;订单管理&#xff0c;分享评价等功能。 品客聚精彩&#xff0c;有你才精彩&#xff01;不只有线下活动还可以进行线上裂变活动。 …...

unity基础问题

1.一个列表中的UI有放大效果&#xff0c;用什么实现&#xff1f; 缩放&#xff0c;Layout组件可以勾选使用子级缩放&#xff0c;这样缩放之后也能保持间距 2.UGUI事件传递机制的冒泡机制是怎样的 事件系统从内向外遍历UI层次结构&#xff0c;通知父级UI元素有关该事件的信息。类…...

RedHat Enterprise Linux 7 YUM源(本地/网络源)配置详解

目录 一、挂载 二、建立本地源 三、建立网络源 四、验证可行性 一、挂载 ——将光盘挂载到 /mnt 下 当/mnt中有如图内容时&#xff0c;即挂载成功 若挂载光驱/dev/sr0时报错&#xff1a;mount: no medium found on /dev/sr0 解决措施&#xff1a;查看该设备状态是否全部勾选…...

关于顺序表数组下标的一些关系梳理

...

VS C++ Project(项目)的工作目录设置

如果只是简单创建一个VS CProject或者MFC Project&#xff0c;可能很多时候&#xff0c;只关心将Project放在硬盘的那个位置&#xff0c;与Project目录相关的的其他问题&#xff0c;并不引人注意&#xff0c;我们也不是十分在意。有时我们不得不进行工作目录方面的设置&#xf…...

STM32自定义协议串口接收解析指令程序

1、在使用串口接收自定义协议指令时&#xff0c;需要串口解析收到的是什么指令&#xff0c;举例通信报文为 上位机->单片机 名称 长度 备注 帧头 1Byte 0x5A 0x5A 帧长度 1Byte 数据包的长度0x00-0xFF 数据包 命令字 1Byte 功能标识 数据 可以为空 校验 …...

STM32——GPIO(点亮LEDLED闪烁)

一、什么是GPIO&#xff1f; GPIO&#xff08;通用输入输出接口&#xff09;&#xff1a; 1.GPIO 功能概述 GPIO 是通用输入/输出&#xff08;General Purpose I/O&#xff09;的简称&#xff0c;既能当输入口使用&#xff0c;又能当输出口使用。端口&#xff0c;就是元器件…...

VulnHub靶机入门篇--kioptrix.level 3

1.环境准备 靶机&#xff1a;Kioptrix Level 3&#xff08;Nat模式&#xff09; 下载地址&#xff1a;https://download.vulnhub.com/kioptrix/KVM3.rar 攻击机&#xff1a;kali&#xff08;192.168.26.128&#xff09;&#xff08;Nat模式&#xff09; 2.渗透测试 信息收…...

aiGPT系统源码★重大升级★AI写作/AI绘画/AI音乐/AI视频

亲爱老铁们好&#xff0c;又一段时间未更新内容了&#xff0c;我依然是爱你们的神点妹&#xff0c;今天点妹给大家带来一波新的福利&#xff1a;咱们用的aiGPT经过攻城师们近半年来夜以继日的技术升级&#xff0c;今天终于迎来了新版上线首秀。此次升级内容包含&#xff1a;首先…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...