c++代码雨
cpp#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h> // 仅在 Windows 平台上使用
const int SCREEN_WIDTH = 80;
const int SCREEN_HEIGHT = 25;
const int MAX_CODE_LENGTH = 10;
const int MAX_CODE_SPEED = 5;
class CodeRain {
private:
int x;
int y;
char symbol;
int speed;
public:
CodeRain() {
x = rand() % SCREEN_WIDTH;
y = -(rand() % SCREEN_HEIGHT);
symbol = (char)(33 + rand() % 93); // 生成可见字符
speed = 1 + rand() % MAX_CODE_SPEED;
}
void fall() {
y += speed;
if (y >= SCREEN_HEIGHT)
y = 0;
}
void draw() {
COORD pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
std::cout << symbol;
}
};
int main() {
srand(time(0)); // 用当前时间初始化随机数生成器
// 隐藏光标
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursorInfo;
GetConsoleCursorInfo(out, &cursorInfo);
cursorInfo.bVisible = false;
SetConsoleCursorInfo(out, &cursorInfo);
// 设置控制台大小
SMALL_RECT windowSize = { 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 };
SetConsoleWindowInfo(out, TRUE, &windowSize);
CodeRain codeRaindrops[SCREEN_WIDTH];
while (true) {
for (int i = 0; i < SCREEN_WIDTH; ++i) {
codeRaindrops[i].fall();
codeRaindrops[i].draw();
}
Sleep(50); // 控制代码雨速度
}
return 0;
}
这段代码模拟了在控制台上下落的代码雨效果。它使用了 Windows 平台特定的函数来控制控制台输出和光标的行为。如果你在其他平台上运行代码,可能需要做相应的调整。
这个 C++ 代码实现了一个简单的代码雨效果,
头文件包含:
#include <iostream>
:用于标准输入输出流。#include <cstdlib>
:包含了通用的 C 标准库函数,如 rand()
和 srand()
。#include <ctime>
:包含了处理时间和日期的函数。#include <windows.h>
:在 Windows 平台上使用的头文件,包含了控制台相关的函数。
常量定义:
SCREEN_WIDTH
和 SCREEN_HEIGHT
:控制台的宽度和高度。MAX_CODE_LENGTH
和 MAX_CODE_SPEED
:分别控制代码雨的最大长度和速度。
CodeRain 类:
包含了代码雨的属性和方法,如位置 (x, y)、字符符号、下落速度等。构造函数初始化代码雨的属性,随机生成位置、字符和速度。fall()
方法使代码雨下落,更新 y 坐标,并在达到屏幕底部时将 y 坐标重置为 0。draw()
方法绘制代码雨,将字符符号输出到控制台的指定位置。
main() 函数:
初始化随机数生成器。隐藏控制台光标,以避免干扰代码雨效果。设置控制台的大小。创建一个包含多个 CodeRain 对象的数组,每个对象代表一列代码雨。在主循环中,让每个代码雨对象下落并绘制到控制台上,通过 Sleep()
控制代码雨的速度。