以下是一个简单的用 C++ 编写的人操控的枪战小游戏的示例代码:

#include <iostream>
#include <conio.h>

using namespace std;

// 游戏地图大小
const int MAP_WIDTH = 20;
const int MAP_HEIGHT = 10;

// 游戏角色
const char PLAYER_ICON = '@';
const int PLAYER_START_X = MAP_WIDTH / 2;
const int PLAYER_START_Y = MAP_HEIGHT / 2;

// 子弹
const char BULLET_ICON = '*';
const int BULLET_SPEED = 1;

// 敌人
const char ENEMY_ICON = '#';
const int ENEMY_SPEED = 1;

// 游戏状态
bool gameRunning = true;

// 游戏地图
char map[MAP_HEIGHT][MAP_WIDTH];

// 角色位置
int playerX = PLAYER_START_X;
int playerY = PLAYER_START_Y;

// 子弹位置和状态
int bulletX = -1;
int bulletY = -1;
bool bulletActive = false;

// 敌人位置和状态
int enemyX = -1;
int enemyY = -1;
bool enemyActive = false;

// 初始化游戏地图
void InitializeMap() {
    for (int y = 0; y < MAP_HEIGHT; y++) {
        for (int x = 0; x < MAP_WIDTH; x++) {
            map[y][x] = ' ';
        }
    }
}

// 渲染游戏地图
void RenderMap() {
    system("cls"); // 清屏

    for (int y = 0; y < MAP_HEIGHT; y++) {
        for (int x = 0; x < MAP_WIDTH; x++) {
            if (y == playerY && x == playerX) {
                cout << PLAYER_ICON; // 渲染玩家
            } else if (y == bulletY && x == bulletX && bulletActive) {
                cout << BULLET_ICON; // 渲染子弹
            } else if (y == enemyY && x == enemyX && enemyActive) {
                cout << ENEMY_ICON; // 渲染敌人
            } else {
                cout << map[y][x]; // 渲染地图
            }
        }
        cout << endl;
    }
}

// 更新游戏状态
void UpdateGame() {
    // 检测按键输入
    if (_kbhit()) {
        char input = _getch();
        switch (input) {
            case 'a':
                playerX--;
                break;
            case 'd':
                playerX++;
                break;
            case 'w':
                playerY--;
                break;
            case 's':
                playerY++;
                break;
            case ' ':
                if (!bulletActive) {
                    bulletX = playerX;
                    bulletY = playerY - 1;
                    bulletActive = true;
                }
                break;
            case 'q':
                gameRunning = false;
                break;
        }
    }

    // 更新子弹位置
    if (bulletActive) {
        bulletY -= BULLET_SPEED;
        if (bulletY < 0) {
            bulletActive = false;
        }
    }

    // 更新敌人位置
    if (!enemyActive) {
        enemyX = rand() % MAP_WIDTH;
        enemyY = MAP_HEIGHT - 1;
        enemyActive = true;
    } else {
        enemyY -= ENEMY_SPEED;
        if (enemyY < 0) {
            enemyActive = false;
        }
    }

    // 检测碰撞
    if (bulletActive && enemyActive && bulletX == enemyX && bulletY == enemyY) {
        bulletActive = false;
        enemyActive = false;
    }
}

int main() {
    InitializeMap();

    while (gameRunning) {
        RenderMap();
        UpdateGame();
    }

    return 0;
}

这个示例代码实现了一个简单的人操控的枪战小游戏。玩家可以使用键盘上的 WASD 键来控制角色移动,空格键发射子弹,Q 键退出游戏。敌人会从随机位置出现并向上移动,玩家需要射击敌人以获得分数。请注意,这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展


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

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