这是一个简单的C++射击游戏的代码示例:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

// 游戏界面的大小
const int WIDTH = 20;
const int HEIGHT = 10;

// 玩家的初始位置
const int PLAYER_X = WIDTH / 2;
const int PLAYER_Y = HEIGHT - 1;

// 子弹的速度
const int BULLET_SPEED = 1;

// 敌人的速度
const int ENEMY_SPEED = 1;

// 游戏状态
enum GameState {
    PLAYING,
    GAME_OVER
};

// 玩家
struct Player {
    int x;
    int y;
};

// 子弹
struct Bullet {
    int x;
    int y;
    bool active;
};

// 敌人
struct Enemy {
    int x;
    int y;
    bool active;
};

// 初始化玩家
void initPlayer(Player& player) {
    player.x = PLAYER_X;
    player.y = PLAYER_Y;
}

// 初始化子弹
void initBullet(Bullet& bullet) {
    bullet.active = false;
}

// 初始化敌人
void initEnemy(Enemy& enemy) {
    enemy.active = false;
}

// 发射子弹
void shootBullet(Player& player, Bullet& bullet) {
    bullet.x = player.x;
    bullet.y = player.y - 1;
    bullet.active = true;
}

// 生成敌人
void generateEnemy(Enemy& enemy) {
    enemy.x = rand() % WIDTH;
    enemy.y = 0;
    enemy.active = true;
}

// 更新游戏状态
void updateGame(Player& player, Bullet& bullet, Enemy& enemy, GameState& state) {
    // 移动子弹
    if (bullet.active) {
        bullet.y -= BULLET_SPEED;
        if (bullet.y < 0) {
            bullet.active = false;
        }
    }

    // 移动敌人
    if (enemy.active) {
        enemy.y += ENEMY_SPEED;
        if (enemy.y >= HEIGHT) {
            enemy.active = false;
            state = GAME_OVER;
        }
    }

    // 碰撞检测
    if (bullet.active && enemy.active && bullet.x == enemy.x && bullet.y == enemy.y) {
        bullet.active = false;
        enemy.active = false;
    }

    // 检测游戏结束
    if (state == PLAYING && player.x == enemy.x && player.y == enemy.y) {
        state = GAME_OVER;
    }
}

// 显示游戏界面
void drawGame(const Player& player, const Bullet& bullet, const Enemy& enemy) {
    system("clear"); // 清空屏幕

    for (int y = 0; y < HEIGHT; y++) {
        for (int x = 0; x < WIDTH; x++) {
            if (player.x == x && player.y == y) {
                cout << "P";
            } else if (bullet.active && bullet.x == x && bullet.y == y) {
                cout << "*";
            } else if (enemy.active && enemy.x == x && enemy.y == y) {
                cout << "E";
            } else {
                cout << ".";
            }
        }
        cout << endl;
    }
}

int main() {
    srand(time(NULL));

    Player player;
    Bullet bullet;
    Enemy enemy;
    GameState state = PLAYING;

    initPlayer(player);
    initBullet(bullet);
    initEnemy(enemy);

    while (state == PLAYING) {
        drawGame(player, bullet, enemy);
        char input;
        cin >> input;

        switch (input) {
            case 'a':
                player.x--;
                break;
            case 'd':
                player.x++;
                break;
            case 's':
                shootBullet(player, bullet);
                break;
        }

        updateGame(player, bullet, enemy, state);
    }

    cout << "Game over!" << endl;

    return 0;
}

这个代码实现了一个简单的射击游戏,玩家可以使用键盘上的"a"和"d"键左右移动,使用"s"键发射子弹。游戏的目标是尽可能地击中从上方随机生成的敌人,并避免被敌人碰到。游戏界面使用字符来表示玩家、子弹和敌人的位置。游戏状态通过枚举类型来表示,游戏循环在每次迭代中更新游戏状态、处理玩家输入、移动游戏元素并绘制游戏界面

C++射击游戏代码

原文地址: https://www.cveoy.top/t/topic/ixuH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录