龙腾4.5
2026-08-07 14:41:02
发布于:浙江
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <windows.h>
#include <string>
using namespace std;
struct Hero
{
string name;
int hp;
int maxHp;
int attack;
int defense;
bool shield;
int shieldValue;
bool isStun;
double critRate;
};
Hero createHero(int id)
{
Hero h;
switch(id)
{
case 1: //鲤逍遥
h.name = "鲤逍遥"; h.maxHp=1400; h.hp=1400; h.attack=230; h.defense=65;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.25; break;
case 2: //鹊瑶
h.name = "鹊瑶"; h.maxHp=1150; h.hp=1150; h.attack=270; h.defense=45;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.30; break;
case 3: //鹰乘风
h.name = "鹰乘风"; h.maxHp=1250; h.hp=1250; h.attack=250; h.defense=55;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.22; break;
case 4: //熊莫开
h.name = "熊莫开"; h.maxHp=1900; h.hp=1900; h.attack=180; h.defense=110;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.12; break;
case 5: //蛮神爪牙
h.name = "蛮神爪牙"; h.maxHp=1500; h.hp=1500; h.attack=240; h.defense=50;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.18; break;
case 6: //梅寒衣
h.name = "梅寒衣"; h.maxHp=1300; h.hp=1300; h.attack=260; h.defense=60;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.24; break;
case 7: //兔暗香
h.name = "兔暗香"; h.maxHp=1050; h.hp=1050; h.attack=280; h.defense=40;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.32; break;
case 8: //鲤余欢
h.name = "鲤余欢"; h.maxHp=1350; h.hp=1350; h.attack=240; h.defense=70;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.23; break;
case 9: //剑无忌
h.name = "剑无忌"; h.maxHp=1200; h.hp=1200; h.attack=270; h.defense=55;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.26; break;
case 10: //蛮神使者
h.name = "蛮神使者"; h.maxHp=1600; h.hp=1600; h.attack=250; h.defense=60;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.20; break;
default:
h.name = "蛮神爪牙"; h.maxHp=1500; h.hp=1500; h.attack=240; h.defense=50;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.18; break;
}
return h;
}
void showStatus(Hero a, Hero b)
{
cout << "----------------------------------------" << endl;
cout << left << setw(12) << a.name << " HP:" << setw(5) << a.hp << "/" << a.maxHp;
if(a.shield) cout << " 护盾:" << a.shieldValue;
if(a.isStun) cout << " [眩晕]";
cout << endl;
cout << left << setw(12) << b.name << " HP:" << setw(5) << b.hp << "/" << b.maxHp;
if(b.shield) cout << " 护盾:" << b.shieldValue;
if(b.isStun) cout << " [眩晕]";
cout << endl;
cout << "----------------------------------------" << endl;
}
// 新增:战斗结算画面
void showBattleResult(Hero p1, Hero p2, int totalRound)
{
Sleep(800);
cout << "\n\n";
cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout << "┃ ?? 战 斗 结 算 ?? ┃\n";
cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout << "总战斗回合:" << totalRound << "\n\n";
cout << "【" << p1.name << "】最终状态\n";
cout << " 生命:" << p1.hp << " / " << p1.maxHp << "\n";
cout << " 护盾值:" << p1.shieldValue << "\n";
cout << " 攻击力:" << p1.attack << " | 防御力:" << p1.defense << "\n";
cout << " 暴击率:" << fixed << setprecision(1) << p1.critRate*100 << "%\n";
if(p1.hp <=0) cout << " 状态:?? 战败\n";
else cout << " 状态:? 存活\n";
cout << "----------------------------------------\n";
cout << "【" << p2.name << "】最终状态\n";
cout << " 生命:" << p2.hp << " / " << p2.maxHp << "\n";
cout << " 护盾值:" << p2.shieldValue << "\n";
cout << " 攻击力:" << p2.attack << " | 防御力:" << p2.defense << "\n";
cout << " 暴击率:" << fixed << setprecision(1) << p2.critRate*100 << "%\n";
if(p2.hp <=0) cout << " 状态:?? 战败\n";
else cout << " 状态:? 存活\n";
cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
}
bool attackTarget(Hero &attacker, Hero &defender)
{
Sleep(600);
bool crit = false;
int damage = attacker.attack;
double randCrit = (rand() % 1000) / 1000.0;
if(randCrit < attacker.critRate)
{
damage *= 2;
crit = true;
}
damage = damage - defender.defense;
if(damage < 10) damage = 10;
if(defender.shield && defender.shieldValue > 0)
{
if(defender.shieldValue >= damage)
{
defender.shieldValue -= damage;
damage = 0;
}
else
{
damage -= defender.shieldValue;
defender.shieldValue = 0;
defender.shield = false;
}
}
defender.hp -= damage;
if(defender.hp < 0) defender.hp = 0;
cout << attacker.name;
if(crit) cout << " 触发暴击!";
cout << " 挥出普通攻击,造成 " << damage << " 点伤害" << endl;
return crit;
}
// 技能:增加角色行为描述
void useSkill(Hero &attacker, Hero &defender)
{
Sleep(700);
int sk = rand() % 3;
// ========== 鲤逍遥 ==========
if(attacker.name == "鲤逍遥")
{
if(sk == 0)
{
cout << "鲤逍遥拔剑出鞘,剑气激荡,施展【逍遥剑决】!" << endl;
attacker.critRate += 0.12;
attackTarget(attacker, defender);
attacker.critRate -= 0.12;
}
else if(sk == 1)
{
cout << "鲤逍遥双手挽剑,万千剑光席卷而出!【万剑归宗】!" << endl;
int dmg = attacker.attack * 1.4 - defender.defense;
if(dmg <15) dmg =15;
if(defender.shield && defender.shieldValue>0)
{
if(defender.shieldValue >= dmg){ defender.shieldValue -=dmg; dmg=0; }
else {dmg -= defender.shieldValue; defender.shieldValue=0; defender.shield=false;}
}
defender.hp -= dmg;
if(defender.hp<0) defender.hp=0;
cout << "漫天剑雨轰击敌人,造成 " << dmg << " 点伤害!" << endl;
}
else
{
cout << "鲤逍遥凝神静气,剑意环绕周身!【剑意护盾】" << endl;
attacker.shield = true;
attacker.shieldValue +=300;
cout << "一层厚实的剑意护盾包裹自身!" << endl;
}
}
// ========== 鹊瑶 ==========
else if(attacker.name == "鹊瑶")
{
if(sk ==0)
{
cout << "鹊瑶羽刃出鞘,凌空飞掠!【灵羽穿刺】" << endl;
attackTarget(attacker, defender);
}
else if(sk ==1)
{
cout << "鹊瑶舒展羽翼,柔和白光洒落全身!【鹊影疗愈】" << endl;
int heal = 240;
attacker.hp += heal;
if(attacker.hp>attacker.maxHp) attacker.hp = attacker.maxHp;
cout << "羽翼的力量抚平伤势,恢复 " << heal << " 点生命!" << endl;
}
else
{
cout << "鹊瑶挥动翅膀卷起狂风,【风缚】!狂风缠绕对手!" << endl;
if(rand()%100 <42){
defender.isStun = true;
cout << defender.name << " 被狂风死死束缚,陷入眩晕!" << endl;
}else{
cout << defender.name << "奋力挣脱了狂风的束缚!" << endl;
}
}
}
// ========== 鹰乘风 ==========
else if(attacker.name == "鹰乘风")
{
if(sk==0){
cout << "鹰乘风双翼振起,如风一般冲杀向前!【疾风斩】" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "鹰乘风直冲云霄,自高空俯冲而下!【凌空突袭】" << endl;
int dmg = attacker.attack*1.32 - defender.defense;
if(dmg<12)dmg=12;
defender.hp -=dmg;
if(defender.hp<0) defender.hp=0;
cout << "猛烈俯冲撞击对手,造成 "<<dmg<<"点伤害!"<<endl;
}else{
cout << "鹰乘风目光锐利,激发体内野性!【锐攻】!"<<endl;
attacker.attack +=45;
cout << "战意升腾,自身攻击力大幅提升!" << endl;
}
}
// ========== 熊莫开 ==========
else if(attacker.name == "熊莫开")
{
if(sk==0){
cout << "熊莫开沉重身躯猛冲,【巨力冲撞】!" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "熊莫开绷紧浑身肌肉,硬甲覆盖全身!【坚甲】"<<endl;
attacker.shield = true;
attacker.shieldValue +=380;
cout << "厚重铠甲生成护盾保护自己!" << endl;
}else{
cout << "熊莫开仰天怒吼,震荡四方!【怒吼】"<<endl;
attacker.defense +=40;
cout << "怒吼激发肉身潜能,防御大幅提高!" << endl;
}
}
// ========== 梅寒衣 ==========
else if(attacker.name == "梅寒衣")
{
if(sk==0){
cout << "梅寒衣手中寒剑绽放冷光,【寒梅剑】!" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "梅寒衣挥剑释放刺骨寒气!【冰封】!" << endl;
if(rand()%100<38){
defender.isStun = true;
cout << defender.name << "被寒冰冻结,动弹不得!" << endl;
}else{
cout << defender.name << "抵抗住冰冷寒气!" << endl;
}
}else{
cout << "梅寒衣心如止水,冰心护体!【冰心】" << endl;
attacker.defense +=32;
cout << "清冷心境强化自身防御!" << endl;
}
}
// ========== 兔暗香 ==========
else if(attacker.name == "兔暗香")
{
if(sk==0){
cout << "兔暗香身形飘忽,化作一道黑影!【影袭】!" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "兔暗香脚步翻飞,身法全开!【速攻】" << endl;
attacker.attack +=40;
cout << "极速身法让攻击力得到提升!" << endl;
}else{
cout << "兔暗香消失在暗影之中,伺机寻找弱点!【迷踪】" << endl;
attacker.critRate +=0.10;
cout << "隐匿身形,暴击概率上升!" << endl;
}
}
// ========== 鲤余欢 ==========
else if(attacker.name == "鲤余欢")
{
if(sk==0){
cout << "鲤余欢身形灵动,水刃一闪而过!【鱼龙闪】" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "鲤余欢张口喷出汹涌水浪!【龙息】!" << endl;
int dmg = attacker.attack*1.35-defender.defense;
if(dmg<15)dmg=15;
defender.hp -=dmg;
if(defender.hp<0) defender.hp=0;
cout << "汹涌龙息冲击敌人,造成 "<<dmg<<"点伤害!"<<endl;
}else{
cout << "鲤余欢调动水流环绕周身!【御水盾】" << endl;
attacker.shield = true;
attacker.shieldValue +=290;
cout << "流动水盾护住自身!" << endl;
}
}
// ========== 剑无忌 ==========
else if(attacker.name == "剑无忌")
{
if(sk==0){
cout << "剑无忌剑光快到肉眼难辨!【快剑】!" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "剑无忌一剑斩向敌人铠甲弱点!【破甲】!" << endl;
defender.defense -=28;
if(defender.defense<20) defender.defense=20;
cout << "击破对手防具,敌人防御力下降!" << endl;
}else{
cout << "剑无忌全身心融入剑道,【剑意】升腾!" << endl;
attacker.critRate +=0.11;
cout << "剑意加持,暴击概率提高!" << endl;
}
}
// ========== 蛮神使者 ==========
else if(attacker.name == "蛮神使者")
{
if(sk==0){
cout << "蛮神使者高举巨斧,蛮力横扫!【蛮神战斧】" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "蛮神使者呼唤蛮神之力,黑暗能量涌入体内!【蛮神赐福】" << endl;
int heal = 200;
attacker.hp += heal;
if(attacker.hp>attacker.maxHp) attacker.hp = attacker.maxHp;
cout << "蛮神力量修复伤势,恢复" << heal <<"点生命!"<<endl;
}else{
cout << "蛮神使者释放狂暴气场!【狂暴威压】" << endl;
attacker.attack +=35;
cout << "狂暴气息让自身攻击上升!" << endl;
}
}
// ========== 蛮神爪牙 ==========
else
{
if(sk==0){
cout << "蛮神爪牙利爪撕裂空气!【利爪撕裂】" << endl;
attackTarget(attacker, defender);
}else if(sk==1){
cout << "蛮神爪牙引动蛮神浊气侵蚀对手!【浊气腐蚀】" << endl;
defender.defense -=22;
if(defender.defense<20) defender.defense=20;
cout << "浊气腐蚀防具,敌人防御力降低!" << endl;
}else{
cout << "蛮神爪牙激发蛮神血脉!【狂化】!" << endl;
attacker.attack +=30;
cout << "狂化状态下攻击力提升!" << endl;
}
}
}
void battleRound(Hero &a, Hero &b)
{
cout<<"\n>> "<<a.name<<" 的回合"<<endl;
Sleep(800);
if(a.isStun)
{
cout << a.name << "被眩晕困住,浑身无法动弹!眩晕解除。" << endl;
Sleep(700);
a.isStun = false;
}
else
{
if(rand()%100 < 60)
{
attackTarget(a,b);
}
else
{
useSkill(a,b);
}
}
if(b.hp<=0)return;
cout<<"\n>> "<<b.name<<" 的回合"<<endl;
Sleep(800);
if(b.isStun)
{
cout << b.name << "被眩晕困住,浑身无法动弹!眩晕解除。" << endl;
Sleep(700);
b.isStun = false;
}
else
{
if(rand()%100 < 60)
{
attackTarget(b,a);
}
else
{
useSkill(b,a);
}
}
}
int main()
{
srand((unsigned int)time(NULL));
cout<<"===== 龙腾宇宙·全自动对战模拟器 =====\n";
cout<<"【可选角色编号】\n";
cout<<"1 鲤逍遥 2 鹊瑶 3 鹰乘风 4 熊莫开 5 蛮神爪牙\n";
cout<<"6 梅寒衣 7 兔暗香 8 鲤余欢 9 剑无忌 10 蛮神使者\n";
int x,y;
cout << "\n请输入第一个对战角色编号:";
cin >> x;
cout << "请输入第二个对战角色编号:";
cin >> y;
if(x<1||x>10) x=1;
if(y<1||y>10) y=2;
Hero p1=createHero(x), p2=createHero(y);
cout<<"\n==========战斗开启:"<<p1.name<<" VS "<<p2.name<<"=========="<<endl;
Sleep(1200);
int roundCount = 1;
while(true)
{
cout << "\n===== 第 " << roundCount << " 回合 =====" << endl;
showStatus(p1,p2);
Sleep(1000);
battleRound(p1,p2);
if(p1.hp <= 0 || p2.hp <=0) break;
roundCount++;
}
cout << "\n================战斗结束================" << endl;
Sleep(1000);
if(p1.hp <= 0 && p2.hp <= 0)
{
cout << "双方全部倒下,战斗平局!" << endl;
}
else if(p1.hp > 0)
{
cout << "【胜利】"<< p1.name << "取得本次对战胜利!" << endl;
}
else
{
cout << "【胜利】"<< p2.name << "取得本次对战胜利!" << endl;
}
// 调用结算画面
showBattleResult(p1, p2, roundCount);
cout << "总共战斗回合数:" << roundCount << endl;
cout << "========================================" << endl;
system("pause");
return 0;
}
全部评论 1
有实力
1周前 来自 浙江
0这个是AI维护过的,手写版本是4.1~4.3版本
1周前 来自 浙江
0




















有帮助,赞一个