动态生日快乐烟花代码c++
时间: 2024-10-10 08:09:06 浏览: 54
在C++中,编写动态的生日快乐烟花效果通常涉及到图形界面编程以及时间控制。这里是一个简单的例子,展示如何使用`SFML`库创建一个基本的动态烟花动画:
```cpp
#include <SFML/Graphics.hpp>
#include <iostream>
// 烟花粒子类
class FireworkParticle {
public:
sf::CircleShape shape;
sf::Color color;
float speed, size, life;
FireworkParticle(float x, float y, sf::Color c)
: shape{20.f}, color{c}, speed{-50.f}, size{10.f}, life{0.5f} {
shape.setPosition(x, y);
}
};
int main() {
// 初始化SFML窗口
sf::RenderWindow window(sf::VideoMode(800, 600), "Happy Birthday!");
// 创建一些随机位置和颜色的烟花粒子
std::vector<FireworkParticle> fireworks;
for (int i = 0; i < 50; ++i) {
fireworks.push_back(FireworkParticle(
sf::RandomizeRange(0, 800), sf::RandomizeRange(0, 600),
sf::Color::Random()
));
}
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
// 清除屏幕
window.clear();
// 更新每帧的烟花状态
for (FireworkParticle &particle : fireworks) {
particle.shape.setFillColor(particle.color);
particle.size += particle.speed;
if (particle.life > 0 && particle.size >= particle.shape.getRadius()) {
particle.life -= 0.05f;
} else {
particle.shape.setRadius(0);
}
window.draw(particle.shape);
}
// 画出烟花
window.display();
}
return 0;
}
```
这个代码会创建一个随机大小、位置和颜色的烟花,它们会在屏幕上持续一段时间然后消失。当你运行这个程序时,你会看到"Happy Birthday!"的标题,并且屏幕上会出现各种动态的烟花。
阅读全文