龙腾4.52
2026-08-08 13:42:31
发布于:浙江
//1,修改了代码报错
//2,略微调整角色机制
//3,更改了部分语句及技能名称
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <windows.h>
#include <string>
using namespace std;
int hp,attack,defense;
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=1400hp; h.hp=h.maxHp; h.attack=230attack; h.defense=65defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.25; break;
case 2: //鹊瑶
h.name = "鹊瑶"; h.maxHp=1150hp; h.hp=h.maxHp; h.attack=270attack; h.defense=45defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.30; break;
case 3: //鹰乘风
h.name = "鹰乘风"; h.maxHp=1250hp; h.hp=h.maxHp; h.attack=250attack; h.defense=55defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.22; break;
case 4: //熊莫开
h.name = "熊莫开"; h.maxHp=1900hp; h.hp=h.maxHp; h.attack=180attack; h.defense=110defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.12; break;
case 5: //蛮神爪牙
h.name = "蛮神爪牙"; h.maxHp=1500hp; h.hp=h.maxHp; h.attack=240attack; h.defense=50defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.18; break;
case 6: //梅寒衣
h.name = "梅寒衣"; h.maxHp=1300hp; h.hp=h.maxHp; h.attack=260attack; h.defense=60defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.24; break;
case 7: //兔暗香
h.name = "兔暗香"; h.maxHp=1050hp; h.hp=h.maxHp; h.attack=280attack; h.defense=40defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.32; break;
case 8: //鲤余欢
h.name = "鲤余欢"; h.maxHp=1350hp; h.hp=h.maxHp; h.attack=240attack; h.defense=70defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.23; break;
case 9: //剑无忌
h.name = "剑无忌"; h.maxHp=1200hp; h.hp=h.maxHp; h.attack=270attack; h.defense=55defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.26; break;
case 10: //蛮神使者
h.name = "蛮神使者"; h.maxHp=1600hp; h.hp=h.maxHp; h.attack=250attack; h.defense=60defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.20; break;
default:
h.name = "蛮神爪牙"; h.maxHp=1500hp; h.hp=h.maxHp; h.attack=240attack; h.defense=50*defense;
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.attack+=10*attack;
attacker.critRate += 5;
attackTarget(attacker, defender);
attacker.critRate -= 5;
attacker.attack-=6*attack;
}
else if(sk == 1)
{
cout << "鲤逍遥双手挽剑,万千剑光席卷而出,汇聚成巨龙!【双剑龙吟】!" << endl;
int dmg = attacker.attack * 12 - 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*hp;
cout << "一层厚实的剑意护盾包裹自身!" << endl;
}
}
// ========== 鹊瑶 ==========
else if(attacker.name == "鹊瑶")
{
if(sk ==0)
{
cout << "鹊瑶皇火喷涌,凌空飞掠!【皇火焚烧】!" << endl;
attacker.attack+=9*attack;
attackTarget(attacker, defender);
attacker.attack-=7*attack;
}
else if(sk ==1)
{
cout << "鹊瑶舒展羽翼,柔和白光洒落全身!【涅槃道义】!" << endl;
int heal = 24000*hp;
if(attacker.hp+heal>attacker.maxHp) {
cout << "羽翼的力量抚平伤势,恢复 " << attacker.maxHp-attacker.hp << " 点生命!" << endl;
attacker.hp += heal;
attacker.hp = attacker.maxHp;
}
else {
cout << "羽翼的力量抚平伤势,恢复 " << heal << " 点生命!" << endl;
attacker.hp += heal;
}
}
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;
attacker.attack+=6*attack;
attackTarget(attacker, defender);
attacker.attack-=4*attack;
}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*attack;
cout << "战意升腾,自身攻击力大幅提升!" << endl;
}
}
// ========== 熊莫开 ==========
else if(attacker.name == "熊莫开")
{
if(sk==0){
cout << "熊莫开沉重身躯猛冲,【巨力冲撞】!" << endl;
attacker.attack+=8*attack;
attackTarget(attacker, defender);
attacker.attack-=8*attack;
}else if(sk==1){
cout << "熊莫开绷紧浑身肌肉,硬甲覆盖全身!【坚甲】"<<endl;
attacker.shield = true;
attacker.shieldValue +=380*hp;
cout << "厚重铠甲生成护盾保护自己!" << endl;
}else{
cout << "熊莫开仰天怒吼,震荡四方!【怒吼】"<<endl;
attacker.defense +=40*defense;
cout << "怒吼激发肉身潜能,防御大幅提高!" << endl;
}
}
// ========== 梅寒衣 ==========
else if(attacker.name == "梅寒衣")
{
if(sk==0){
cout << "梅寒衣手中寒剑绽放冷光,【寒梅剑】!" << endl;
attacker.attack+=6*attack;
attackTarget(attacker, defender);
attacker.attack-=4*attack;
}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*defense;
cout << "清冷心境强化自身防御!" << endl;
}
}
// ========== 兔暗香 ==========
else if(attacker.name == "兔暗香")
{
if(sk==0){
cout << "兔暗香身形飘忽,化作一道黑影!【影袭】!" << endl;
attacker.attack+=6*attack;
attackTarget(attacker, defender);
attacker.attack-=4*attack;
}else if(sk==1){
cout << "兔暗香脚步翻飞,身法全开!【速攻】" << endl;
attacker.attack +=40*attack;
cout << "极速身法让攻击力得到提升!" << endl;
}else{
cout << "兔暗香消失在暗影之中,伺机寻找弱点!【迷踪】" << endl;
if (attacker.critRate<=95){
attacker.critRate +=0.10;
cout << "隐匿身形,暴击概率上升!" << endl;
}
else {
attacker.attack +=40*attack;
cout << "隐匿身形,攻击力上升!" << endl;
}
}
}
// ========== 鲤余欢 ==========
else if(attacker.name == "鲤余欢")
{
if(sk==0){
cout << "鲤余欢身形灵动,水刃一闪而过!【鱼龙闪】" << endl;
attacker.attack+=6*attack;
attackTarget(attacker, defender);
attacker.attack-=4*attack;
}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*hp;
cout << "流动水盾护住自身!" << endl;
}
}
// ========== 剑无忌 ==========
else if(attacker.name == "剑无忌")
{
if(sk==0){
cout << "剑无忌剑光快到肉眼难辨!【快剑】!" << endl;
attacker.attack+=7*attack;
attackTarget(attacker, defender);
attacker.attack-=4*attack;
}else if(sk==1){
cout << "剑无忌一剑斩向敌人铠甲弱点!【破甲】!" << endl;
defender.defense -=28*attack;
if(defender.defense<20) defender.defense=20;
cout << "击破对手防具,敌人防御力下降!" << endl;
}else{
cout << "剑无忌全身心融入剑道,【剑意】升腾!" << endl;
if(attacker.critRate<=95){
attacker.critRate +=0.11;
cout << "剑意加持,暴击概率提高!" << endl;
}
else {
attacker.attack +=40*attack;
cout << "剑意加持,攻击力提高!" << endl;
}
}
}
// ========== 蛮神使者 ==========
else if(attacker.name == "蛮神使者")
{
if(sk==0){
cout << "蛮神使者高举巨斧,蛮力横扫!【蛮神战斧】" << endl;
attacker.attack+=10*attack;
attackTarget(attacker, defender);
attacker.attack-=10*attack;
}else if(sk==1){
cout << "蛮神使者呼唤蛮神之力,黑暗能量涌入体内!【蛮神赐福】" << endl;
int heal = 200*hp;
attacker.hp += heal;
if(attacker.hp>attacker.maxHp) attacker.hp = attacker.maxHp;
cout << "蛮神力量修复伤势,恢复" << heal <<"点生命!"<<endl;
}else{
cout << "蛮神使者释放狂暴气场!【狂暴威压】" << endl;
attacker.attack +=35*attack;
cout << "狂暴气息让自身攻击上升!" << endl;
}
}
// ========== 蛮神爪牙 ==========
else
{
if(sk==0){
cout << "蛮神爪牙利爪撕裂空气!【利爪撕裂】" << endl;
attacker.attack+=10*attack;
attackTarget(attacker, defender);
attacker.attack-=10*attack;
}else if(sk==1){
cout << "蛮神爪牙引动蛮神浊气侵蚀对手!【浊气腐蚀】" << endl;
defender.defense -=22*attack;
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<<"眩晕解除。" << 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<<"眩晕解除。" << endl;
Sleep(700);
b.isStun = false;
}
else
{
if(rand()%100 < 60)
{
attackTarget(b,a);
}
else
{
useSkill(b,a);
}
}
}
int main()
{
int t;
cout<<"请输入对局场数:";
cin>>t;
cout<<endl;
while (t--){
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;
cout<<endl;
cout << "请输入角色血量倍率(整数):";
cin >> hp;
cout << "请输入角色攻击倍率(整数):";
cin >> attack;
cout << "请输入角色防御倍率(整数):";
cin >> defense;
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) {
cout<<endl<<p1.name<<"倒下了!"<<endl;
showStatus(p1,p2);
break ;
}
if(p2.hp <= 0) {
cout<<endl<<p2.name<<"倒下了!"<<endl;
showStatus(p1,p2);
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
- 置顶
将Hero createHero系(27行)中的代码替换成以下:
Hero createHero(int id)
{
Hero h;
switch(id)
{
case 1: //鲤逍遥
h.name = "鲤逍遥"; h.maxHp=1400hp; h.hp=h.maxHp; h.attack=230attack; h.defense=65defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.25; break;
case 2: //鹊瑶
h.name = "鹊瑶"; h.maxHp=1150hp; h.hp=h.maxHp; h.attack=270attack; h.defense=45defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.30; break;
case 3: //鹰乘风
h.name = "鹰乘风"; h.maxHp=1250hp; h.hp=h.maxHp; h.attack=250attack; h.defense=55defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.22; break;
case 4: //熊莫开
h.name = "熊莫开"; h.maxHp=1900hp; h.hp=h.maxHp; h.attack=180attack; h.defense=110defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.12; break;
case 5: //蛮神爪牙
h.name = "蛮神爪牙"; h.maxHp=1500hp; h.hp=h.maxHp; h.attack=240attack; h.defense=50defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.18; break;
case 6: //梅寒衣
h.name = "梅寒衣"; h.maxHp=1300hp; h.hp=h.maxHp; h.attack=260attack; h.defense=60defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.24; break;
case 7: //兔暗香
h.name = "兔暗香"; h.maxHp=1050hp; h.hp=h.maxHp; h.attack=280attack; h.defense=40defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.32; break;
case 8: //鲤余欢
h.name = "鲤余欢"; h.maxHp=1350hp; h.hp=h.maxHp; h.attack=240attack; h.defense=70defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.23; break;
case 9: //剑无忌
h.name = "剑无忌"; h.maxHp=1200hp; h.hp=h.maxHp; h.attack=270attack; h.defense=55defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.26; break;
case 10: //蛮神使者
h.name = "蛮神使者"; h.maxHp=1600hp; h.hp=h.maxHp; h.attack=250attack; h.defense=60defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.20; break;
default:
h.name = "蛮神爪牙"; h.maxHp=1500hp; h.hp=h.maxHp; h.attack=240attack; h.defense=50*defense;
h.shield=0; h.shieldValue=0; h.isStun=0; h.critRate=0.18; break;
}
return h;
}1周前 来自 浙江
1

















有帮助,赞一个