c++完整版流星雨代码
时间: 2024-10-28 15:01:08 浏览: 69
1.rar_图形图象_C++_Builder_
在C++中创建完整的流星雨效果需要使用到图形库,例如SFML或者OpenGL。以下是一个简单的使用SFML框架的例子,它会在屏幕上显示一个窗口,并随机生成流星:
```cpp
#include <SFML/Graphics.hpp>
#include <iostream>
#include <random>
class Meteor {
private:
sf::CircleShape shape;
public:
Meteor(float x, float y)
: shape(5.f, sf::Color::White), shape.setPosition(x, y) {}
void update(float dt) { shape.move(dt * 10.f, 0.f); }
void draw(sf::RenderWindow& window) const { window.draw(shape); }
};
int main() {
sf::RenderWindow window(sf::VideoMode(800, 600), "Meteor Shower");
window.setFramerateLimit(60);
srand(time(nullptr)); // 初始化随机数种子
std::vector<Meteor> meteors;
for (int i = 0; i < 100; ++i) {
float x = rand() % window.getSize().x;
meteors.push_back(Meteor(x, window.getSize().y));
}
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) window.close();
}
window.clear();
for (auto& meteor : meteurs) {
meteor.update(window.getElapsedTime().asSeconds());
if (meteor.shape.getPosition().y < 0) {
meteors.erase(std::remove(meteors.begin(), meteors.end(), meteor),
meteors.end()); // 当流星落下时移除
} else {
meteor.draw(window);
}
}
window.display();
}
return 0;
}
```
这个代码会创建一个800x600像素的窗口,每帧随机生成新的流星并在屏幕上方下落。流星的速度由`dt * 10.f`决定,其中`dt`是从上一帧到这一帧的时间间隔,使流星看起来在移动。
阅读全文