C++控制台实现简化版吃鸡游戏

直接上代码

cpp 复制代码
#include <iostream>
#include <cstdlib>
#include <ctime>

// 生成一个随机整数
int randomInt(int min, int max) {
    return min + (std::rand() % (max - min + 1));
}

int main() {
    std::srand(static_cast<unsigned int>(std::time(nullptr)));

    // 地图尺寸
    int mapWidth = 20;
    int mapHeight = 10;

    // 初始化玩家和敌人位置
    int playerX = randomInt(0, mapWidth - 1);
    int playerY = randomInt(0, mapHeight - 1);
    int enemyX = randomInt(0, mapWidth - 1);
    int enemyY = randomInt(0, mapHeight - 1);

    bool gameover = false;
    int score = 0;

    // 游戏循环
    while (!gameover) {
        // 渲染地图
        for (int y = 0; y < mapHeight; ++y) {
            for (int x = 0; x < mapWidth; ++x) {
                if (x == playerX && y == playerY) {
                    std::cout << 'P'; // 玩家位置
                }
                else if (x == enemyX && y == enemyY) {
                    std::cout << 'E'; // 敌人位置
                }
                else {
                    std::cout << '.'; // 空白位置
                }
            }
            std::cout << '\n';
        }

        // 获取用户输入
        char action;
        std::cout << "移动玩家(WASD):";
        std::cin >> action;

        // 根据用户输入移动玩家
        switch (action) {
            case 'W':
                if (playerY > 0) {
                    playerY--;
                }
                break;
            case 'A':
                if (playerX > 0) {
                    playerX--;
                }
                break;
            case 'S':
                if (playerY < mapHeight - 1) {
                    playerY++;
                }
                break;
            case 'D':
                if (playerX < mapWidth - 1) {
                    playerX++;
                }
                break;
            default:
                std::cout << "未知动作。\n";
                continue;
        }

        // 判断是否与敌人位置相同
        if (playerX == enemyX && playerY == enemyY) {
            score++;
            std::cout << "你击败了敌人!得分:" << score << "\n";

            // 生成新的敌人位置
            enemyX = randomInt(0, mapWidth - 1);
            enemyY = randomInt(0, mapHeight - 1);
        }

        // 判断是否达到最大得分
        if (score >= 5) {
            std::cout << "你获得了胜利!\n";
            gameover = true;
        }
    }

    std::cout << "游戏结束。\n";

    return 0;
}

这个游戏是一个简化版的吃鸡游戏。你需要通过键盘输入W、A、S、D来移动玩家位置,并击败敌人来获得积分。当你累计得分达到5分时,游戏结束,你将获得胜利。地图中的P表示玩家位置,E表示敌人位置,.表示空白位置。每次击败敌人后,将会生成一个新的敌人位置。尽情享受游戏吧!

相关推荐
CVer儿1 分钟前
条件编译代码记录
开发语言·c++
忍界英雄3 分钟前
LeetCode:2398. 预算内的最多机器人数目 双指针+单调队列,时间复杂度O(n)
算法·leetcode·机器人
Kenneth風车4 分钟前
【机器学习(五)】分类和回归任务-AdaBoost算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·数据分析
凌不了云6 分钟前
windows环境下安装python第三方包
开发语言·python
落落落sss9 分钟前
sharding-jdbc分库分表
android·java·开发语言·数据库·servlet·oracle
hardStudy_h10 分钟前
Linux——常用系统设置和快捷键操作指令
linux·运维·服务器
鸽芷咕12 分钟前
【Python报错已解决】python setup.py bdist_wheel did not run successfully.
开发语言·python·机器学习·bug
C7211BA22 分钟前
使用knn算法对iris数据集进行分类
算法·分类·数据挖掘
Tisfy24 分钟前
LeetCode 2398.预算内的最多机器人数目:滑动窗口+单调队列——思路清晰的一篇题解
算法·leetcode·机器人·题解·滑动窗口
星迹日27 分钟前
C语言:联合和枚举
c语言·开发语言·经验分享·笔记