小行星 c++程序代码
时间: 2024-10-28 16:03:44 浏览: 7
C++小游戏——射击小行星源码
5星 · 资源好评率100%
小行星撞击地球是一个经典的游戏概念,你可以使用C++编写一个简单的控制台版游戏。这里有一个简化的例子,展示了如何创建一个基本的小行星移动并检测碰撞的基本框架:
```cpp
#include <iostream>
#include <vector>
#include <ctime>
class Asteroid {
public:
int x, y;
Asteroid(int x_, int y_) : x(x_), y(y_) {}
};
void updateAsteroids(std::vector<Asteroid>& asteroids) {
// 这里只是一个基础示例,实际游戏中会更复杂,包括随机生成、速度等
for (int i = 0; i < asteroids.size(); ++i) {
asteroids[i].y += asteroids[i].speed;
if (asteroids[i].y + asteroids[i].size > std::get_terminal_height()) {
asteroids.erase(asteroids.begin() + i);
--i; // 要减少后续迭代的计数
}
}
}
// 简化版本的检测碰撞函数
bool checkCollision(Asteroid a1, Asteroid a2) {
return abs(a1.x - a2.x) < a1.size + a2.size && abs(a1.y - a2.y) < a1.size + a2.size;
}
int main() {
srand(time(0));
std::vector<Asteroid> asteroids{ {5, 5}, {10, 10} }; // 假设有两个小行星初始位置
while (true) {
updateAsteroids(asteroids);
for (int i = 0; i < asteroids.size(); ++i) {
for (int j = i + 1; j < asteroids.size(); ++j) {
if (checkCollision(asteroids[i], asteroids[j])) {
std::cout << "Collision detected!" << std::endl;
break;
}
}
if (j == asteroids.size()) {
// 如果没有碰撞,就继续循环
}
}
// 渲染每个小行星(简化版,实际上可以使用图形库)
for (const auto& asteroid : asteroids) {
std::cout << "(" << asteroid.x << ", " << asteroid.y << ")" << std::endl;
}
}
return 0;
}
```
这个代码只是一个基础模板,实际游戏需要添加用户输入控制飞船、碰撞处理、得分计算等功能,并可能使用图形库如SFML或SDL来显示图像。
阅读全文