⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpg.cpp

📁 一个C++RPG游戏
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 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 + -