飞机大战c++实现类的代码
时间: 2024-03-31 09:37:42 浏览: 13
以下是一个简单的飞机大战C++类的代码示例,仅供参考:
```c++
#include <SFML/Graphics.hpp>
#include <iostream>
#include <vector>
using namespace sf;
class Bullet {
public:
RectangleShape shape;
Vector2f currVelocity;
Bullet(float posX, float posY) {
shape.setSize(Vector2f(2.f, 10.f));
shape.setPosition(posX, posY);
shape.setFillColor(Color::Yellow);
currVelocity = Vector2f(0.f, -800.f);
}
};
class Player {
public:
RectangleShape shape;
Vector2f currVelocity;
float speed;
Player(float posX, float posY) {
shape.setSize(Vector2f(50.f, 50.f));
shape.setPosition(posX, posY);
shape.setFillColor(Color::Cyan);
currVelocity = Vector2f(0.f, 0.f);
speed = 500.f;
}
void update() {
shape.move(currVelocity * speed * deltaTime.asSeconds());
}
void shoot() {
Bullet bullet(shape.getPosition().x + shape.getSize().x / 2.f, shape.getPosition().y);
bullets.push_back(bullet);
}
std::vector<Bullet> bullets;
};
class Enemy {
public:
RectangleShape shape;
Vector2f currVelocity;
Enemy(float posX, float posY) {
shape.setSize(Vector2f(50.f, 50.f));
shape.setPosition(posX, posY);
shape.setFillColor(Color::Red);
currVelocity = Vector2f(0.f, 200.f);
}
void update() {
shape.move(currVelocity * deltaTime.asSeconds());
}
};
int main() {
RenderWindow window(VideoMode(800, 600), "飞机大战");
Player player(375.f, 500.f);
Enemy enemy(375.f, 50.f);
Clock clock;
while (window.isOpen()) {
deltaTime = clock.restart();
Event event;
while (window.pollEvent(event)) {
if (event.type == Event::Closed) {
window.close();
}
if (event.type == Event::KeyPressed) {
if (event.key.code == Keyboard::Space) {
player.shoot();
}
}
}
if (Keyboard::isKeyPressed(Keyboard::A)) {
player.currVelocity.x = -1.f;
}
else if (Keyboard::isKeyPressed(Keyboard::D)) {
player.currVelocity.x = 1.f;
}
else {
player.currVelocity.x = 0.f;
}
if (player.shape.getPosition().x <= 0.f) {
player.shape.setPosition(0.f, player.shape.getPosition().y);
}
if (player.shape.getPosition().x >= window.getSize().x - player.shape.getSize().x) {
player.shape.setPosition(window.getSize().x - player.shape.getSize().x, player.shape.getPosition().y);
}
player.update();
enemy.update();
for (size_t i = 0; i < player.bullets.size(); i++) {
player.bullets[i].shape.move(player.bullets[i].currVelocity * deltaTime.asSeconds());
if (player.bullets[i].shape.getPosition().y <= 0.f) {
player.bullets.erase(player.bullets.begin() + i);
}
}
window.clear();
window.draw(player.shape);
for (size_t i = 0; i < player.bullets.size(); i++) {
window.draw(player.bullets[i].shape);
}
window.draw(enemy.shape);
window.display();
}
return 0;
}
```
上面的代码实现了一个简单的飞机大战游戏,包括玩家、敌机和子弹等元素。其中,玩家可以通过键盘控制飞机的移动和攻击,敌机会自动向下移动,子弹会向上移动。注意,这只是一个简单的示例,具体实现还需要根据具体需求进行修改和完善。