这个题挺简单的吧,单从实现的角度来看的话,就是合理的类的定义这个我不太确定我写的是不是还算对。
#include<iostream>
#include<map>
#include<vector>
#include<time.h>
#include<string>
#include<Windows.h>
using namespace std;
//火焰套装 => 火焰剑 火焰甲 火焰盔 火焰靴
//随机掉落
//如果掉落4次之后依然未集齐,开始掉落未掉落的装备
#define N 4
map<int,string>mp;
void initMp()
{
mp[1]="火焰剑";
mp[2]="火焰甲";
mp[3]="火焰盔";
mp[4]="火焰靴";
}
class equip
{
private:
int id;
string name;
public:
equip(int id)
{
this->id = id;
this->name = mp[id];
}
};
class killMonster
{
private:
int userId;
vector<bool>vis;
vector<equip> equips;
public:
void startKill()
{
srand((unsigned int)time(NULL));
int index = rand()%2;
if(index == 0)
{
dropAnEuip();
}else
{
cout<<"此次无装备掉落"<<endl;
}
}
killMonster(int userId)
{
this->userId = userId;
for(int i=0; i<=N; i++)
{
vis.push_back(false);
}
}
//判断是否全部掉落
bool isAllDrop()
{
for(int i=1; i<=N; i++)
{
if(!vis[i]) return false;
}
return true;
}
//掉落一个装备
void dropAnEuip()
{
int index;
if(equips.size()<4 || isAllDrop())
{
srand((unsigned int)time(NULL));
index = rand()%N +1;
}else
{
for(int i=1; i<=N; i++)
{
if(!vis[i])
{
index=i;
break;
}
}
}
equip e(index);
equips.push_back(e);
vis[index]=true;
cout<<"掉落【"<<mp[index]<<"】"<<endl;
}
};
int main()
{
killMonster kill(1);
initMp();
int cnt=30;
for(int i=0; i<cnt; i++)
{
kill.startKill();
Sleep(1000);
}
system("pause");
return 0;
}