小卡拉米的摸鱼:地鼠游戏

啊取名真困难 2024-06-18 10:57:23

游戏玩法:

  • 游戏在一个3x3的网格上进行,玩家需要在30秒内尽可能多地击中随机出现的地鼠。
  • 玩家输入行和列的编号来“打击”地鼠。如果击中,玩家得分;如果未击中,需要重新尝试。
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <chrono>
#include <thread>
#include <cmath>

// 游戏设置
const int GRID_SIZE = 3; // 地鼠网格大小
const int MOLE_COUNT = 5; // 地鼠数量
const int GAME_DURATION = 30; // 游戏持续时间(秒)
const int DIFFICULTY = 1; // 难度级别,1-3

// 游戏状态
struct Mole {
    int row;
    int col;
    bool isHit;
    bool isMoving;
};

std::vector<Mole> moles;
std::vector<std::vector<bool>> grid(GRID_SIZE, std::vector<bool>(GRID_SIZE, false));
int score = 0;
int hitCount = 0;
int missCount = 0;

// 初始化地鼠位置
void initializeMoles() {
    srand(static_cast<unsigned int>(std::time(nullptr)));
    for (int i = 0; i < MOLE_COUNT; ++i) {
        int row, col;
        do {
            row = rand() % GRID_SIZE;
            col = rand() % GRID_SIZE;
        } while (grid[row][col]);
        moles.push_back({row, col, false, false});
        grid[row][col] = true;
    }
}

// 打印游戏网格
void printGrid() {
    for (int i = 0; i < GRID_SIZE; ++i) {
        for (int j = 0; j < GRID_SIZE; ++j) {
            if (grid[i][j]) {
                std::cout << "M ";
            } else {
                std::cout << ". ";
            }
        }
        std::cout << std::endl;
    }
}

// 地鼠行为
void moleBehavior() {
    for (auto& mole : moles) {
        if (!mole.isHit && !mole.isMoving) {
            mole.isMoving = true;
            // 模拟地鼠移动,这里简化处理
            std::this_thread::sleep_for(std::chrono::milliseconds(500 / pow(2, DIFFICULTY - 1)));
            mole.row = rand() % GRID_SIZE;
            mole.col = rand() % GRID_SIZE;
            mole.isMoving = false;
        }
    }
}

// 检查是否击中地鼠
bool checkHit(int row, int col) {
    for (auto& mole : moles) {
        if (mole.row == row && mole.col == col && !mole.isHit) {
            mole.isHit = true;
            hitCount++;
            return true;
        }
    }
    missCount++;
    return false;
}

int main() {
    initializeMoles();
    auto startTime = std::chrono::high_resolution_clock::now();

    while (true) {
        printGrid();
        moleBehavior(); // 更新地鼠行为

        std::cout << "Enter row and column to hit (0-" << GRID_SIZE - 1 << "): ";
        int row, col;
        std::cin >> row >> col;

        if (row < 0 || row >= GRID_SIZE || col < 0 || col >= GRID_SIZE) {
            std::cout << "Invalid input. Try again." << std::endl;
            continue;
        }

        if (checkHit(row, col)) {
            score += 10; // 基础得分
            // 检查是否有连击,这里简化处理
            if (!moles.empty()) {
                score += 5; // 连击得分
            }
            std::cout << "Hit! Score: " << score << " Hits: " << hitCount << " Misses: " << missCount << std::endl;
            moles.erase(std::remove_if(moles.begin(), moles.end(), [](const Mole& m) { return m.isHit; }), moles.end());
            if (moles.empty()) {
                std::cout << "All moles hit!" << std::endl;
            }
        } else {
            std::cout << "Miss! Try again. Score: " << score << " Hits: " << hitCount << " Misses: " << missCount << stdfty::endl;
        }

        auto currentTime = std::chrono::high_resolution_clock::now();
        if (std::chrono::duration_cast<std::chrono::seconds>(currentTime - startTime).count() >= GAME_DURATION) {
            std::cout << "Game over! Your final score is: " << score << std::endl;
            std::cout << "Hits: " << hitCount << " Misses: " << missCount << std::endl;
            break;
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 控制游戏节奏
    }

    return 0;
}

 

...全文
227 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文档聚焦于基于Peng-Robinson状态方程的化工热力学计算研究,系统介绍了利用Matlab代码实现纯组分及多组分系统的压缩因子(z因子)和逸度系数的计算方法,并进一步拓展至泡点压力与露点压力的数值求解。资源涵盖了从状态方程推导、非线性方程求根、相平衡条件判断到迭代算法实现的完整技术路线,提供了可运行的Matlab程序代码,有助于深入理解实际工程中物性参数的计算原理与实现过程; 适合人群:具备化工热力学基础知识和一定Matlab编程能力的高校学生、科研人员及工程技术人员,尤其适合从事过程系统模拟、油气田开发、精馏设计及相关领域研究的专业人士; 使用场景及目标:① 掌握Peng-Robinson方程在真实气体物性计算中的应用;② 实现多组分混合体系的相平衡计算与泡/露点预测;③ 为Aspen Plus等商用流程模拟软件提供底层算法验证与教学参考;④ 支持科研论文复现、课程设计、毕业设计及工业过程优化中的热力学数据支撑需求; 阅读建议:建议读者结合经典化工热力学教材同步学习,重点理解立方型状态方程的根判别、迭代收敛策略与相平衡准则的数学表达,动手调试并运行所提供的Matlab代码以掌握算法细节,还可将其扩展应用于其他状态方程(如SRK、vdW)的对比分析研究。
内容概要:本文围绕列车-轨道-桥梁交互仿真研究,基于Matlab平台构建数值模型,系统分析列车运行过程中轨道与桥梁结构间的动态相互作用机制。研究涵盖多体动力学建模、耦合系统运动方程求解、边界条件设定及仿真结果可视化等关键环节,重点揭示高速行车条件下基础设施的振动传递规律与力学响应特征。该仿真方法可有效评估结构安全性、舒适性指标及疲劳寿命,为轨道交通工程的设计优化与运维管理提供理论支撑和技术路径。文中配套提供了完整的Matlab代码实现方案及操作说明,便于用户复现、验证和拓展相关研究。; 适合人群:具备Matlab编程基础和结构动力学、车辆动力学等相关专业知识的研究生、科研人员及从事铁路工程、桥梁工程与交通系统安全评估的工程技术人才,尤其适合开展轨道交通耦合振动课题的研究者。; 使用场景及目标:①用于高校与科研机构进行列车-轨道-桥梁耦合系统动力学特性的教学演示与科学研究;②支撑高速铁路桥梁的设计优化、运营安全性评估与减振降噪方案验证;③为复杂交通基础设施的多物理场耦合仿真提供建模思路与代码参考。; 阅读建议:建议读者结合所提供的Matlab代码逐模块深入研读,重点关注系统建模假设、质量-刚度-阻尼矩阵构建方法及数值积分算法的实现细节,同时可通过调整参数进行敏感性分析,进一步掌握仿真模型的适用范围与优化方向。

303,815

社区成员

发帖
与我相关
我的任务
社区描述
C++领域交流社区,旨在为大家提供一个文明交流,互相探讨兴趣爱好的环境,欢迎各位大佬加入。
c++ 个人社区 广东省·深圳市
社区管理员
  • 桃花键神
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧