小游戏
2025-09-12 14:04:27
发布于:浙江
第二代正式出场啦
教程
由于代码过多所以我分两次发
有bug更我说哈
提示:请勿把坐标中的任意一个到0以下
后续
#include <bits/stdc++.h>
#include <windows.h>
#include <iostream>
#include <math.h>
#include <vector>
#include <map>
#include <atomic>
#include <windows.h>
#include <chrono>
#include <algorithm>
int xixie = 0;
using namespace std;
char bb[40][40] = {};
int beidong = 0, beidongcf = 4;
float yousheng = 0, youbao = 0, youbaos = 0, cishu, kulebi, xing = 7;
bool quanxue = false, xiaofen = false, taoqiwanzi = false;
int chao = 0, dichao = 0, xingg = 0, zhiwuwu = 0, cheng = 1, erchi = 4, xishu = 1, aaaa = 0, wuchuan = 0, fachuan = 0, diwuchuan = 0, difachuan = 0;
string duan[1000] = { "黑铁", "青铜", "白银", "黄金", "铂金", "钻石", "传说"};
int shengxing[1000] = {250, 450, 600, 650, 750, 800, 900};
int zhi1 = 0, zhi2 = 0, zhi3 = 0, zhi4 = 0;
int dachi = 0, mu = 0, difakang = 0, diwukang = 0, fakang = 0, wukang = 0;
int zhifa = 0, zhiwu = 0, ci = 1, he, difacd = 13;
int sheng = 455, fen2 = 150, quan = 0, zengshang = 1, fagong = 64, cdd = 0, cd1 = 0, cd2 = 0, shengda = 0, o[36], lu, luojin = 1, oi = 0, oj = 0, ri = 5, rj = 5, pu = 0, wugong = 64, chi = 2, hui = 0, xul = 0, cdp = 0, wei = 0, weis = 0, pujia = 0, fabao1 = 0, fabaos1 = 50, wubao1 = 0, wubaos1 = 50, fabao2 = 0, fabaos2 = 0, wubao2 = 0, wubaos2 = 0;
int i = 3, jiandian = 0, tongli = 0, neng = 0, zhi = 0, shengmax = 455, b = 0, jian = 0, yong = 2, ji = 1, da = 150;
bool zhuan1 = false, zhuan2 = false, jingda = false, ying = false, xu = false, nengn = false, zhuanlan = false, zhuanhei = false, miao = false, cai = false;
bool zhuan3 = false, zhuan4 = false, zhuan6 = false, tiaobu = false;
int dishengmax, disheng = 455, diwugong = 64, difagong = 64, dcd1 = 0, dcd2 = 0, dcdd = 0, jiadian = 0, tong = 0, pue = 0, xi = 0, jie = 0;
int dungeonFloor = 1;
bool dungeonSpecialEvent = false;
int dungeonBossFight = 0; // 0=普通,1=小boss,2=大boss
struct AttributeBonus {
string name;
string description;
void (*applyBonus)();
} bonusOptions[3] = {
{
"攻击强化", "物理攻击+25,法术攻击+20", []() {
wugong += 25;
fagong += 25;
cout << "攻击力提升了!\n";
}
},
{
"防御提升", "生命上限+150,物理抗性+10", []() {
shengmax += 150;
wukang += 10;
sheng += 150;
cout << "防御能力增强了!\n";
}
},
{
"全能成长", "所有属性小幅提升", []() {
wugong += 15;
fagong += 15;
shengmax += 100;
wukang += 6;
fakang += 6;
sheng += 100;
cout << "整体实力提升了!\n";
}
}
};
// 初始化地牢层
void initDungeonFloor() {
system("cls");
cout << "=====================\n";
cout << " 地牢第 " << dungeonFloor << " 层 \n";
cout << "=====================\n\n";
// 设置敌人属性 (根据层数增加难度)
dishengmax = 500 + dungeonFloor * 130 + ((dungeonFloor / 3) * 170);
diwugong = 100 + dungeonFloor * 14 + ((dungeonFloor / 3) * 5);
difagong = 95 + dungeonFloor * 9;
disheng = dishengmax;
diwukang = 6 + dungeonFloor;
difakang = 6 + dungeonFloor;
// 判断是否是BOSS层
dungeonBossFight = 0;
if (dungeonFloor % 10 == 0) {
dungeonBossFight = 2;
cout << "警告!大BOSS出现!\n";
dishengmax *= 3;
diwugong *= 2;
difagong *= 2;
} else if (dungeonFloor % 5 == 0) {
dungeonBossFight = 1;
cout << "注意!小BOSS出现!\n";
dishengmax *= 2;
diwugong *= 1.5;
difagong *= 1.5;
}
disheng = dishengmax;
// 重置玩家状态
xing = 6;
sheng = shengmax;
cd1 = cd2 = cdd = cdp = 0;
cdd = 0;
xul = wei = 0;
hui = 0;
// 10%几率触发特殊事件
dungeonSpecialEvent = (rand() % 10 == 0);
if (dungeonSpecialEvent) {
cout << "本层有特殊事件!击败敌人可获得额外奖励\n";
}
Sleep(2000);
}
// 显示属性加成选择
void showAttributeBonusSelection() {
system("cls");
cout << "=====================\n";
cout << " 选择属性加成 \n";
cout << "=====================\n\n";
for (int i = 0; i < 3; i++) {
cout << i + 1 << ". " << bonusOptions[i].name << "\n " << bonusOptions[i].description << "\n\n";
}
cout << "0. 跳过选择\n\n";
cout << "请选择加成(1-3): ";
}
// 检查地牢效果
void checkDungeonEffects() {
// 处理回合计数器递减
if (erchi > 0) erchi--;
if (dachi > 0) dachi--;
// 处理敌人中毒效果
if (diwuchuan > 0 && kulebi > 0) {
float poisonDamage = dishengmax * kulebi;
disheng -= poisonDamage;
diwuchuan--;
cout << "敌人因中毒失去了" << poisonDamage << "生命值!\n";
Sleep(1000);
}
// 处理临时属性恢复
if (erchi == 0) {
if (wei > 0) {
wei = 0;
cout << "技能伤害加成效果已消失\n";
}
if (hui > 0) {
hui = 0;
cout << "吸血效果已消失\n";
}
}
// 重置敌人的临时抗性变化
if (dachi == 0) {
if (diwukang < 0) diwukang = 5 + dungeonFloor / 3;
if (difakang < 0) difakang = 5 + dungeonFloor / 3;
}
}
// 敌人行动回合
void enemyTurn() {
cout << "\n敌人回合:\n";
// Boss特殊技能
if (dungeonBossFight == 2 && rand() % 3 == 0) { // 大boss技能
cout << "大BOSS释放了毁灭性打击!\n";
int damage = max(1, (int)(diwugong * 3 - wukang));
sheng -= damage;
cout << "你受到了 " << damage << " 点伤害!\n";
} else if (dungeonBossFight == 1 && rand() % 4 == 0) { // 小boss技能
cout << "小BOSS释放了强力攻击!\n";
int damage = max(1, (int)(diwugong * 2 - wukang));
sheng -= damage;
cout << "你受到了 " << damage << " 点伤害!\n";
} else { // 普通攻击
int damage = max(1, (int)(diwugong - wukang));
sheng -= damage;
cout << "敌人对你造成了 " << damage << " 点伤害!\n";
}
// 特殊事件效果
if (dungeonSpecialEvent) {
if (rand() % 5 == 0) {
cout << "特殊事件触发:敌人被神秘力量削弱了!\n";
diwugong -= 10;
difagong -= 10;
}
}
Sleep(1500);
}
// 地牢战斗主循环
void dungeonBattle() {
initDungeonFloor();
// 显示属性加成选择
showAttributeBonusSelection();
int bonusChoice;
cin >> bonusChoice;
if (bonusChoice > 0 && bonusChoice <= 3) {
bonusOptions[bonusChoice - 1].applyBonus();
Sleep(1500);
}
// 战斗循环
while (true) {
system("cls");
cout << "=====================\n";
cout << " 地牢第 " << dungeonFloor << " 层 - 战斗\n";
cout << "=====================\n\n";
cout << "你的生命: " << sheng << "/" << shengmax << "\n";
cout << "敌人生命: " << disheng << "/" << dishengmax << "\n";
cout << "行动点: " << xing << "\n\n";
// 检查地牢效果
checkDungeonEffects();
// 战斗结果判断
if (sheng <= 0) {
cout << "你在地牢第 " << dungeonFloor << " 层被击败了!\n";
Sleep(3000);
break;
}
if (disheng <= 0) {
cout << "你击败了地牢第 " << dungeonFloor << " 层的敌人!\n";
int starsEarned = 1 + dungeonBossFight;
cout << "获得 " << starsEarned << " 颗星!\n";
if (dungeonSpecialEvent) {
cout << "完成特殊事件!获得额外属性提升!\n";
// 随机提升一项属性
int randomBonus = rand() % 3;
bonusOptions[randomBonus].applyBonus();
}
dungeonFloor++;
if (dungeonFloor > 50) {
cout << "恭喜你通关了地牢50层!\n";
dungeonFloor = 1;
}
Sleep(3000);
break;
}
// 玩家行动选择
cout << "选择行动:\n";
cout << "1. 普攻 (" << (cdp <= 0 ? "可用" : "冷却中") << ")\n";
cout << "2. 技能1 (" << (cd1 <= 0 ? "可用" : "冷却中") << ")\n";
cout << "3. 技能2 (" << (cd2 <= 0 ? "可用" : "冷却中") << ")\n";
cout << "4. 大招 (" << (cdd <= 0 && !jingda ? "可用" : "不可用") << ")\n";
cout << "5. 使用特殊攻击(消耗3行动点)\n";
cout << "0. 逃跑(放弃本层奖励)\n";
int choice;
cin >> choice;
// 处理玩家选择
switch (choice) {
case 1: // 普攻
if (cdp <= 0) {
float damage = wugong * (1.0 + xul / 100.0) - diwukang;
damage = max(1.0f, damage);
disheng -= damage;
// 吸血效果
if (hui > 0) {
int heal = damage * hui / 100.0;
sheng = min(shengmax, sheng + heal);
cout << "你造成了 " << damage << " 点伤害,并恢复了 " << heal << " 点生命!\n";
} else {
cout << "你造成了 " << damage << " 点伤害!\n";
}
cdp = 1; // 普攻冷却
xing--;
} else {
cout << "普攻还在冷却中!\n";
}
break;
case 2: // 技能1
if (cd1 <= 0) {
float damage = fagong * (1.0 + wei / 100.0) * 1.5 - difakang;
damage = max(1.0f, damage);
disheng -= damage;
cout << "你释放技能1造成了 " << damage << " 点伤害!\n";
cd1 = 3;
xing -= 2;
} else {
cout << "技能1还在冷却中!\n";
}
break;
case 3: // 技能2
if (cd2 <= 0) {
// 给敌人添加中毒效果
diwuchuan = 3;
kulebi = 0.05;
cout << "你对敌人施加了中毒效果,敌人将每回合失去5%最大生命值!\n";
cd2 = 4;
xing -= 2;
} else {
cout << "技能2还在冷却中!\n";
}
break;
case 4: // 大招
if (cdd <= 0) {
float damage = (wugong + fagong) * 2.5;
disheng -= damage;
cout << "你释放大招造成了 " << damage << " 点伤害!\n";
cdd = 5;
jingda = true;
xing = 0; // 用完所有行动点
} else {
cout << "大招不可用!\n";
}
break;
case 5: // 特殊攻击
if (xing >= 3) {
float damage = (wugong + fagong) * 1.8 - (diwukang + difakang) / 2;
damage = max(1.0f, damage);
disheng -= damage;
cout << "你使用特殊攻击造成了 " << damage << " 点伤害!\n";
xing -= 3;
} else {
cout << "行动点不足!\n";
}
break;
case 0: // 逃跑
cout << "你放弃了地牢第 " << dungeonFloor << " 层的挑战。\n";
Sleep(2000);
return;
shengmax -= 100;
sheng -= 100;
wugong -= 20;
fagong -= 20;
wukang -= 4;
fakang -= 4;
default:
cout << "无效的选择!\n";
}
// 敌人行动
if (disheng > 0 && xing <= 0) {
enemyTurn();
enemyTurn();
xing = 4; // 重置行动点
jingda = false; // 重置大招标记
}
// 冷却时间减少
if (cd1 > 0) cd1--;
if (cd2 > 0) cd2--;
if (cdd > 0) cdd--;
if (cdp > 0) cdp--;
Sleep(1500);
}
}
int realmLevel; // 修仙境界等级
int realmStage; // 当前境界的阶段
string realmName; // 境界名称
int spiritualRoot; // 灵根品质 1-5
int cultivationExp; // 修炼经验值
int spiritualPower; // 灵力值
int maxSpiritualPower; // 最大灵力值
int mentalPower; // 神识强度
int bodyTempering; // 肉身强度
vector<string> techniques; // 掌握的功法
int pills; // 丹药数量
int treasures; // 法宝数量
int evilValue; // 邪念值
void tutorialBattle() {
cout << "\n==== 实战训练 ====\n";
cout << "PS:我用小黑的普攻和技能\n";
Sleep(1500);
int ddishengmax = 200; // 简易敌人
oi = 3;
oj = 3;
xing = 6;
cout << "目前坐标(" << oi << "," << oj << ")\n";
cout << "剩余行动点" << xing << endl;
cout << "敌方血量" << ddishengmax << endl;
cout << "输入W向前移动\n";
for (;;) {
char shu;
cin >> shu;
if (shu == 'w') {
oj++;
xing--;
break;
} else {
cout << "请按新手教程来\n";
}
}
Sleep(1000);
system("cls");
cout << "目前坐标(" << oi << "," << oj << ")\n";
cout << "剩余行动点" << xing << endl;
cout << "敌方血量" << ddishengmax << endl;
cout << "输入0进行普攻\n";
for (;;) {
char shu;
cin >> shu;
if (shu == '0') {
xing--;
ddishengmax -= wugong;
break;
} else {
cout << "请按新手教程来\n";
}
}
system("cls");
cout << "目前坐标(" << oi << "," << oj << ")\n";
cout << "剩余行动点" << xing << endl;
cout << "敌方血量" << ddishengmax << endl;
cout << "输入1释放一技能\n";
for (;;) {
char shu;
cin >> shu;
if (shu == '1') {
xing--;
ddishengmax -= (wugong * 1.2 + 30);
break;
} else {
cout << "请按新手教程来\n";
}
}
system("cls");
cout << "目前坐标(" << oi << "," << oj << ")\n";
cout << "剩余行动点" << xing << endl;
cout << "敌方血量" << ddishengmax << endl;
cout << "输入2释放一技能\n";
for (;;) {
char shu;
cin >> shu;
if (shu == '2') {
xing--;
cout << "你开启了隐身";
Sleep(1200);
break;
} else {
cout << "请按新手教程来\n";
}
}
cout << "目前坐标(" << oi << "," << oj << ")\n";
cout << "剩余行动点" << xing << endl;
cout << "敌方血量" << ddishengmax << endl;
cout << "输入0释放强普\n";
for (;;) {
char shu;
cin >> shu;
if (shu == '0') {
xing--;
ddishengmax -= wugong * 1.55;
break;
} else {
cout << "请按新手教程来\n";
}
}
Sleep(1000);
cout << "你赢了\n";
Sleep(500);
cout << "抽天赋\n";
}
void showTutorial(int step) {
system("cls");
switch (step) {
case 1:
cout << "★ 欢迎来到郑文越战争 ★\n";
cout << "使用WASD移动,数字键释放技能\n";
break;
case 2:
cout << "◆ 战斗要领 ◆\n";
cout << "黄铜段位敌人血量:" << 455 + mu * 275 << endl;
cout << "你的普攻伤害:" << wugong << endl;
break;
case 3:
cout << "? 天赋系统 ?\n";
cout << "胜利后会随机获得强化天赋\n";
break;
default:
tutorialBattle();
}
Sleep(2000);
}
struct SaveData {
// 基础属性
int chao, dichao, xingg, zhiwuwu, cheng, erchi;
int zhi1, zhi2, zhi3, zhi4;
int mu;
int shengmax, fagong, wugong, xishu;
int b; // 当前角色
// 特殊状态
bool zhuan1, zhuan2, zhuan3, zhuan4;
bool jingda, ying, xu, nengn;
bool zhuanlan, zhuanhei, miao, cai;
int fabao1, fabaos1, wubao1, wubaos1; // 暴击率和暴击伤害
int fabao2, fabaos2, wubao2, wubaos2; // 额外暴击属性
// 天赋相关
int xul, shengda, hui, quan, he;
int dishengmax, difagong, diwugong;
int fen2; // 小粉的爆炸箭伤害
int xi; // 淘气丸子的伤害系数
int da; // 劝学小子的真理脉冲伤害加成
int jie; // 节节高的血量加成
int pujia, ci, jiandian;
int wukang, fakang, diwukang, difakang;
int yousheng, youbao, youbaos, cishu;
int ji;
float kulebi;
int realmLevel;
int realmStage;
int spiritualRoot;
int cultivationExp;
int spiritualPower;
int maxSpiritualPower;
int mentalPower;
int bodyTempering;
int pills;
int treasures;
int evilValue;
bool tiaobu;
int xixie;
};
// 改进后的saveGame函数
void saveGame() {
ofstream outFile("game_save.dat", ios::binary);
if (!outFile) {
cout << "存档失败! 无法创建存档文件" << endl;
Sleep(1000);
return;
}
// 使用结构体初始化列表一次性赋值
// 修正后的初始化列表(重点关注 dishengmax 的位置)
SaveData save = {
chao, dichao, xingg, zhiwuwu, cheng, erchi,
zhi1, zhi2, zhi3, zhi4,
mu,
shengmax, fagong, wugong, xishu,
b,
zhuan1, zhuan2, zhuan3, zhuan4,
jingda, ying, xu, nengn,
zhuanlan, zhuanhei, miao, cai,
fabao1, fabaos1, wubao1, wubaos1,
fabao2, fabaos2, wubao2, wubaos2,
xul, shengda, hui, quan, he,
dishengmax, difagong, diwugong, // 敌方属性应该放在这里
da, fen2, xi, jie,
pujia, ci, jiandian,
wukang, fakang, diwukang, difakang,
yousheng, youbao, youbaos, cishu, ji, kulebi, realmLevel, realmStage, spiritualRoot, cultivationExp, spiritualPower, maxSpiritualPower, mentalPower, bodyTempering, pills, evilValue,
tiaobu, xixie
};
outFile.write((char*)&save, sizeof(SaveData));
outFile.close();
// 获取当前路径
char buffer[MAX_PATH];
GetCurrentDirectoryA(MAX_PATH, buffer);
cout << "游戏已保存到: " << buffer << "\\game_save.dat" << endl;
Sleep(1500);
}
// 改进后的loadGame函数
bool loadGame() {
ifstream inFile("game_save.dat", ios::binary);
if (!inFile) {
cout << "没有找到存档文件! 将开始新游戏" << endl;
Sleep(1500);
return false;
}
SaveData save;
inFile.read((char*)&save, sizeof(SaveData));
inFile.close();
// 恢复游戏数据
chao = save.chao;
dichao = save.dichao;
xingg = save.xingg;
zhiwuwu = save.zhiwuwu;
cheng = save.cheng;
erchi = save.erchi;
zhi1 = save.zhi1;
zhi2 = save.zhi2;
zhi3 = save.zhi3;
zhi4 = save.zhi4;
mu = save.mu;
shengmax = save.shengmax;
fagong = save.fagong;
wugong = save.wugong;
xishu = save.xishu;
b = save.b;
zhuan1 = save.zhuan1;
zhuan2 = save.zhuan2;
zhuan3 = save.zhuan3;
zhuan4 = save.zhuan4;
jingda = save.jingda;
ying = save.ying;
xu = save.xu;
nengn = save.nengn;
zhuanlan = save.zhuanlan;
zhuanhei = save.zhuanhei;
miao = save.miao;
cai = save.cai;
xul = save.xul;
shengda = save.shengda;
hui = save.hui;
quan = save.quan;
he = save.he;
pujia = save.pujia;
ci = save.ci;
jiandian = save.jiandian;
dishengmax = save.dishengmax;
difagong = save.difagong;
diwugong = save.diwugong;
da = save.da;
fen2 = save.fen2;
xi = save.xi;
jie = save.jie;
fabao1 = save.fabao1;
fabaos1 = save.fabaos1;
wubao1 = save.wubao1;
wubaos1 = save.wubaos1;
fabao2 = save.fabao2;
fabaos2 = save.fabaos2;
wubao2 = save.wubao2;
wubaos2 = save.wubaos2;
yousheng = save.yousheng;
youbao = save.youbao;
youbaos = save.youbaos;
cishu = save.cishu;
ji = save.ji;
kulebi = save.kulebi;
realmLevel = save.realmLevel;
realmStage = save.realmStage;
spiritualRoot = save.spiritualRoot;
cultivationExp = save.cultivationExp;
spiritualPower = save.spiritualPower;
maxSpiritualPower = save.maxSpiritualPower;
mentalPower = save.mentalPower;
bodyTempering = save.bodyTempering;
pills = save.pills;
treasures = save.treasures;
evilValue = save.evilValue;
tiaobu = save.tiaobu;
xixie = save.xixie;
cout << "游戏已成功加载! 当前段位: " << duan[mu] << mu << "段 " << xingg << "星" << endl;
cout << "保存时的敌方血量上限: " << save.dishengmax << " 物抗和法抗" << save.diwukang << " " << save.difakang << endl;
cout << "自己属性:shengmax" << shengmax << "\n" << "物理伤害" << wugong << "\n威力代价增伤" << wei << "%\n" << "蓄力重击增" << xul << "%\n";
Sleep(1500);
return true;
}
void j() {
if (nengn == true) {
fagong = fagong + shengmax / 20 - zhi;
zhi = shengmax / 20;
}
}
void leifa() {
if (disheng < dishengmax / 2 && difacd <= 0) {
cout << "对面使用雷罚(-1行动点)\n";
xing -= 1;
cout << "对方用普攻对你造成了" << diwugong << "点伤害\n";
sheng -= diwugong;
difacd = 13;
Sleep(1000);
}
}
void jia(int x) {
system("cls");
cout << " / / ____/____ \n";
cout << " / ----/-- / \\ \n";
cout << " /| / / \\ \n";
cout << " / |-----/------- / \\ \n";
cout << " | /_____ ________________ \n";
cout << " | / | \n";
cout << " | 丶 / 口 | \n";
cout << " | 丶 丶| \n";
printf("%24d", xingg);
cout << " 星";
xingg += x;
Sleep(1000);
system("cls");
cout << " / / ____/____ \n";
cout << " / ----/-- / \\ \n";
cout << " /| / / \\ \n";
cout << " / |-----/------- / \\ \n";
cout << " | /_____ ________________ \n";
cout << " | / | \n";
cout << " | 丶 / 口 | \n";
cout << " | 丶 丶| \n";
printf("%24d", xingg);
cout << " \n\n";
if (xingg < 0) {
mu--;
xing += 1000;
}
}
void fawu() {
if (b == 1 && miao == true) {
fabaos1 = fabao1 + fagong / 8 - zhi2;
zhi2 = fagong / 8;
} else if (b >= 2 && miao == true) {
wubaos1 = wubaos1 + wugong / 8 - zhi1;
zhi1 = wugong / 8;
wubao1 += wugong / 40;
wubao1 -= zhiwu;
zhi1 = wugong / 40;
}
}
string REALM_NAMES[100] = {"凡人", "练气", "筑基", "金丹", "元婴", "化神", "炼虚", "合体", "大乘", "渡劫"};
string SPIRITUAL_ROOT_NAMES[100] = {"废灵根", "伪灵根", "真灵根", "天灵根", "仙灵根"};
string TECHNIQUE_NAMES[100] = {"基础吐纳法", "五行诀", "御剑术", "炼丹术", "火球术", "冰心诀", "遁地术", "金刚护体", "炼器术", "摄魂大法"};
// 修仙模式主菜单
// 显示修仙状态
void showCultivationStatus() {
system("cls");
cout << "=====================\n";
cout << " 修仙属性 \n";
cout << "=====================\n\n";
cout << "境界: " << realmName;
if (realmLevel > 0) {
cout << " " << realmStage + 1 << "层";
}
cout << endl;
cout << "灵根: " << SPIRITUAL_ROOT_NAMES[spiritualRoot - 1] << endl;
cout << "灵力: " << spiritualPower << "/" << maxSpiritualPower << endl;
cout << "神识: " << mentalPower << endl;
cout << "肉身: " << bodyTempering << endl;
cout << "修炼经验: " << cultivationExp << "/" << (realmLevel + 1) * (1000 + pow(realmLevel, 8)) << endl;
cout << "丹药: " << pills << " 法宝: " << treasures << endl;
cout << "邪念值: " << evilValue << "/100" << endl;
cout << "\n掌握的功法:\n";
if (techniques.empty()) {
cout << "无\n";
} else {
for (const auto& tech : techniques) {
cout << "- " << tech << endl;
}
}
Sleep(3000);
}
// 修炼功能
void cultivationPractice() {
system("cls");
cout << "=====================\n";
cout << " 修炼提升 \n";
cout << "=====================\n\n";
int gain = 50 + rand() % 50;
gain *= (1 + spiritualRoot * 0.2); // 灵根影响
cout << "你开始打坐修炼...\n";
Sleep(1500);
// 检查是否有修炼功法加成
bool hasTechnique = false;
for (const auto& tech : techniques) {
if (tech == "基础吐纳法") {
gain *= 1.2;
hasTechnique = true;
} else if (tech == "五行诀") {
gain *= 1.5;
hasTechnique = true;
}
}
if (!hasTechnique) {
cout << "警告: 你还没有掌握任何修炼功法,效率低下!\n";
gain *= 0.5;
}
cultivationExp += gain;
spiritualPower = min(spiritualPower + 10, maxSpiritualPower);
cout << "获得了 " << gain << " 点修炼经验!\n";
cout << "恢复了 10 点灵力!\n";
// 检查是否可以达到突破条件
int requiredExp = (realmLevel + 1) * 1000;
if (cultivationExp >= requiredExp) {
cout << "\n你的修为已达瓶颈,可以考虑渡劫突破了!\n";
}
Sleep(2000);
}
// 学习功法
void learnTechniques() {
system("cls");
cout << "=====================\n";
cout << " 学习功法 \n";
cout << "=====================\n\n";
// 检查是否可以学习新功法
int maxTechniques = 2 + realmLevel / 2;
if (techniques.size() >= maxTechniques) {
cout << "你的修为不足以掌握更多功法了!\n";
cout << "需要突破到更高境界才能学习新功法。\n";
Sleep(2000);
return;
}
// 随机生成可学习的功法
vector<string> availableTechs;
for (const auto& tech : TECHNIQUE_NAMES) {
// 检查是否已经学习过
bool learned = false;
for (const auto& playerTech : techniques) {
if (tech == playerTech) {
learned = true;
break;
}
}
// 检查学习条件
if (!learned) {
if (tech == "基础吐纳法") {
availableTechs.push_back(tech);
} else if (tech == "五行诀" && realmLevel >= 1) {
availableTechs.push_back(tech);
} else if (tech == "御剑术" && realmLevel >= 2) {
availableTechs.push_back(tech);
} else if (tech == "炼丹术" && realmLevel >= 3) {
availableTechs.push_back(tech);
} else if (tech == "火球术" && realmLevel >= 3) {
availableTechs.push_back(tech);
} else if (tech == "冰心术" && realmLevel >= 4) {
availableTechs.push_back(tech);
} else if (tech == "遁地术" && realmLevel >= 5) {
availableTechs.push_back(tech);
} else if (tech == "金刚护体" && realmLevel >= 6) {
availableTechs.push_back(tech);
}
}
}
if (availableTechs.empty()) {
cout << "当前没有可以学习的新功法!\n";
Sleep(1000);
return;
}
cout << "可学习的功法:\n";
for (int i = 0; i < availableTechs.size(); i++) {
cout << i + 1 << ". " << availableTechs[i] << endl;
}
cout << "\n选择要学习的功法(0取消): ";
int choice;
cin >> choice;
if (choice > 0 && choice <= availableTechs.size()) {
string selectedTech = availableTechs[choice - 1];
int cost = 30 * (techniques.size() + 1);
if (spiritualPower >= cost) {
spiritualPower -= cost;
techniques.push_back(selectedTech);
cout << "成功学会了 " << selectedTech << "!\n";
} else {
cout << "灵力不足,无法学习功法!\n";
}
}
Sleep(1500);
}
// 炼制丹药
void refinePills() {
system("cls");
cout << "=====================\n";
cout << " 炼制丹药 \n";
cout << "=====================\n\n";
// 检查是否掌握炼丹术
bool hasSkill = false;
for (const auto& tech : techniques) {
if (tech == "炼丹术") {
hasSkill = true;
break;
}
}
if (!hasSkill) {
cout << "你还没有掌握炼丹术,无法炼制丹药!\n";
Sleep(1500);
return;
}
// 检查灵力是否足够
int cost = 40;
if (spiritualPower < cost) {
cout << "灵力不足,无法炼丹!\n";
Sleep(1000);
return;
}
spiritualPower -= cost;
// 炼丹结果
int successRate = 50 + realmLevel * 10;
if (rand() % 100 < successRate) {
int pillsGained = 1 + rand() % 2;
pills += pillsGained;
cout << "炼丹成功! 获得了 " << pillsGained << " 颗丹药!\n";
} else {
cout << "炼丹失败! 材料化为灰烬...\n";
}
Sleep(1500);
}
// 锻造法宝
void forgeTreasures() {
system("cls");
cout << "=====================\n";
cout << " 锻造法宝 \n";
cout << "=====================\n\n";
// 检查是否掌握炼器术
bool hasSkill = false;
for (const auto& tech : techniques) {
if (tech == "炼器术") {
hasSkill = true;
break;
}
}
if (!hasSkill) {
cout << "你还没有掌握炼器术,无法锻造法宝!\n";
Sleep(1500);
return;
}
// 检查灵力是否足够
int cost = 60;
if (spiritualPower < cost) {
cout << "灵力不足,无法炼器!\n";
Sleep(1000);
return;
}
spiritualPower -= cost;
// 炼器结果
int successRate = 40 + realmLevel * 8;
if (rand() % 100 < successRate) {
treasures++;
cout << "炼器成功! 获得了一件新法宝!\n";
// 小概率获得强力法宝
if (rand() % 20 == 0) {
treasures++;
cout << "机缘巧合,你额外获得了一件强力法宝!\n";
}
} else {
cout << "炼器失败! 材料损毁了...\n";
}
Sleep(1500);
}
// 挑战秘境
void challengeDungeon() {
system("cls");
cout << "=====================\n";
cout << " 挑战秘境 \n";
cout << "=====================\n\n";
cout << "1. 简单秘境 (适合练气期)\n";
cout << "2. 中等秘境 (适合筑基期)\n";
cout << "3. 困难秘境 (适合金丹期)\n";
cout << "4. 极难秘境 (适合元婴期及以上)\n";
cout << "0. 返回\n\n";
cout << "选择要挑战的秘境: ";
int choice;
cin >> choice;
if (choice < 1 || choice > 4) return;
// 秘境难度设置
int basePower = realmLevel * 20 + realmStage * 5;
int enemyPower = basePower * (choice * 20 + rand() % 30);
int rewardExp = choice * 100 + rand() % 100;
int rewardItems = choice;
system("cls");
cout << "秘境挑战开始...\n";
Sleep(1000);
// 战斗模拟
int playerAttack = (spiritualPower + mentalPower + bodyTempering) / 2 * 1.5;
playerAttack += treasures * 15;
int enemyHealth = enemyPower * 3;
int playerHealth = bodyTempering * 10;
bool usedPills = false;
while (enemyHealth > 0 && playerHealth > 0) {
// 玩家回合
system("cls");
cout << "你的生命: " << playerHealth << "\n";
cout << "敌人生命: " << enemyHealth << "\n\n";
cout << "选择行动:\n";
cout << "1. 普通攻击\n";
cout << "2. 使用功法\n";
if (pills > 0 && !usedPills) {
cout << "3. 服用丹药(恢复50%生命)\n";
}
cout << "0. 逃跑\n\n";
cout << "选择: ";
int action;
cin >> action;
if (action == 0) {
cout << "你逃离了秘境...\n";
Sleep(1500);
return;
}
// 处理玩家行动
int damage = 0;
if (action == 1) {
damage = playerAttack * (0.8 + (rand() % 40) / 100.0);
cout << "你对敌人造成了 " << damage << " 点伤害!\n";
} else if (action == 2) {
// 使用功法攻击
if (techniques.empty()) {
cout << "你没有掌握任何功法!\n";
Sleep(1000);
continue;
}
cout << "选择要使用的功法:\n";
for (int i = 0; i < techniques.size(); i++) {
cout << i + 1 << ". " << techniques[i] << endl;
}
int techChoice;
cin >> techChoice;
if (techChoice < 1 || techChoice > techniques.size()) {
cout << "无效选择!\n";
Sleep(1000);
continue;
}
string tech = techniques[techChoice - 1];
if (tech == "火球术") {
damage = playerAttack * (1.5 + (rand() % 50) / 100.0);
} else if (tech == "御剑术") {
damage = playerAttack * (1.8 + (rand() % 40) / 100.0);
} else if (tech == "摄魂大法") {
damage = playerAttack * (2.0 + (rand() % 60) / 100.0);
evilValue += 5;
} else if (tech == "基础吐纳法") {
damage = playerAttack * (1.1 + (rand() % 60) / 100.0);
evilValue += 5;
}
cout << "使用 " << tech << " 造成了 " << damage << " 点伤害!\n";
} else if (action == 3 && pills > 0 && !usedPills) {
playerHealth += bodyTempering * 5;
pills--;
usedPills = true;
cout << "服用丹药恢复了生命!\n";
Sleep(1000);
continue;
} else {
cout << "无效行动!\n";
Sleep(1000);
continue;
}
enemyHealth -= damage;
if (enemyHealth <= 0) break;
// 敌人回合
int enemyDamage = enemyPower * (0.5 + (rand() % 60) / 100.0);
cout << "敌人对你造成了 " << enemyDamage << " 点伤害!\n";
playerHealth -= enemyDamage;
Sleep(1500);
}
// 战斗结果
if (playerHealth <= 0) {
cout << "你被秘境中的敌人击败了!\n";
cultivationExp += rewardExp / 2; // 失败获得一半经验
} else {
cout << "你成功击败了秘境守卫!\n";
cout << "获得 " << rewardExp << " 修炼经验!\n";
cultivationExp += rewardExp;
if (rand() % 3 == 0) {
cout << "获得了 1 颗丹药!\n";
pills++;
}
if (choice >= 3 && rand() % 2 == 0) {
cout << "获得了一件法宝!\n";
treasures++;
}
}
Sleep(2000);
}
// 渡劫突破
void breakthroughRealm() {
system("cls");
cout << "=====================\n";
cout << " 渡劫突破 \n";
cout << "=====================\n\n";
for (;;) {
// 检查是否可以突破
int requiredExp = (realmLevel + 1) * 1000;
if (cultivationExp < requiredExp) {
cout << "你的修为还不足以突破!\n";
cout << "需要 " << requiredExp << " 点修炼经验,当前 " << cultivationExp << " 点。\n";
Sleep(2000);
break;
}
if (realmLevel >= 9 && realmStage >= 9) {
cout << "你已达到最高境界,无法继续突破!\n";
Sleep(1500);
break;
}
cout << "你准备冲击 " << REALM_NAMES[realmLevel + 1] << " 境界...\n";
cout << "突破过程充满危险,需要经历天劫考验。\n\n";
// 计算突破成功率
int successRate = 60 - realmLevel * 6; // 基础成功率
successRate += spiritualRoot * 5; // 灵根加成
successRate += treasures * 2; // 法宝加成
// 使用丹药可以提高成功率
if (pills > 0) {
cout << "你拥有 " << pills << " 颗丹药,使用多少颗来辅助突破?(0-"
<< min(5, pills) << "): ";
int pillsUsed;
cin >> pillsUsed;
if (pillsUsed > 0 && pillsUsed <= pills) {
successRate += pillsUsed * 8;
pills -= pillsUsed;
cout << "使用 " << pillsUsed << " 颗丹药,突破成功率提升!\n";
}
}
cout << "当前突破成功率: " << successRate << "%\n";
cout << "确认开始突破?(y/n): ";
char confirm;
cin >> confirm;
if (confirm != 'y' && confirm != 'Y') {
cout << "取消了突破。\n";
Sleep(1000);
return;
}
cout << "\n开始突破...\n";
Sleep(1500);
// 突破结果
if (rand() % 100 < successRate) {
if (realmStage < realmLevel + 1) {
realmStage++;
} else {
realmLevel++;
realmStage = 1;
}
cout << "恭喜你成功突破到 " << REALM_NAMES[realmLevel + 1] << realmStage << "层" << " 境界!\n";
// 突破奖励
maxSpiritualPower += 50;
spiritualPower = maxSpiritualPower;
mentalPower += 10;
bodyTempering += 10;
bodyTempering *= 1.3;
cultivationExp = 0;
// 灵根有小概率升级
if (rand() % 7 == 0 && spiritualRoot < 5) {
spiritualRoot++;
cout << "你的灵根品质提升为 " << SPIRITUAL_ROOT_NAMES[spiritualRoot - 1] << "!\n";
}
} else {
cout << "突破失败! 受到天劫反噬...\n";
// 突破失败的惩罚
spiritualPower = max(10, spiritualPower - 20);
cultivationExp = max(0, cultivationExp - 200);
// 小概率掉落法宝
if (rand() % 6 == 0 && treasures > 0) {
treasures--;
cout << "在渡劫中损失了一件法宝!\n";
}
}
Sleep(2000);
break;
}
}
void cultivationModeMenu() {
while (1) {
system("cls");
cout << "=====================\n";
cout << " 修仙模式 \n";
cout << "=====================\n\n";
cout << "1. 修炼提升\n";
cout << "2. 学习功法\n";
cout << "3. 炼制丹药\n";
cout << "4. 锻造法宝\n";
cout << "5. 挑战秘境\n";
cout << "6. 渡劫突破\n";
cout << "7. 查看属性\n";
cout << "8. 存档\n";
cout << "9. 读档\n";
cout << "0. 返回主菜单\n\n";
cout << "请选择: ";
int choice;
cin >> choice;
switch (choice) {
case 1:
cultivationPractice();
break;
case 2:
learnTechniques();
break;
case 3:
refinePills();
break;
case 4:
forgeTreasures();
break;
case 5:
challengeDungeon();
break;
case 6:
breakthroughRealm();
break;
case 7:
showCultivationStatus();
break;
case 8:
saveGame();
break;
case 9:
loadGame();
break;
case 0:
return;
default:
cout << "无效选择!\n";
Sleep(1000);
}
}
}
全部评论 11
顶
2025-05-26 来自 浙江
0怎么玩啊
2025-05-27 来自 陕西
0我的意思是粘到哪里
2025-05-27 来自 陕西
0dev-c++
2025-05-29 来自 浙江
0
顶
2025-05-26 来自 浙江
0@天之神-复仇者-郑文越作者,选择小蓝之后人机怎么不攻击了
2025-05-24 来自 浙江
0我看看
2025-05-26 来自 浙江
0我的可以啊
2025-05-26 来自 浙江
0提示:请勿把坐标中的任意一个到0以下
2025-05-26 来自 浙江
0
@天之神-复仇者-郑文越出bug了。为什么小蓝卡池里会有飘忽不定,而且每次我第一张牌选盛大开场时对面人机就总是在第26回合才开始行动
2025-05-23 来自 浙江
0ok
2025-05-24 来自 浙江
0try try
2025-05-24 来自 浙江
0感谢作者回复
2025-05-24 来自 浙江
0
蛋仔派对超然竞技场
直接给你搬过来啦2025-05-22 来自 浙江
0那咋了
2025-05-26 来自 浙江
0不咋的,所以你的蛋仔号是……
2025-05-31 来自 浙江
0我叫广水全智蛋
2025-06-03 来自 浙江
0
HKS,好家伙。
2025-05-22 来自 浙江
0希望作者能加上蓄力重击,威力代价,相位臂甲和能量转化仪(有能量转化仪就能玩法坦小蓝啦)
2025-05-20 来自 浙江
0还有决战技(跳步,无敌,落雷等等)
2025-05-20 来自 浙江
0相位臂甲九秒免伤做不了
2025-05-20 来自 浙江
0波段干扰器可以吗
2025-05-21 来自 浙江
0
我爱玩小蓝
加好友吗2025-05-15 来自 上海
0你小蓝啥标?
我金标2025-05-17 来自 浙江
0小蓝和小粉都是银标
2025-05-17 来自 上海
0
我真看不懂
2025-05-14 来自 浙江
0那就别看了
2025-05-15 来自 浙江
0
为神马先做蓝色香水瓶qwq
2025-05-09 来自 浙江
0还有,双重波波写错了,百分比应该是114514%
2025-05-09 来自 浙江
0??
2025-05-11 来自 浙江
0??
2025-05-11 来自 浙江
0
啥东东?
2025-05-06 来自 广东
0还没做好,请勿打扰
2025-05-07 来自 浙江
0蛋仔派对吗
2025-05-07 来自 广东
0yes
2025-05-08 来自 浙江
0
有帮助,赞一个