#include <iostream>
#include <vector>
#include <string>
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
// 武器配件结构体
struct Part {
string name;
string type;
int price;
string desc;
};
// 武器结构体
struct Weapon {
string name;
int price;
string type;
string desc;
int skinId;
string skinName;
Part muzzle;
Part mag;
Part sight;
Part stock;
bool hasModify;
};
// 任务结构体
struct Task {
string taskName;
string content;
int rewardMoney;
bool isFinish;
};
// 账号结构体
struct Account {
string username;
string password;
int money;
vector<Weapon> ownWeapons;
vector<Weapon> warehouse;
vector<Task> taskList;
};
// 全局变量:记录当前选择的地图和难度
int currentMap = 1;
int currentDifficulty = 2;
// 函数声明
void registerAccount(vector<Account>& accounts);
Account* loginAccount(vector<Account>& accounts);
void showMainMenu();
void chooseMap();
void chooseDifficulty();
void buyWeapon(Account& player);
void showOwnWeapons(const Account& player);
void showWeaponShop();
void openWarehouse(Account& player);
void taskSystem(Account& player);
void skinSystem(Account& player);
void modifyWeapon(Account& player);
void startBattle(Account& player);
int main() {
srand((unsigned int)time(NULL));
vector<Account> accounts;
int choice;
cout << "=========================================" << endl;
cout << " 三角洲行动 【1.2测试版】" << endl;
cout << "=========================================" << endl;
while (true) {
cout << "\n1. 注册新账号" << endl;
cout << "2. 登录游戏" << endl;
cout << "0. 退出游戏" << endl;
cout << "请选择操作:";
cin >> choice;
if (choice == 1) {
registerAccount(accounts);
}
else if (choice == 2) {
Account* player = loginAccount(accounts);
if (player != nullptr) {
cout << "\n登录成功!欢迎你," << player->username << endl;
cout << "当前金币:" << player->money << endl;
system("pause");
while (true) {
system("cls");
showMainMenu();
cin >> choice;
if (choice == 0) break;
switch (choice) {
case 1: chooseMap(); break;
case 2: chooseDifficulty(); break;
case 3: buyWeapon(*player); break;
case 4: showOwnWeapons(*player); break;
case 5: openWarehouse(*player); break;
case 6: taskSystem(*player); break;
case 7: skinSystem(*player); break;
case 8: modifyWeapon(*player); break;
case 9: startBattle(*player); break;
default: cout << "输入有误,请重新选择!" << endl;
}
cout << "\n按回车继续...";
cin.ignore();
cin.get();
}
}
}
else if (choice == 0) {
cout << "游戏结束,再见!" << endl;
break;
}
else {
cout << "无效选项!" << endl;
}
}
return 0;
}
// 注册账号
void registerAccount(vector<Account>& accounts) {
string user, pwd;
cout << "\n===== 账号注册 =====" << endl;
cout << "用户名:";
cin >> user;
cout << "密码:";
cin >> pwd;
for (auto& acc : accounts) {
if (acc.username == user) {
cout << "该用户名已存在,注册失败!" << endl;
return;
}
}
Account newAcc;
newAcc.username = user;
newAcc.password = pwd;
newAcc.money = 15000;
newAcc.taskList = {
{"新手出击", "完成一次地图选择", 2000, false},
{"武装自己", "购买任意一把武器", 3000, false},
{"挑战难度", "选择困难及以上难度", 2500, false},
{"成功撤离", "完成一局对局并成功撤离", 5000, false}
};
accounts.push_back(newAcc);
cout << "注册成功!赠送15000金币 + 新手任务!" << endl;
}
// 登录账号
Account* loginAccount(vector<Account>& accounts) {
string user, pwd;
cout << "\n===== 账号登录 =====" << endl;
cout << "用户名:";
cin >> user;
cout << "密码:";
cin >> pwd;
for (int i = 0; i < accounts.size(); i++) {
if (accounts[i].username == user && accounts[i].password == pwd) {
return &accounts[i];
}
}
cout << "用户名或密码错误!" << endl;
return nullptr;
}
// 主菜单
void showMainMenu() {
cout << "\n========== 游戏主菜单 ==========" << endl;
cout << "1. 选择地图 2. 选择难度" << endl;
cout << "3. 武器商店 4. 我的装备" << endl;
cout << "5. 个人仓库 6. 每日任务" << endl;
cout << "7. 更换皮肤 8. 武器改装" << endl;
cout << "9. 开始对局 0. 返回登录" << endl;
cout << "================================" << endl;
cout << "请输入选项:";
}
// 选择地图
void chooseMap() {
system("cls");
int c;
cout << "\n===== 地图列表 =====" << endl;
cout << "1. 零号大坝 (普通奖励)" << endl;
cout << "2. 长弓溪谷 (普通奖励)" << endl;
cout << "3. 巴克什 (中高奖励)" << endl;
cout << "4. 航天基地 (高风险高奖励)" << endl;
cout << "5. 灰色荒漠 (高风险高奖励)" << endl;
cout << "6. 码头危机 (中等奖励)" << endl;
cout << "请选择地图编号:";
cin >> c;
if (c >= 1 && c <= 6) {
currentMap = c;
cout << "已成功选定地图!" << endl;
} else {
cout << "输入错误,使用默认地图!" << endl;
}
}
// 选择难度
void chooseDifficulty() {
system("cls");
int c;
cout << "\n===== 难度选择 =====" << endl;
cout << "1. 简单 (敌人很弱,奖励低)" << endl;
cout << "2. 普通 (标准强度,奖励中)" << endl;
cout << "3. 困难 (敌人强化,奖励高)" << endl;
cout << "4. 机密 (敌人高强,奖励很高)" << endl;
cout << "5. 梦魇 (敌人极强,奖励极高)" << endl;
cout << "请选择难度:";
cin >> c;
if (c >= 1 && c <= 5) {
currentDifficulty = c;
cout << "难度已设置!" << endl;
} else {
cout << "输入错误,使用默认难度(普通)!" << endl;
}
}
// 武器商店展示
void showWeaponShop() {
cout << "\n================================= 武器商店 =================================" << endl;
cout << left << setw(6) << "编号" << setw(18) << "武器" << setw(10) << "类型" << setw(8) << "价格" << "描述" << endl;
cout << "1 M4A1 步枪 3000 稳定通用" << endl;
cout << "2 AKM 步枪 2800 高伤害" << endl;
cout << "3 M16A4 步枪 3200 三连发精准" << endl;
cout << "4 SCAR-L 步枪 3500 全能型" << endl;
cout << "5 AUG 步枪 3800 无托稳定" << endl;
cout << "6 AWM 狙击 8500 一击秒杀" << endl;
cout << "7 M24 狙击 7000 轻量化狙击" << endl;
cout << "8 Kar98k 狙击 6000 经典栓狙" << endl;
cout << "9 MP5 冲锋枪 2200 近距离王者" << endl;
cout << "10 UZI 冲锋枪 1800 超高射速" << endl;
cout << "11 Vector 冲锋枪 2500 稳定爆发" << endl;
cout << "12 M870 霰弹枪 2000 贴脸秒杀" << endl;
cout << "13 S12K 霰弹枪 2400 连喷压制" << endl;
cout << "14 Desert Eagle 手枪 1800 高伤手枪" << endl;
cout << "15 G17 手枪 1200 稳定通用" << endl;
cout << "16 P92 手枪 1000 新手标配" << endl;
cout << "17 M249 机枪 9000 火力压制" << endl;
cout << "18 DP28 机枪 7500 稳定扫射" << endl;
cout << "19 Crossbow 冷兵器 5000 静音杀敌" << endl;
cout << "20 Knife 近战 0 免费匕首" << endl;
cout << "0 返回菜单" << endl;
cout << "===========================================================================" << endl;
}
// 购买武器
void buyWeapon(Account& player) {
vector<Weapon> shop = {
{"M4A1",3000,"步枪","稳定通用",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"AKM",2800,"步枪","高伤害",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"M16A4",3200,"步枪","三连发精准",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"SCAR-L",3500,"步枪","全能型",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"AUG",3800,"步枪","无托稳定",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"AWM",8500,"狙击","一击秒杀",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"M24",7000,"狙击","轻量化狙击",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"Kar98k",6000,"狙击","经典栓狙",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"MP5",2200,"冲锋枪","近距离王者",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"UZI",1800,"冲锋枪","超高射速",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"Vector",2500,"冲锋枪","稳定爆发",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"M870",2000,"霰弹枪","贴脸秒杀",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"S12K",2400,"霰弹枪","连喷压制",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"Desert Eagle",1800,"手枪","高伤手枪",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"G17",1200,"手枪","稳定通用",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"P92",1000,"手枪","新手标配",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"M249",9000,"机枪","火力压制",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"DP28",7500,"机枪","稳定扫射",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"Crossbow",5000,"冷兵器","静音杀敌",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false},
{"Knife",0,"近战","免费匕首",0,"原版",{"无","枪口",0,"无"},{"无","弹匣",0,"无"},{"无","瞄准镜",0,"无"},{"无","枪托",0,"无"},false}
};
int c;
while (1) {
system("cls");
showWeaponShop();
cout << "当前金币:" << player.money << endl;
cout << "选择武器购买(0返回):";
cin >> c;
if (c == 0) break;
if (c < 1 || c > shop.size()) {
cout << "编号错误!" << endl;
system("pause");
continue;
}
Weapon w = shop[c-1];
if (player.money < w.price) {
cout << "金币不足,无法购买!" << endl;
system("pause");
continue;
}
player.money -= w.price;
player.ownWeapons.push_back(w);
cout << "购买成功!【武装自己】任务可前往领取奖励" << endl;
system("pause");
}
}
// 查看已装备武器
void showOwnWeapons(const Account& player) {
cout << "\n========== 已装备武器 ==========" << endl;
if (player.ownWeapons.empty()) {
cout << "暂无装备,快去商店购买吧!" << endl;
return;
}
for (int i = 0; i < player.ownWeapons.size(); i++) {
auto& w = player.ownWeapons[i];
cout << i+1 << ". " << w.name << " [" << w.type << "] 皮肤:" << w.skinName << endl;
if (w.hasModify) {
cout << " 【改装配件】" << endl;
cout << " 枪口:" << w.muzzle.name << " | 弹匣:" << w.mag.name << endl;
cout << " 瞄准镜:" << w.sight.name << " | 枪托:" << w.stock.name << "\n" << endl;
}
}
}
// 仓库系统
void openWarehouse(Account& player) {
int op, idx;
while(true) {
system("cls");
cout << "\n========== 个人仓库 ==========" << endl;
cout << "1. 将装备移入仓库" << endl;
cout << "2. 将仓库武器取出装备" << endl;
cout << "0. 退出仓库" << endl;
cout << "请选择:";
cin >> op;
if (op == 0) break;
if (op == 1) {
showOwnWeapons(player);
if (player.ownWeapons.empty()) {
cout << "没有可转移的装备!" << endl;
system("pause");
continue;
}
cout << "输入要移入仓库的武器编号:";
cin >> idx;
if (idx < 1 || idx > player.ownWeapons.size()) {
cout << "编号错误!" << endl;
system("pause");
continue;
}
player.warehouse.push_back(player.ownWeapons[idx-1]);
player.ownWeapons.erase(player.ownWeapons.begin() + idx - 1);
cout << "转移成功!" << endl;
}
else if (op == 2) {
cout << "\n仓库内武器:" << endl;
if (player.warehouse.empty()) {
cout << "仓库为空!" << endl;
system("pause");
continue;
}
for (int i = 0; i < player.warehouse.size(); i++) {
cout << i+1 << ". " << player.warehouse[i].name << endl;
}
cout << "输入取出编号:";
cin >> idx;
if (idx < 1 || idx > player.warehouse.size()) {
cout << "编号错误!" << endl;
system("pause");
continue;
}
player.ownWeapons.push_back(player.warehouse[idx-1]);
player.warehouse.erase(player.warehouse.begin() + idx - 1);
cout << "取出并装备成功!" << endl;
}
system("pause");
}
}
// 任务系统
void taskSystem(Account& player) {
int idx;
cout << "\n========== 个人任务 ==========" << endl;
for (int i = 0; i < player.taskList.size(); i++) {
auto& t = player.taskList[i];
string state = t.isFinish ? "已完成" : "未完成";
cout << i+1 << ". " << t.taskName << " | " << state
<< " | 奖励金币:" << t.rewardMoney << endl;
cout << " 任务内容:" << t.content << endl;
}
cout << "\n输入任务编号领取奖励(0返回):";
cin >> idx;
if (idx == 0) return;
if (idx < 1 || idx > player.taskList.size()) {
cout << "编号错误!" << endl;
return;
}
Task& t = player.taskList[idx-1];
if (t.isFinish) {
cout << "该任务已领取过奖励!" << endl;
return;
}
t.isFinish = true;
player.money += t.rewardMoney;
cout << "任务完成!获得 " << t.rewardMoney << " 金币,当前总金币:" << player.money << endl;
}
// 皮肤更换系统
void skinSystem(Account& player) {
if (player.ownWeapons.empty()) {
cout << "当前无装备武器,无法更换皮肤!" << endl;
return;
}
int wIdx, sIdx;
cout << "\n========== 皮肤更换 ==========" << endl;
showOwnWeapons(player);
cout << "选择要换皮肤的武器编号:";
cin >> wIdx;
if (wIdx < 1 || wIdx > player.ownWeapons.size()) {
cout << "编号错误!" << endl;
return;
}
cout << "\n可选皮肤:" << endl;
cout << "1. 原版 2. 丛林迷彩 3. 烈焰涂装 4. 暗银金属" << endl;
cout << "选择皮肤编号:";
cin >> sIdx;
switch(sIdx) {
case 1: player.ownWeapons[wIdx-1].skinName = "原版"; break;
case 2: player.ownWeapons[wIdx-1].skinName = "丛林迷彩"; break;
case 3: player.ownWeapons[wIdx-1].skinName = "烈焰涂装"; break;
case 4: player.ownWeapons[wIdx-1].skinName = "暗银金属"; break;
default: cout << "皮肤编号无效!"; return;
}
cout << "皮肤更换成功!" << endl;
}
// 武器改装系统
void modifyWeapon(Account& player) {
if (player.ownWeapons.empty()) {
cout << "\n你还没有装备任何武器,无法改枪!" << endl;
return;
}
vector<Part> muzzles = {{"补偿器", "枪口", 800, "减少后坐力"}, {"消音器", "枪口", 1200, "静音射击"}, {"消焰器", "枪口", 600, "消除枪口火焰"}};
vector<Part> mags = {{"快速弹匣", "弹匣", 700, "换弹加快"}, {"扩容弹匣", "弹匣", 1000, "子弹增加"}, {"快速扩容", "弹匣", 1500, "换弹快+子弹多"}};
vector<Part> sights = {{"红点瞄准", "瞄准镜", 500, "近距离精准"}, {"全息瞄准", "瞄准镜", 800, "视野清晰"}, {"6倍镜", "瞄准镜", 1500, "远距离狙击"}};
vector<Part> stocks = {{"轻型枪托", "枪托", 600, "提升便携"}, {"重型枪托", "枪托", 900, "稳定射击"}, {"战术枪托", "枪托", 1200, "全能稳定"}};
int wIdx;
system("cls");
cout << "========== 武器改装工厂 ==========" << endl;
showOwnWeapons(player);
cout << "\n请选择要改装的武器编号:";
cin >> wIdx;
if (wIdx < 1 || wIdx > player.ownWeapons.size()) {
cout << "编号错误!" << endl;
return;
}
Weapon& w = player.ownWeapons[wIdx - 1];
int op, pIdx;
while (true) {
system("cls");
cout << "========== 改装:" << w.name << " ==========" << endl;
cout << "当前金币:" << player.money << endl;
cout << "1. 改装枪口 目前:" << w.muzzle.name << endl;
cout << "2. 改装弹匣 目前:" << w.mag.name << endl;
cout << "3. 改装瞄准镜 目前:" << w.sight.name << endl;
cout << "4. 改装枪托 目前:" << w.stock.name << endl;
cout << "0. 退出改装" << endl;
cout << "请选择改装部位:";
cin >> op;
if (op == 0) break;
if (op == 1) {
cout << "\n===== 枪口配件 =====" << endl;
for (int i = 0; i < muzzles.size(); i++)
cout << i+1 << ". " << muzzles[i].name << " 价格:" << muzzles[i].price << " | " << muzzles[i].desc << endl;
cout << "选择配件编号:";
cin >> pIdx;
if (pIdx < 1 || pIdx > muzzles.size()) { cout << "无效选择!\n"; system("pause"); continue; }
Part p = muzzles[pIdx-1];
if (player.money < p.price) { cout << "金币不足!\n"; system("pause"); continue; }
player.money -= p.price;
w.muzzle = p;
}
else if (op == 2) {
cout << "\n===== 弹匣配件 =====" << endl;
for (int i = 0; i < mags.size(); i++)
cout << i+1 << ". " << mags[i].name << " 价格:" << mags[i].price << " | " << mags[i].desc << endl;
cout << "选择配件编号:";
cin >> pIdx;
if (pIdx < 1 || pIdx > mags.size()) { cout << "无效选择!\n"; system("pause"); continue; }
Part p = mags[pIdx-1];
if (player.money < p.price) { cout << "金币不足!\n"; system("pause"); continue; }
player.money -= p.price;
w.mag = p;
}
else if (op == 3) {
cout << "\n===== 瞄准镜 =====" << endl;
for (int i = 0; i < sights.size(); i++)
cout << i+1 << ". " << sights[i].name << " 价格:" << sights[i].price << " | " << sights[i].desc << endl;
cout << "选择配件编号:";
cin >> pIdx;
if (pIdx < 1 || pIdx > sights.size()) { cout << "无效选择!\n"; system("pause"); continue; }
Part p = sights[pIdx-1];
if (player.money < p.price) { cout << "金币不足!\n"; system("pause"); continue; }
player.money -= p.price;
w.sight = p;
}
else if (op == 4) {
cout << "\n===== 枪托 =====" << endl;
for (int i = 0; i < stocks.size(); i++)
cout << i+1 << ". " << stocks[i].name << " 价格:" << stocks[i].price << " | " << stocks[i].desc << endl;
cout << "选择配件编号:";
cin >> pIdx;
if (pIdx < 1 || pIdx > stocks.size()) { cout << "无效选择!\n"; system("pause"); continue; }
Part p = stocks[pIdx-1];
if (player.money < p.price) { cout << "金币不足!\n"; system("pause"); continue; }
player.money -= p.price;
w.stock = p;
}
else {
cout << "输入错误!\n";
system("pause");
continue;
}
w.hasModify = true;
cout << "\n配件安装成功!" << endl;
system("pause");
}
}
// 对局系统:新增回血功能
void startBattle(Account& player) {
system("cls");
cout << "===================================" << endl;
cout << " 对局开始!" << endl;
cout << "===================================" << endl;
string mapName;
int mapRewardRate = 100;
switch (currentMap) {
case 1: mapName = "零号大坝"; mapRewardRate = 100; break;
case 2: mapName = "长弓溪谷"; mapRewardRate = 105; break;
case 3: mapName = "巴克什"; mapRewardRate = 130; break;
case 4: mapName = "航天基地"; mapRewardRate = 160; break;
case 5: mapName = "灰色荒漠"; mapRewardRate = 150; break;
case 6: mapName = "码头危机"; mapRewardRate = 115; break;
default: mapName = "未知区域"; mapRewardRate = 100;
}
string diffName;
int enemyHp = 100;
int enemyDmgMin = 10, enemyDmgMax = 20;
int rewardBase = 3000;
switch (currentDifficulty) {
case 1:
diffName = "简单";
enemyHp = 70;
enemyDmgMin = 8; enemyDmgMax = 15;
rewardBase = 2000;
break;
case 2:
diffName = "普通";
enemyHp = 100;
enemyDmgMin = 15; enemyDmgMax = 25;
rewardBase = 3500;
break;
case 3:
diffName = "困难";
enemyHp = 150;
enemyDmgMin = 20; enemyDmgMax = 35;
rewardBase = 5000;
break;
case 4:
diffName = "机密";
enemyHp = 220;
enemyDmgMin = 30; enemyDmgMax = 50;
rewardBase = 7500;
break;
case 5:
diffName = "梦魇";
enemyHp = 300;
enemyDmgMin = 40; enemyDmgMax = 70;
rewardBase = 12000;
break;
default:
diffName = "普通";
enemyHp = 100;
enemyDmgMin = 15; enemyDmgMax = 25;
rewardBase = 3500;
}
cout << "地图:" << mapName << endl;
cout << "难度:" << diffName << endl;
cout << "敌人初始血量:" << enemyHp << endl;
system("pause");
int hp = 100;
int eHp = enemyHp;
bool win = false;
while (true) {
system("cls");
cout << "========== 【" << mapName << "】对局中 ==========" << endl;
cout << "难度:" << diffName << endl;
cout << "你的血量:" << hp << "/100" << endl;
cout << "敌人血量:" << eHp << endl;
// 新增选项:4. 使用药品回血
cout << "1. 搜索物资 2. 主动交火 3. 立即撤离 4. 使用药品回血" << endl;
cout << "请选择行动:";
int op;
cin >> op;
if (op == 1) {
int getMoney = rand() % 4000 + 1500;
getMoney = getMoney * mapRewardRate / 100;
player.money += getMoney;
cout << "\n搜索成功!获得 " << getMoney << " 金币!" << endl;
}
else if (op == 2) {
cout << "\n交火开始!" << endl;
int myDmg = rand() % 35 + 25;
int eDmg = rand() % (enemyDmgMax - enemyDmgMin + 1) + enemyDmgMin;
hp -= eDmg;
eHp -= myDmg;
cout << "你造成伤害:" << myDmg << endl;
cout << "敌人造成伤害:" << eDmg << endl;
if (hp <= 0) {
cout << "\n你被击败!对局失败!" << endl;
break;
}
if (eHp <= 0) {
cout << "\n成功淘汰敌人!" << endl;
win = true;
break;
}
}
else if (op == 3) {
cout << "\n安全撤离!" << endl;
win = true;
break;
}
else if (op == 4) {
// 回血逻辑,血量上限100
int heal = rand() % 25 + 15;
hp += heal;
hp = min(hp, 100); // 血量不超过100
cout << "\n使用急救包,恢复 " << heal << " 点血量!当前血量:" << hp << endl;
}
else {
cout << "\n无效操作!" << endl;
}
system("pause");
}
// 对局结算
cout << "\n===================================" << endl;
if (win) {
cout << "对局胜利!成功撤离!" << endl;
int reward = (rand() % rewardBase + rewardBase) * mapRewardRate / 100;
player.money += reward;
cout << "获得结算奖励:" << reward << " 金币" << endl;
cout << "任务【成功撤离】已完成!" << endl;
} else {
int lose = min(player.money, mapRewardRate * 25);
player.money -= lose;
cout << "对局失败!损失 " << lose << " 金币" << endl;
}
cout << "当前金币:" << player.money << endl;
cout << "===================================" << endl;
system("pause");
}