vs2010实现流星雨代码
时间: 2023-09-12 20:03:24 浏览: 109
下面是一个简单的实现流星雨效果的示例代码,使用的是 C++ 和 Windows API:
```cpp
#include <windows.h>
const int MAX_STARS = 50;
const int STAR_SPEED = 5;
struct Star {
int x, y;
bool alive;
};
Star stars[MAX_STARS];
void initStars() {
for (int i = 0; i < MAX_STARS; i++) {
stars[i].x = rand() % 80;
stars[i].y = rand() % 25;
stars[i].alive = true;
}
}
void drawStar(int x, int y) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x, y };
SetConsoleCursorPosition(hConsole, pos);
SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
putchar('*');
}
void eraseStar(int x, int y) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x, y };
SetConsoleCursorPosition(hConsole, pos);
putchar(' ');
}
void moveStar(int i) {
if (stars[i].alive) {
eraseStar(stars[i].x, stars[i].y);
stars[i].y += STAR_SPEED;
if (stars[i].y >= 25) {
stars[i].alive = false;
} else {
drawStar(stars[i].x, stars[i].y);
}
}
}
int main() {
srand(GetTickCount());
initStars();
while (true) {
for (int i = 0; i < MAX_STARS; i++) {
moveStar(i);
}
Sleep(100);
}
return 0;
}
```
这个程序使用控制台来绘制星星,每个星星都是一个结构体,包含其在控制台中的坐标和是否还活着的标志。程序初始化时生成一些随机位置的星星,然后在每个循环中移动每个星星并重新绘制它们。移动的速度和出现的数量可以通过修改常量来调整。
阅读全文