C/C++大雪纷飞代码

ops/2024/9/23 10:18:27/

图片

目录

写在前面

C语言简介

EasyX简介

大雪纷飞

运行结果

写在后面


写在前面

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

系列推荐

序号目录直达链接
1爱心代码C/C++爱心代码(完整代码)_爱心代码编程c++语言-CSDN博客
2李峋同款跳动的爱心C/C++李峋同款跳动的爱心代码(完整代码)_c++如何编写爱心代码李峋-CSDN博客
3满屏飘字代码C/C++满屏飘字表白代码(完整代码)_c++表白代码-CSDN博客
4大雪纷飞代码https://want595.blog.csdn.net/article/details/140735166
5新春烟花代码
6黑客帝国字母雨C/C++黑客帝国同款字母雨(完整代码)_字母雨代码-CSDN博客
7樱花树C/C++樱花树代码-CSDN博客

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 函数关闭图形窗口。

总结

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

运行结果

图片

写在后面

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


http://www.ppmy.cn/ops/88812.html

相关文章

数仓: 1- 数据仓库基础

目录 1- 数据仓库基础1.1 数据仓库概念和特点1.1.1 数据仓库的概念1.1.2 数据仓库的主要特点1.1.2.1 面向主题的(Subject-Oriented)1.1.2.2 集成的(Integrated)1.1.2.3 相对稳定的(Non-Volatile) 非易失1.1.2.4 反应历史变化的(Time-Variant) 时变的 1.1.3 数据仓库其它重要特征…

dpdk实现udp协议栈

使用DPDK实现UDP用户态协议栈&#xff0c;实现流程中包括&#xff1a; 三类线程 1、收发包线程 2、用户态协议栈线程 3、udp服务端线程 两类缓冲区&#xff1a; 1、协议栈收包缓冲区和协议栈发包缓冲区 2、udp收包缓冲区和udp发包缓冲区 协议栈缓冲区中存储的数据是str…

TypeScript 及算法准备

TypeScript 基础 类型注解&#xff1a;为变量、函数参数和返回值指定类型。 typescript复制代码let count: number 10;function greet(name: string): string {return Hello, ${name}!; } 接口和类型别名&#xff1a;定义对象结构和复杂类型。 typescript复制代码interface U…

在PAI-DSW中连接Neo4J,并批量创建知识图谱

我在 阿里云DSW实例中安装并运行Neo4J 中提到过&#xff0c;由于PAI-DSW的专有网络配置不能确保百分之百成功&#xff0c;因而很难实现通过本地的浏览器登录在PAI-DSW中启动的Neo4J图数据库。 我当时想出的一个解决办法是使用./cypher-shell语句在命令行登录neo4j&#xff0c;…

苹果手机升级iOS18测试版本后使用体验不好?怎么降级?

近期苹果发布了诸多的iOS18版本给用户提前尝鲜测试&#xff0c;许多果粉们都迫不及待的选择了升级&#xff0c;但是有不少的果粉升级时没有考虑到设备适配性问题&#xff0c;导致升级之后手机变得有些卡顿&#xff0c;使用体验不好时&#xff0c;想要降级回到正式的版本&#x…

【目标和】python刷题记录

R3-dp篇. 目录 思路&#xff1a; 增加记忆化搜索&#xff1a; 优化空间复杂度&#xff1a; 思路&#xff1a; class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:#设正数之和为p,总元素之和为s&#xff0c;带符号总元素之和为t&…

最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台

简介&#xff1a; 最新小猫咪PHP加密系统源码V1.4_完全本地化加密API接口_带后台 小猫咪PHP加密系统历时半年&#xff0c;它再一次迎来更新&#xff0c;更新加密算法&#xff08;这应该是最后一次更新加密算法了&#xff0c;以后主要更新都在框架功能上面了&#xff09;&…

如何确保PLC系统安全的可靠性,这几个注意事项你需要牢记

PLC&#xff08;可编程逻辑控制器&#xff09;是现代工业自动化系统中的关键组成部分。在设计 PLC 系统时&#xff0c;安全性是至关重要的考虑因素。本文将介绍 PLC 系统设计中的一些安全注意事项&#xff0c;包括电源设计、接地设计、关键数字量输入输出设计和报警设计。 一.…