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

📄 main.cpp

📁 学习C++编程思想的不错入门材料,里面还有说明文档
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 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 <<" HP:"<<p1.Hp<<"/"<<p1.HpMax<< "  " <<"MP:"<<p1.Mp<<"/"<<p1.MpMax<<" EXP:"<<p1.EXP<<"/"<< p1.LV * p1.LV * 75<<" LV"<<p1.LV<< endl;
	cout << "Bag numHP:"<<p1.bag.NumHeal<<" numMP:"<<p1.bag.NumMgWorter<< endl;
	cout << endl;
	cout << p2.name <<" HP:"<< p2.Hp << "  " <<"MP:"<< p2.Mp << endl;
	cout << 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;
				}
			default:
				{
					cout << "操作错误 ,请重新操作" << endl;
					success = 0;
				}
		}
	}
	while( success == 0 );
	int j;
	int k;
	for(j=1; j<=8; j++)
	{ 
		system("cls");
		cout << "第" << j << "关敌人" << endl;
		system("pause");
		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;
				k=getch()-'0';//字符数字-'0' 变成数字
//				cout<<k<<endl;
				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");
		}
//	enemy.~Swordsman();
	}
	cout << "游戏结束...辛苦拉~" << endl;
	delete human; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -