目录
写在前面
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 函数关闭图形窗口。
总结
这段代码实现了一个简朴的雪花飘落动画。它利用随机数天生雪花的初始位置、巨细和下落速率,并在屏幕上模仿雪花下落的过程。每次重绘屏幕时,通过擦除旧的雪花并绘制新的雪花,实现了雪花的动态效果。程序通过检测键盘输入来竣事动画并关闭窗口。
运行结果
写在后面
我是一只风趣的兔子,感谢你的喜好!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |