📄 rpg.cpp
字号:
int Hphit;
int EXPhit;
cout << name << "攻击" << endl;
srand(time(NULL));
int j = rand()%100;
if (speed >= p.speed && j <= 25)
{
cout << name << "必杀一击" << endl;
Hphit = p.Hp;
p.Hp = p.Hp - (Ap - p.Dp) * 2 * (LV - 1);
cout << "敌人损失Hp " << Hphit - p.Hp << endl;
EXPhit = EXP;
EXP = (Ap - Dp) * 2 * (LV - 1);
cout << name << "获得EXP " << EXPhit - EXP << endl;
p.IsDead();
return true;
}
else if(speed <= p.speed && j >25 && j <=50)
{
cout << "敌人躲避" << endl;
return true;
}
else if(j < 100 && j > 50)
{
cout << p.name << "普通攻击 " << endl;
Hphit = p.Hp;
p.Hp = p.Hp - (Ap - p.Dp) * (LV - 1);
cout << "敌人损失Hp " << Hphit - p.Hp << endl;
EXPhit = EXP;
EXP = (Ap - Dp) * ( LV - 1);
cout << p.name << "获得EXP " << EXPhit - EXP << endl;
p.IsDead();
return true;
}
else
return false;
}
bool Archer::TSattack(player &p)
{
srand( time(NULL) );
int j = rand()%100;
int Hphit;
int EXPhit;
if ( Mp >= 50 )
{
cout << p.name << "的绝招..." << endl;
Mp -= 40;
if (j <= 49 || j >= 60)
{
cout << "命中目标 " << endl;
Hphit = p.Hp;
p.Hp = p.Hp - (Ap - p.Dp) * 3 * ( LV -1);
cout << "敌人损失Hp " << Hphit - p.Hp << endl;
EXPhit = EXP;
EXP = (Ap - p.Dp) * 2 * (LV -1 );
cout << p.name << "获得经验 " << EXPhit - EXP << endl;
p.IsDead();
return true;
}
else
{
cout << "目标移动" << p.name << "攻击无效" << endl;
return true;
}
}
else
{
cout << "魔法不足! " << endl;
return false;
}
}
void Archer::IsLvUp()
{
if (EXP >= LV * LV * 75)
{
EXP -= LV * LV * 75;
++LV;
HpMax = 150 + 8 * (LV -1);
MpMax = 80 + 3 * (LV -1);
Ap += 3;
Dp += 3;
speed += 4;
cout << name << "升级了~,等级为" << LV << endl;
}
}
class Mage:public player
{
public:
Mage(int i, char *chname)
{
role = mg;
int j;
for (j=0; j<10; j++)
{
name[j] = chname[j];
}
Hp = 150 + 8 * (i - 1);
HpMax = 150 + 8 * (i - 1);
Mp = 80 + 3 * (i - 1);
MpMax = 80 + 3 * (i - 1);
Ap = 25 + 4 * (i - 1);
Dp = 25 + 4 * (i - 1);
speed = 25 + 2 * (i - 1);
LV = i;
death = 0;
EXP = LV * LV * 75;
bag.NumHeal = i * 5;
bag.NumMgWorter = i * 5;
}
bool attack(player &p);
bool TSattack(player &p);
void IsLvUp();
};
bool Mage::attack(player &p)
{
int Hphit;
int EXPhit;
cout << name << "攻击" << endl;
srand(time(NULL));
int j = rand()%100;
if (speed >= p.speed && j <= 25)
{
cout << "必杀" << endl;
Hphit = p.Hp;
p.Hp = p.Hp - (Ap - p.Dp) * 2 * (LV - 1);
cout << "敌人损失Hp " << Hphit - p.Hp << endl;
EXPhit = EXP;
EXP = (Ap - Dp) * 2 * (LV - 1);
cout << "获得EXP " << EXPhit - EXP << endl;
p.IsDead();
return true;
}
else if(speed <= p.speed && j >25 && j <=50)
{
cout << "敌人躲避" << endl;
return true;
}
else if(j < 100 && j > 50)
{
cout << "普通攻击 " << endl;
Hphit = p.Hp;
p.Hp = p.Hp - (Ap - p.Dp) * (LV - 1);
cout << "敌人损失Hp " << Hphit - p.Hp << endl;
EXPhit = EXP;
EXP = (Ap - Dp) * ( LV - 1);
cout << "获得EXP " << EXPhit - EXP << endl;
p.IsDead();
return true;
}
else
return false;
}
bool Mage::TSattack(player &p)
{
srand( time(NULL) );
int j = rand()%100;
int Hphit;
int EXPhit;
if ( Mp >= 50 )
{
cout << "绝招..." << endl;
Mp -= 40;
if (j <= 49 || j >= 60)
{
cout << "命中目标 " << endl;
Hphit = p.Hp;
p.Hp = p.Hp - (Ap - p.Dp) * 3 * ( LV -1);
cout << "敌人损失Hp " << Hphit - p.Hp << endl;
EXPhit = EXP;
EXP = (Ap - p.Dp) * 2 * (LV -1 );
cout << "获得经验 " << EXPhit - EXP << endl;
p.IsDead();
return true;
}
else
{
cout << "目标移动, 攻击无效" << endl;
return true;
}
}
else
{
cout << "魔法不足! " << endl;
return false;
}
}
void Mage::IsLvUp()
{
if (EXP >= LV * LV * 75)
{
EXP -= LV * LV * 75;
++LV;
HpMax = 150 + 8 * (LV -1);
MpMax = 80 + 3 * (LV -1);
Ap += 3;
Dp += 3;
speed += 4;
}
}
void ShowWindows(player &p1, player &p2)
{
cout << p1.name << p1.Hp << " " << p1.name << p1.Mp << endl;
cout << p2.name << p2.Hp << " " << p2.name << p2.Mp << endl;
}
void main()//.......这些应该能看懂吧?我是能看懂的~不管了~闪人~~
{
cout << "输入玩家名字:" ;
char name[10];
cin >> name;
player *human;
Swordsman *sw = new Swordsman(1,name);
Archer *ar = new Archer(1,name);
Mage *mg = new Mage(1,name);
bool success = 0;
cout << "请选择人物角色 " << endl;
do
{
cout << " 1 勇敢的剑士 2 精灵弓箭手 3 强大的魔法师 0 退出"
<< endl;
int j;
cin >> j;
switch( j )
{
case 0:
{
cout << "确定退出?(Y/N)" << endl;
char ch;
cin >> ch;
if (ch == 'Y' || ch == 'y')
{
exit(0);
}
else
success = 0;
break;
}
case 1:
{
cout << "选择剑士 " << endl;
delete ar;
delete mg;
human = sw;
success = 1;
break;
}
case 2:
{
cout << "选择弓剑手" << endl;
delete sw;
delete mg;
human = ar;
success = 1;
break;
}
case 3:
{
cout << "选择弓剑手" << endl;
delete sw;
delete ar;
human = mg;
success = 1;
break;
break;
}
default:
{
cout << "操作错误 ,请重新操作" << endl;
success = 0;
}
}
}while( success == 0 );
int j;
for(j=1; j<=8; j++)
{
system("pause");
system("cls");
cout << "第" << j << "关敌人" << endl;
Swordsman enemy(j,"敌人");
human->HpMpfull();
while( !human->Dead() || !enemy.Dead() )
{
system("cls");
ShowWindows(*human,enemy);
do
{
int k;
cout << " 1 普通攻击 2 特殊攻击 3 使用恢复剂 4 使用魔法回复剂 0 逃跑... "
<< endl;
cin >> k;
switch( k )
{
case 0:
{
cout << "你确定要逃跑吗?Y/N" << endl;
char ch;
cin >> ch;
if (ch == 'Y' || ch == 'y')
{
cout << ".....- -! 88" << endl << endl;
exit(0);
}
success = 0;
break;
}
case 1:
{
success = human->attack(enemy);
human->IsLvUp();
break;
}
case 2:
{
success = human->TSattack(enemy);
human->IsLvUp();
break;
}
case 3:
{
success = human->UseHeal();
break;
}
case 4:
{
success = human->UseMW();
break;
}
default:
{
cout << "操作错误,请重新操作" << endl;
success = 0;
}
}
}while( success ==0);
if(!enemy.Dead() )
{
enemy.AI(*human);
if(human->Dead() )
{
cout <<"游戏失败,退出" << endl;
exit(0);
}
}
else
{
cout << "恭喜你~消灭了一个敌人" << endl;
human->Getbag(enemy);
}
system("pause");
}
}
cout << "游戏结束...辛苦拉~" << endl;
delete human;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -