//4.0
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
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;
if(id == 0)
{
h.name = "鲤逍遥";
h.maxHp = 1300;
h.hp = 1300;
h.attack = 220;
h.defense = 60;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.25;
}
else if(id == 1)
{
h.name = "鹊瑶";
h.maxHp = 1100;
h.hp = 1100;
h.attack = 260;
h.defense = 40;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.30;
}
else if(id == 2)
{
h.name = "鹰乘风";
h.maxHp = 1200;
h.hp = 1200;
h.attack = 245;
h.defense = 50;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.22;
}
else if(id == 3)
{
h.name = "熊莫开";
h.maxHp = 1800;
h.hp = 1800;
h.attack = 170;
h.defense = 100;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.12;
}
else
{
h.name = "蛮神爪牙";
h.maxHp = 1450;
h.hp = 1450;
h.attack = 230;
h.defense = 45;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.18;
}
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;
}
//攻击逻辑,返回是否暴击
bool attackTarget(Hero &attacker, Hero &defender)
{
bool crit = false;
int damage = attacker.attack;
}
//释放技能,随机技能
void useSkill(Hero &attacker, Hero &defender)
{
int skillId = rand() % 3;
if(attacker.name == "鲤逍遥")
{
if(skillId == 0)
{
cout << attacker.name << " 使用【逍遥剑决】" << endl;
attacker.critRate += 0.1;
attackTarget(attacker, defender);
attacker.critRate -= 0.1;
}
else if(skillId == 1)
{
cout << attacker.name << " 使用【万剑归宗】" << 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 << attacker.name << " 凝聚剑意获得护盾" << endl;
attacker.shield = true;
attacker.shieldValue +=280;
}
}
else if(attacker.name == "鹊瑶")
{
if(skillId ==0)
{
cout << attacker.name << " 使用【灵羽穿刺】" << endl;
attackTarget(attacker, defender);
}
else if(skillId ==1)
{
cout << attacker.name << " 使用【鹊影疗愈】,恢复自身生命" << endl;
int heal = 220;
attacker.hp += heal;
if(attacker.hp>attacker.maxHp) attacker.hp = attacker.maxHp;
cout << attacker.name << " 恢复 " << heal << " HP" << endl;
}
else
{
cout << attacker.name << "释放风缚,尝试眩晕敌人" << endl;
if(rand()%100 <40){
defender.isStun = true;
cout << defender.name << " 被眩晕!" << endl;
}else{
cout << "眩晕被抵抗" << endl;
}
}
}
else if(attacker.name == "鹰乘风")
{
if(skillId ==0){
cout << attacker.name << " 使用【疾风斩】" << endl;
attackTarget(attacker, defender);
}else if(skillId ==1){
cout << attacker.name << "【凌空突袭】" << endl;
int dmg = attacker.attack*1.3 - defender.defense;
if(dmg<12)dmg=12;
defender.hp -=dmg;
if(defender.hp<0) defender.hp=0;
cout << "突袭造成 "<<dmg<<"伤害"<<endl;
}else{
cout << attacker.name << "提升自身攻击"<<endl;
attacker.attack +=40;
}
}
else if(attacker.name == "熊莫开")
{
if(skillId ==0){
cout << attacker.name << "【巨力冲撞】" << endl;
attackTarget(attacker, defender);
}else if(skillId ==1){
cout << attacker.name << "开启坚甲护盾"<<endl;
attacker.shield = true;
attacker.shieldValue +=350;
}else{
cout << attacker.name << "怒吼强化自身防御"<<endl;
attacker.defense +=35;
}
}
else
{
cout << attacker.name << "释放蛮神之力"<<endl;
attackTarget(attacker, defender);
}
}
//单回合战斗
void battleRound(Hero &one, Hero &two)
{
//一号行动
cout << "\n>> " << one.name << " 的回合" << endl;
if(one.isStun)
{
cout << one.name << "处于眩晕状态,无法行动!解除眩晕" << endl;
one.isStun = false;
}
else
{
int choice = rand() % 100;
if(choice < 60)
{
attackTarget(one, two);
}
else
{
useSkill(one, two);
}
}
if(two.hp <= 0) return;
}
int main()
{
srand((unsigned int)time(NULL));
cout << "龙腾宇宙全自动对战模拟器" << endl;
cout << "参赛选手:鲤逍遥 VS 蛮神爪牙" << endl;
}
//4.1
//相比龙腾4.0,各处加入细微延时,观感更佳
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <windows.h>
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;
if(id == 0)
{
h.name = "鲤逍遥";
h.maxHp = 1300;
h.hp = 1300;
h.attack = 220;
h.defense = 60;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.25;
}
else if(id == 1)
{
h.name = "鹊瑶";
h.maxHp = 1100;
h.hp = 1100;
h.attack = 260;
h.defense = 40;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.30;
}
else if(id == 2)
{
h.name = "鹰乘风";
h.maxHp = 1200;
h.hp = 1200;
h.attack = 245;
h.defense = 50;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.22;
}
else if(id == 3)
{
h.name = "熊莫开";
h.maxHp = 1800;
h.hp = 1800;
h.attack = 170;
h.defense = 100;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.12;
}
else
{
h.name = "蛮神爪牙";
h.maxHp = 1450;
h.hp = 1450;
h.attack = 230;
h.defense = 45;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.18;
}
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;
}
//攻击逻辑,返回是否暴击
bool attackTarget(Hero &attacker, Hero &defender)
{
Sleep(600);
bool crit = false;
int damage = attacker.attack;
}
//释放技能,随机技能
void useSkill(Hero &attacker, Hero &defender)
{
Sleep(700);
int skillId = rand() % 3;
if(attacker.name == "鲤逍遥")
{
if(skillId == 0)
{
cout << attacker.name << " 使用【逍遥剑决】" << endl;
attacker.critRate += 0.1;
attackTarget(attacker, defender);
attacker.critRate -= 0.1;
}
else if(skillId == 1)
{
cout << attacker.name << " 使用【万剑归宗】" << 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 << attacker.name << " 凝聚剑意获得护盾" << endl;
attacker.shield = true;
attacker.shieldValue +=280;
}
}
else if(attacker.name == "鹊瑶")
{
if(skillId ==0)
{
cout << attacker.name << " 使用【灵羽穿刺】" << endl;
attackTarget(attacker, defender);
}
else if(skillId ==1)
{
cout << attacker.name << " 使用【鹊影疗愈】,恢复自身生命" << endl;
int heal = 220;
attacker.hp += heal;
if(attacker.hp>attacker.maxHp) attacker.hp = attacker.maxHp;
cout << attacker.name << " 恢复 " << heal << " HP" << endl;
}
else
{
cout << attacker.name << "释放风缚,尝试眩晕敌人" << endl;
if(rand()%100 <40){
defender.isStun = true;
cout << defender.name << " 被眩晕!" << endl;
}else{
cout << "眩晕被抵抗" << endl;
}
}
}
else if(attacker.name == "鹰乘风")
{
if(skillId ==0){
cout << attacker.name << " 使用【疾风斩】" << endl;
attackTarget(attacker, defender);
}else if(skillId ==1){
cout << attacker.name << "【凌空突袭】" << endl;
int dmg = attacker.attack*1.3 - defender.defense;
if(dmg<12)dmg=12;
defender.hp -=dmg;
if(defender.hp<0) defender.hp=0;
cout << "突袭造成 "<<dmg<<"伤害"<<endl;
}else{
cout << attacker.name << "提升自身攻击"<<endl;
attacker.attack +=40;
}
}
else if(attacker.name == "熊莫开")
{
if(skillId ==0){
cout << attacker.name << "【巨力冲撞】" << endl;
attackTarget(attacker, defender);
}else if(skillId ==1){
cout << attacker.name << "开启坚甲护盾"<<endl;
attacker.shield = true;
attacker.shieldValue +=350;
}else{
cout << attacker.name << "怒吼强化自身防御"<<endl;
attacker.defense +=35;
}
}
else
{
cout << attacker.name << "释放蛮神之力"<<endl;
attackTarget(attacker, defender);
}
}
//单回合战斗
void battleRound(Hero &one, Hero &two)
{
//一号行动
cout << "\n>> " << one.name << " 的回合" << endl;
Sleep(800);
if(one.isStun)
{
cout << one.name << "处于眩晕状态,无法行动!解除眩晕" << endl;
Sleep(700);
one.isStun = false;
}
else
{
int choice = rand() % 100;
if(choice < 60)
{
attackTarget(one, two);
}
else
{
useSkill(one, two);
}
}
if(two.hp <= 0) return;
}
int main()
{
srand((unsigned int)time(NULL));
cout << "龙腾宇宙全自动对战模拟器" << endl;
cout << "参赛选手:鲤逍遥 VS 蛮神爪牙" << endl;
Sleep(1200);
}
//4.2
//增加了选则人物的功能,使得对战任务更加丰富
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <windows.h>
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;
if(id == 1)
{
h.name = "鲤逍遥";
h.maxHp = 1300;
h.hp = 1300;
h.attack = 220;
h.defense = 60;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.25;
}
else if(id == 2)
{
h.name = "鹊瑶";
h.maxHp = 1100;
h.hp = 1100;
h.attack = 260;
h.defense = 40;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.30;
}
else if(id == 3)
{
h.name = "鹰乘风";
h.maxHp = 1200;
h.hp = 1200;
h.attack = 245;
h.defense = 50;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.22;
}
else if(id == 4)
{
h.name = "熊莫开";
h.maxHp = 1800;
h.hp = 1800;
h.attack = 170;
h.defense = 100;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.12;
}
else
{
h.name = "蛮神爪牙";
h.maxHp = 1450;
h.hp = 1450;
h.attack = 230;
h.defense = 45;
h.shield = false;
h.shieldValue = 0;
h.isStun = false;
h.critRate = 0.18;
}
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;
}
//攻击逻辑,返回是否暴击
bool attackTarget(Hero &attacker, Hero &defender)
{
Sleep(600);
bool crit = false;
int damage = attacker.attack;
}
//释放技能,随机技能
void useSkill(Hero &attacker, Hero &defender)
{
Sleep(700);
int skillId = rand() % 3;
if(attacker.name == "鲤逍遥")
{
if(skillId == 0)
{
cout << attacker.name << " 使用【逍遥剑决】" << endl;
attacker.critRate += 0.1;
attackTarget(attacker, defender);
attacker.critRate -= 0.1;
}
else if(skillId == 1)
{
cout << attacker.name << " 使用【万剑归宗】" << 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 << attacker.name << " 凝聚剑意获得护盾" << endl;
attacker.shield = true;
attacker.shieldValue +=280;
}
}
else if(attacker.name == "鹊瑶")
{
if(skillId ==0)
{
cout << attacker.name << " 使用【灵羽穿刺】" << endl;
attackTarget(attacker, defender);
}
else if(skillId ==1)
{
cout << attacker.name << " 使用【鹊影疗愈】,恢复自身生命" << endl;
int heal = 220;
attacker.hp += heal;
if(attacker.hp>attacker.maxHp) attacker.hp = attacker.maxHp;
cout << attacker.name << " 恢复 " << heal << " HP" << endl;
}
else
{
cout << attacker.name << "释放风缚,尝试眩晕敌人" << endl;
if(rand()%100 <40){
defender.isStun = true;
cout << defender.name << " 被眩晕!" << endl;
}else{
cout << "眩晕被抵抗" << endl;
}
}
}
else if(attacker.name == "鹰乘风")
{
if(skillId ==0){
cout << attacker.name << " 使用【疾风斩】" << endl;
attackTarget(attacker, defender);
}else if(skillId ==1){
cout << attacker.name << "【凌空突袭】" << endl;
int dmg = attacker.attack*1.3 - defender.defense;
if(dmg<12)dmg=12;
defender.hp -=dmg;
if(defender.hp<0) defender.hp=0;
cout << "突袭造成 "<<dmg<<"伤害"<<endl;
}else{
cout << attacker.name << "提升自身攻击"<<endl;
attacker.attack +=40;
}
}
else if(attacker.name == "熊莫开")
{
if(skillId ==0){
cout << attacker.name << "【巨力冲撞】" << endl;
attackTarget(attacker, defender);
}else if(skillId ==1){
cout << attacker.name << "开启坚甲护盾"<<endl;
attacker.shield = true;
attacker.shieldValue +=350;
}else{
cout << attacker.name << "怒吼强化自身防御"<<endl;
attacker.defense +=35;
}
}
else
{
cout << attacker.name << "释放蛮神之力"<<endl;
attackTarget(attacker, defender);
}
}
//单回合战斗
void battleRound(Hero &one, Hero &two)
{
//一号行动
cout << "\n>> " << one.name << " 的回合" << endl;
Sleep(800);
if(one.isStun)
{
cout << one.name << "处于眩晕状态,无法行动!解除眩晕" << endl;
Sleep(700);
one.isStun = false;
}
else
{
int choice = rand() % 100;
if(choice < 60)
{
attackTarget(one, two);
}
else
{
useSkill(one, two);
}
}
if(two.hp <= 0) return;
}
int main()
{
srand((unsigned int)time(NULL));
cout << "龙腾宇宙全自动对战模拟器" << endl;
cout << "可选角色:" << endl;
cout << "1 鲤逍遥" << endl;
cout << "2 鹊瑶" << endl;
cout << "3 鹰乘风" << endl;
cout << "4 熊莫开" << endl;
cout << "5 蛮神爪牙" << endl;
}
//4.3
//增加了跟多人物,包括(客串角色:鲤余欢)
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <windows.h>
using namespace std;
//角色结构体
struct Hero
{
string name;
int hp;
int maxHp;
int attack;
int defense;
bool shield;
int shieldValue;
bool isStun;
double critRate;
};
//创建角色(扩充至10名)
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;
}
//普攻
bool attackTarget(Hero &attacker, Hero &defender)
{
Sleep(600);
bool crit = false;
int damage = attacker.attack;
if((rand()%1000)/1000.0 < attacker.critRate) { damage*=2; crit=1; }
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=0; }
}
defender.hp -= damage; if(defender.hp<0) defender.hp=0;
cout << attacker.name << (crit?" 暴击!":"") << " 造成" << damage << "点伤害" << endl;
return crit;
}
//技能(适配全部角色)
void useSkill(Hero &attacker, Hero &defender)
{
Sleep(700);
int sk = rand()%3;
//鲤逍遥
if(attacker.name=="鲤逍遥"){
if(sk0){cout<<"鲤逍遥【逍遥剑决】\n"; attacker.critRate+=0.1; attackTarget(attacker,defender); attacker.critRate-=0.1;}
else if(sk1){cout<<"鲤逍遥【万剑归宗】\n"; int d=attacker.attack1.4-defender.defense; if(d<15)d=15; defender.hp-=d; if(defender.hp<0)defender.hp=0; cout<<"造成"<<d<<"伤害\n";}
else {cout<<"鲤逍遥【剑意护盾】\n"; attacker.shield=1; attacker.shieldValue+=280;}
}
//鹊瑶
else if(attacker.name=="鹊瑶"){
if(sk0){cout<<"鹊瑶【灵羽穿刺】\n"; attackTarget(attacker,defender);}
else if(sk1){cout<<"鹊瑶【鹊影疗愈】\n"; attacker.hp+=220; if(attacker.hp>attacker.maxHp)attacker.hp=attacker.maxHp; cout<<"恢复220HP\n";}
else {cout<<"鹊瑶【风缚】\n"; if(rand()%100<40){defender.isStun=1; cout<<defender.name<<"眩晕!\n";}else cout<<"抵抗\n";}
}
//鹰乘风
else if(attacker.name=="鹰乘风"){
if(sk0){cout<<"鹰乘风【疾风斩】\n"; attackTarget(attacker,defender);}
else if(sk1){cout<<"鹰乘风【凌空突袭】\n"; int d=attacker.attack1.3-defender.defense; if(d<12)d=12; defender.hp-=d; if(defender.hp<0)defender.hp=0; cout<<"造成"<<d<<"伤害\n";}
else {cout<<"鹰乘风【锐攻】\n"; attacker.attack+=40;}
}
//熊莫开
else if(attacker.name=="熊莫开"){
if(sk0){cout<<"熊莫开【巨力冲撞】\n"; attackTarget(attacker,defender);}
else if(sk1){cout<<"熊莫开【坚甲】\n"; attacker.shield=1; attacker.shieldValue+=350;}
else {cout<<"熊莫开【怒吼】\n"; attacker.defense+=35;}
}
//梅寒衣
else if(attacker.name=="梅寒衣"){
if(sk0){cout<<"梅寒衣【寒梅剑】\n"; attackTarget(attacker,defender);}
else if(sk1){cout<<"梅寒衣【冰封】\n"; if(rand()%100<35){defender.isStun=1; cout<<"冻结!\n";}else cout<<"抵抗\n";}
else {cout<<"梅寒衣【冰心】\n"; attacker.defense+=30;}
}
//兔暗香
else if(attacker.name=="兔暗香"){
if(sk0){cout<<"兔暗香【影袭】\n"; attackTarget(attacker,defender);}
else if(sk1){cout<<"兔暗香【速攻】\n"; attacker.attack+=35;}
else {cout<<"兔暗香【迷踪】\n"; attacker.critRate+=0.08;}
}
//鲤余欢
else if(attacker.name=="鲤余欢"){
if(sk0){cout<<"鲤余欢【鱼龙闪】\n"; attackTarget(attacker,defender);}
else if(sk1){cout<<"鲤余欢【龙息】\n"; int d=attacker.attack*1.35-defender.defense; if(d<15)d=15; defender.hp-=d; if(defender.hp<0)defender.hp=0; cout<<"造成"<<d<<"伤害\n";}
else {cout<<"鲤余欢【御水盾】\n"; attacker.shield=1; attacker.shieldValue+=260;}
}
//剑无忌
else if(attacker.name=="剑无忌"){
if(sk0){cout<<"剑无忌【快剑】\n"; attackTarget(attacker,defender);}
else if(sk1){cout<<"剑无忌【破甲】\n"; defender.defense-=25; if(defender.defense<20)defender.defense=20;}
else {cout<<"剑无忌【剑意】\n"; attacker.critRate+=0.09;}
}
//蛮神系
else {
cout<<attacker.name<<"【蛮神冲击】\n";
attackTarget(attacker,defender);
}
}
//修复后的回合战斗函数(核心改点)
void battleRound(Hero &a, Hero &b)
{
cout<<"\n>> "<<a.name<<"回合\n";
Sleep(800);
if(a.isStun)
{
cout<<"眩晕!解除\n";
Sleep(700);
a.isStun=0;
}
else
{
if(rand()%100 < 60)
{
attackTarget(a,b);
}
else
{
useSkill(a,b);
}
}
if(b.hp<=0)return;
}
int main()
{
srand(time(0));
cout<<"===== 龙腾宇宙·全自动对战 =\n";
cout<<"1鲤逍遥 2鹊瑶 3鹰乘风 4熊莫开 5蛮神爪牙\n6梅寒衣 7兔暗香 8鲤余欢 9剑无忌 10蛮神使者\n";
int x,y; cout<<"请选角色1:"; cin>>x; cout<<"请选角色2:"; cin>>y;
Hero p1=createHero(x), p2=createHero(y);
cout<<"\n开战:"<<p1.name<<" VS "<<p2.name<<"\n"; Sleep(1200);
int r=1;
while(1){
cout<<"\n=第"<<r<<"回合=====\n"; showStatus(p1,p2); Sleep(1000);
battleRound(p1,p2);
if(p1.hp<=0||p2.hp<=0)break; r++;
}
cout<<"\n战斗结束\n"; Sleep(1000);
if(p1.hp<=0&&p2.hp<=0)cout<<"平局\n";
else if(p1.hp>0)cout<<p1.name<<"胜\n"; else cout<<p2.name<<"胜\n";
cout<<"回合:"<<r<<"\n=========================\n";
system("pause");
return 0;
}
//4.4
/每个角色拥有3 个专属技能,释放技能会打印动作、神态描述,不再只有干巴巴的技能名字。
例:兔暗香身形飘忽,化作一道黑影!【影袭】!
蛮神爪牙、蛮神使者也补全了三套独立技能,有狂化、腐蚀、赐福等效果。
眩晕状态的提示文字更新,增加角色行为描述。
输入容错:输入超出 1?10 范围会自动设置为有效角色,不会乱生成角色。
所有原有机制完整保留:护盾、眩晕、暴击、手动编号选角色、Sleep 延时。/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <windows.h>
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;
}
bool attackTarget(Hero &attacker, Hero &defender)
{
Sleep(600);
bool crit = false;
int damage = attacker.attack;
}
// 技能:增加角色行为描述
void useSkill(Hero &attacker, Hero &defender)
{
Sleep(700);
int sk = rand() % 3;
}
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;
}
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";
}