做这个终极版的题目,花了大概3个礼拜的时间。做完之后,感觉立刻轻松了很多,也学到了很多。这是我第一个写的差不多2000行的程序,当然也有比较大的满足感。
首先,先说下这个题目的注意事项。
1.这个题目是魔兽世界系列题目最复杂的一题,理论上是可以通过前面的装备和备战进行扩充的。但实际上,由于我们这些新手能力用限,刚开始写出来的装备和备战程序的可扩充性不强。所以我强烈建议,等做到这道题的时候,重新编写代码。
2.这道题对里面士兵的操作过程有非常严格的要求,所以写之前,要好好理解题目的意思。
3.武器,士兵,司令部以及城市之间的关系要搞明白,能恰当用程序进行描述。
4.调试这道题的程序是一个很复杂的过程,可以借用网上正确的程序,输入同样的数据,比较输出的异同点。
5.每个时间要输出什么,要进行什么操作,这个题目都描述清楚了,要按题目的要求编写动作和输出。
6.一个调试小窍门:这个程序的输出数据总的有4W多条,所以得用文本比较器进行比较,网上有很多。因为输出数据的界面有限,所以我们一次性只能得到差不多8000条数据。所以我们得直接利用程序生产输出数据的文本来进行比较,这是一件非常省事的方法。生成输出数据的程序如下:
#include <fstream>
using namespace std;
//题目的程序;
int main() {
ofstream outfile("out.txt");
streambuf *streams = cout.rdbuf();//保存原来的cout对象
cout.rdbuf(outfile.rdbuf());
       //属于main函数的题目程序;
cout.rdbuf(streams);
return 0;

}

这样就可以得到输出数据的文本。
本人也是初学编程,所以用了接近2000行的程序才描述清楚这个题目。网上还有其他高手用了仅仅600多行就写出来了。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<string>
using namespace std;
class army;
class weapon;
class city;
int Num, flag1 = 0, flag2 = 0,t=0,minu=0;
int K,R;
class soldier {
friend class army;
    friend class weapon;
public:
int devote;
static int no1,no2;//no1表示红军杀死的人数,no2表示蓝军杀死的人数。
bool can_delete;
bool kill_;
bool remv;
city *pcity;
int weapon_num;
weapon *pweapon[3];
int sort_nm;//0代表dragon 、1代表ninja、2代表iceman、3代表lion、4代表wolf
int power;
static int powerary[5];
int lifev;
int num;//编号
army *parmy;
int position;
void init();
bool escape;
static string names[5];
static int lifevalue[5];
void remove(army *p) {};
soldier(army *p, int to_num, int sort,int N);
virtual void printing(int tm);
virtual void attack(soldier *p) {};
virtual void hurted(int npower,soldier *p) {};
virtual void fightback(soldier *p) {};
virtual ~soldier();

};
class dragon : public soldier {
public:

double brave;
dragon(army *p, int to_num, int sort, int N);
void printing(int tm);
void attack(soldier *p);
void hurted(int npower, soldier *p);
void fightback(soldier *p);

};
class ninja : public soldier {
public:

ninja(army *p, int to_num, int sort, int N);
void printing(int tm);
void attack(soldier *p);
void hurted(int npower, soldier *p);
void fightback(soldier *p);

};
class iceman : public soldier {
public:

iceman(army *p, int to_num, int sort, int N);
void printing(int tm);
void attack(soldier *p);
void hurted(int npower, soldier *p);
void fightback(soldier *p);

};
class lion : public soldier {
public:

lion(army *p, int to_num, int sort, int N);
void printing(int tm);
void attack(soldier *p);
void hurted(int npower, soldier *p);
void fightback(soldier *p);
};
class wolf : public soldier {
public:
int n;
int wep_sort[3];
wolf(army *p, int to_num, int sort, int N);
void printing(int tm);
void attack(soldier *p);
void hurted(int npower, soldier *p);
void fightback(soldier *p);

};
class weapon {
public:
int power;
int fight_num;
int kind_no1;//0为sword,1为bomb,2为arrow.
soldier *psoldier;
bool exist;
static string name[3];
weapon(soldier *p) {
psoldier = p;

}
virtual void update(){}
virtual void check() {}
};
class sword :public weapon {
public:

sword(soldier *p) :weapon(p) {
power = int((p->power)*0.2);
fight_num = 0;
kind_no1 = 0;
if (power > 0)
exist = 1;
else
exist = 0;

}

void update() {
fight_num++;
power = power*0.8;
}
void check() {
if (power <=0)
exist = 0;
else 
exist = 1;
}
};
class bomb :public weapon {
public:
bomb(soldier *p) :weapon(p) {
kind_no1 = 1;
exist = 1;
fight_num = 0;
}
void update() {
fight_num++;
}
void check() {
if (fight_num==1)
exist = 0;
else
exist = 1;
}
};
class arrow :public weapon {
public:

arrow(soldier *p) :weapon(p) {
kind_no1 = 2;
fight_num = 0;
exist = 1;
power = R;
}
void update() {
fight_num++;
}
void check() {
if (fight_num >=3)
exist = 0;
else
exist = 1;
}

};
class city {
public:
int a[2];//0为红,1为蓝
int num;//城市编号
int color;//所属阵营,0为红,1为蓝,2为无
int life;
soldier *psoldier[2];//0为红,1为蓝
city(){
psoldier[0] = NULL;
psoldier[1] = NULL;
a[0] = 0;
a[1] = 0;
color=2;
life = 0;
num = 100;
}
void initial() {
psoldier[0] = NULL;
psoldier[1] = NULL;
a[0] = 0;
a[1] = 0;
color = 2;
life = 0;
}
void init(int i);
void produce_life() {
life += 10;
}
void printing();
void supply_life();
void battle();
void shoot();
void judge();
void printing_red();
void printing_blue();
} ct[100];

class army {
public:
int color;//0为红,1为蓝
soldier *psoldier[1000];
int total_life;
int total_num;
int order_index;
bool stop;
friend class soldier;
int soldier1[5];
static int pro_order[2][5];
army(int c_o, int M) {
color = c_o;
total_num = 0;
total_life = M;
order_index = 0;
stop = 0;
for (int i = 0; i < 5; i++) {
soldier1[i] = 0;
}
for (int i = 0; i < 1000; i++) {
psoldier[i] = NULL;
}
}
void remove();
void shoot();
void produce(int tm,int N);
string getcolor();
~army() {
for (int i = 0; i < total_num; i++)

delete psoldier[i];

}
void printing(){
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << total_life << " elements in " << getcolor() << " headquarter" << endl;
}
};

soldier::soldier(army *p, int to_num, int sort,int N) {

kill_ = 0;
can_delete = 0;
remv = 0;
parmy = p;
num = to_num;
sort_nm = sort;
if (parmy->color == 0)
position = 0;
else
position = N + 1;
pcity = NULL;
for (int i = 0; i < 3; i++) {
pweapon[i] = NULL;
}
}
void soldier::printing(int tm) {}
void soldier::init(){
if (can_delete == 0) {
kill_ = 0;

}
}
soldier::~soldier() {
for (int i = 0; i < 3; i++)
if (pweapon[i] != NULL) {
delete pweapon[i];
}
}

dragon::dragon(army *p, int to_num, int sort, int N) :soldier(p, to_num, sort,N) {
lifev = lifevalue[0];
power = powerary[0];
switch (num % 3) {
case 0:pweapon[0] = new sword(this); break;
case 1:pweapon[0] = new bomb(this); break;
case 2:pweapon[0] = new arrow(this); break;

}
weapon_num = 1;
brave = double(parmy->total_life) / double(lifevalue[sort_nm]);
escape = 0;
}
void dragon:: printing(int tm) {
string color = parmy->getcolor();
cout << setw(3) << setfill('0') << tm << ":";
cout<< setw(2) <<minu<< " ";
cout << color << " " << "dragon" << " " << num << " born" << endl;
cout <<setprecision(2)<<fixed<< "Its morale is " <<brave<< endl;
}
void dragon::attack(soldier *p) {
if (p->can_delete == 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << num << " attacked " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm];
cout << " " << p->num << " in city " << this->position << " with " << this->lifev << " elements and force " << this->power << endl;
p->hurted(power, this);
}
if (p->lifev <= 0||p->can_delete==1){
kill_ = 1;

if (this->parmy->color == 0)
no1++;
else                                            
no2++;

if (lifev > 0) {
brave += 0.2;
if (brave > 0.8 && ((this->parmy->color == 0 && ((this->pcity->num % 2 == 1 && this->pcity->color != 1) || this->pcity->color == 0)) || (this->parmy->color == 1 && ((this->pcity->num % 2 == 0 && this->pcity->color != 0) || this->pcity->color == 1)))) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << this->num << " yelled in city " << this->position << endl;
}
if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;
}
}

}
else {
p->fightback(this);
if (lifev>0) {
brave -= 0.2;
if (brave > 0.8 && ((this->parmy->color == 0 && ((this->pcity->num % 2 == 1 && this->pcity->color != 1) || this->pcity->color == 0)) || (this->parmy->color == 1 && ((this->pcity->num % 2 == 0 && this->pcity->color != 0) || this->pcity->color == 1)))) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << this->num << " yelled in city " << this->position << endl;
}
}
}
}
void dragon::hurted(int npower, soldier *p) {

lifev -= npower;
for (int i = 0; i < 3; i++) {
if (p->pweapon[i]!=NULL&&p->pweapon[i]->kind_no1 == 0&& p->pweapon[i] ->exist==1) {
lifev -= p->pweapon[i]->power;
p->pweapon[i]->update();
break;
}
}
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << num << " was killed in city " << this->position << endl;
this->can_delete=1;

}
}
void dragon::fightback(soldier *p) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << num << " fought back against " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm] << " " << p->num << " in city " << this->position << endl;
p->hurted(power /2,this);
if (p->lifev <= 0) {
kill_ = 1;
brave += 0.2;
if (this->parmy->color == 0)
no1++;
else
no2++;

if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;
}

}
else
{
brave -= 0.2;
}
}

ninja::ninja(army *p, int to_num, int sort, int N) :soldier(p, to_num, sort,N) {
lifev = lifevalue[1];
power = powerary[1];
weapon_num = 2;
escape = 0;
if (num % 3 < (num + 1) % 3) {
switch (num % 3) {
case 0:pweapon[0] = new sword(this); break;
case 1:pweapon[0] = new bomb(this); break;
case 2:pweapon[0] = new arrow(this); break;
}
switch ((num + 1) % 3) {
case 0:pweapon[1] = new sword(this); break;
case 1:pweapon[1] = new bomb(this); break;
case 2:pweapon[1] = new arrow(this); break;
}
}
else if (num % 3 > (num + 1) % 3) {
switch (num % 3) {
case 0:pweapon[1] = new sword(this); break;
case 1:pweapon[1] = new bomb(this); break;
case 2:pweapon[1] = new arrow(this); break;
}
switch ((num + 1) % 3) {
case 0:pweapon[0] = new sword(this); break;
case 1:pweapon[0] = new bomb(this); break;
case 2:pweapon[0] = new arrow(this); break;
}
}
}
void ninja:: printing(int tm) {
string color = parmy->getcolor();
cout << setw(3) << setfill('0') << tm << ":";
cout << setw(2) << minu << " ";
cout << color << " " << "ninja" << " " << num << " born" << endl;
}
void ninja::attack(soldier *p) {
if (p->can_delete == 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " ninja " << num << " attacked " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm];
cout << " " << p->num << " in city " << this->position << " with " << this->lifev << " elements and force " << this->power << endl;

p->hurted(power, this);
}
if (p->lifev <= 0 || p->can_delete == 1) {
kill_ = 1;

if (this->parmy->color == 0)
no1++;
else
no2++;

if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " ninja " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;
}

}
else {
p->fightback(this);
}
}
void ninja::hurted(int npower, soldier *p) {
lifev -= npower;
for (int i = 0; i < 3; i++) {
if (p->pweapon[i] != NULL&&p->pweapon[i]->kind_no1 == 0 && p->pweapon[i]->exist == 1) {
lifev -= p->pweapon[i]->power;
p->pweapon[i]->update();
break;
}
}
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " ninja " << num << " was killed in city " << this->position << endl;
this->can_delete = 1;
}
}
void  ninja::fightback(soldier *p) {}

iceman::iceman(army *p, int to_num, int sort, int N) :soldier(p, to_num, sort,N) {
power = powerary[2];
lifev = lifevalue[2];
weapon_num = 1;
escape = 0;
switch (num % 3) {
case 0:pweapon[0] = new sword(this); break;
case 1:pweapon[0] = new bomb(this); break;
case 2:pweapon[0] = new arrow(this); break;
}

}
void iceman:: printing(int tm) {
string color = parmy->getcolor();
cout << setw(3) << setfill('0') << tm << ":";
cout << setw(2) << minu << " ";
cout << color << " " << "iceman" << " " << num << " born" << endl;
}
void iceman::attack(soldier *p) {
if (p->can_delete == 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " iceman " << num << " attacked " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm];
cout << " " << p->num << " in city " << this->position << " with " << this->lifev << " elements and force " << this->power << endl;

p->hurted(power, this);
}
if (p->lifev <= 0 || p->can_delete == 1) {
kill_ = 1;

if (this->parmy->color == 0)
no1++;
else
no2++;

if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " iceman " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;
}

}
else {
p->fightback(this);
}
}
void iceman::hurted(int npower, soldier *p) {
lifev -= npower;
for (int i = 0; i < 3; i++) {
if (p->pweapon[i] != NULL&&p->pweapon[i]->kind_no1 == 0 && p->pweapon[i]->exist == 1) {
lifev -= p->pweapon[i]->power;
p->pweapon[i]->update();
break;
}
}
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " iceman " << num << " was killed in city " << this->position << endl;
this->can_delete = 1;
}
}
void iceman::fightback(soldier *p) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " iceman " << num << " fought back against " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm] << " " << p->num << " in city " << this->position << endl;

p->hurted(power / 2,this);
if (p->lifev <= 0) {
kill_ = 1;

if (this->parmy->color == 0)
no1++;
else
no2++;

if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " iceman " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;

}

}
}

lion::lion(army *p, int to_num, int sort, int N) :soldier(p, to_num, sort,N) {
power = powerary[3];
lifev = lifevalue[3];
devote = p->total_life;
escape = 0;
weapon_num = 0;
}
void lion:: printing(int tm) {
string color = parmy->getcolor();
cout << setw(3) << setfill('0') << tm << ":";
cout << setw(2) << minu << " ";
cout << color << " " << "lion" << " " << num << " born" << endl;
cout << "Its loyalty is " << devote << endl;
}
void lion::attack(soldier *p) {
if (p->can_delete == 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " lion " << num << " attacked " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm];
cout << " " << p->num << " in city " << this->position << " with " << this->lifev << " elements and force " << this->power << endl;

p->hurted(power, this);
}
if (p->lifev <= 0 || p->can_delete == 1) {
kill_ = 1;

if (this->parmy->color == 0)
no1++;
else
no2++;

if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " lion " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;

}

}
else {

p->fightback(this);
devote -= K;
if (devote <= 0) {

if (this->parmy->color == 0 && this->position != Num + 1 || this->parmy->color == 1 && this->position != 0) {
escape = 1;

}
}
}
}
void lion::hurted(int npower, soldier *p) {
int ori = lifev;
lifev -= npower;
for (int i = 0; i < 3; i++) {
if (p->pweapon[i] != NULL&&p->pweapon[i]->kind_no1 == 0 && p->pweapon[i]->exist == 1) {
lifev -= p->pweapon[i]->power;
p->pweapon[i]->update();
break;
}
}
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " lion " << num << " was killed in city " << this->position << endl;

p->lifev +=ori;

this->can_delete = 1;
}
}
void lion::fightback(soldier *p) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " lion " << num << " fought back against " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm] << " " << p->num << " in city " << this->position << endl;

p->hurted(power / 2,this);
if (p->lifev <= 0) {
kill_ = 1;

if (this->parmy->color == 0)
no1++;
else
no2++;

if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " lion " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;
}

}
else
{
devote -= K;
if (devote <= 0) {
if (this->parmy->color == 0 && this->position != Num + 1 || this->parmy->color == 1 && this->position != 0) {
escape = 1;

}

}

}
}

wolf::wolf(army *p, int to_num, int sort, int N) :soldier(p, to_num, sort,N) {
power = powerary[4];
lifev = lifevalue[4];
n = 0;
weapon_num = 0;
for (int i = 0; i < 3; i++) {
pweapon[i] = NULL;
}
for (int i = 0; i < 3; i++) {
wep_sort[i] = -1;
}
escape = 0;
}
void wolf:: printing(int tm) {
string color = parmy->getcolor();
cout << setw(3) << setfill('0') << tm << ":";
cout << setw(2) << minu << " ";
cout << color << " " << "wolf" << " " << num << " born" << endl;
}
void wolf::attack(soldier *p) {
if (p->can_delete == 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " wolf " << num << " attacked " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm];
cout << " " << p->num << " in city " << this->position << " with " << this->lifev << " elements and force " << this->power << endl;

p->hurted(power, this);
}
if (p->lifev <= 0 || p->can_delete == 1) {
for (int i = 0; i < 3; i++) {
if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 0 && pweapon[i]->exist == 1) {
wep_sort[i] = 0;
}
else if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 0 && pweapon[i]->exist == 0) {
wep_sort[i] = -1;
}
if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 1 && pweapon[i]->exist == 1) {
wep_sort[i] = 1;
}
else if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 1 && pweapon[i]->exist == 0) {
wep_sort[i] = -1;
}
if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 2 && pweapon[i]->exist == 1) {
wep_sort[i] = 2;
}
else if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 2 && pweapon[i]->exist == 0) {
wep_sort[i] = -1;
}
}

if (p->sort_nm == 0 || p->sort_nm == 2) {
int time = 0;
for (int i = 0; i < 3; i++) {
if (p->pweapon[0]!=NULL&&p->pweapon[0]->kind_no1 != wep_sort[i])
time++;
}
if (time == 3) {
switch (p->pweapon[0]->kind_no1) {
case 0:pweapon[p->pweapon[0]->kind_no1] = new sword(this); break;
case 1:pweapon[p->pweapon[0]->kind_no1] = new bomb(this); break;
case 2:pweapon[p->pweapon[0]->kind_no1] = new arrow(this); break;
}
*pweapon[p->pweapon[0]->kind_no1] = *p->pweapon[0];
weapon_num++;
}
}
else if (p->sort_nm == 1) {
for (int j = 0; j < 2;j++) {
int time = 0;
for (int i = 0; i < 3; i++) {
if (p->pweapon[j] != NULL&&p->pweapon[j]->kind_no1 != wep_sort[i])
time++;
}
if (time == 3) {
switch (p->pweapon[j]->kind_no1) {
case 0:pweapon[p->pweapon[j]->kind_no1] = new sword(this); break;
case 1:pweapon[p->pweapon[j]->kind_no1] = new bomb(this); break;
case 2:pweapon[p->pweapon[j]->kind_no1] = new arrow(this); break;
}
*pweapon[p->pweapon[j]->kind_no1] = *p->pweapon[j];
weapon_num++;
}
}
}
else if (p->sort_nm == 4) {
for (int j = 0; j < 3; j++) {
int time = 0;
for (int i = 0; i < 3; i++) {
if (p->pweapon[j]!=NULL&&p->pweapon[j]->kind_no1 != wep_sort[i])
time++;
}
if (time == 3) {
switch (p->pweapon[j]->kind_no1) {
case 0:pweapon[p->pweapon[j]->kind_no1] = new sword(this); break;
case 1:pweapon[p->pweapon[j]->kind_no1] = new bomb(this); break;
case 2:pweapon[p->pweapon[j]->kind_no1] = new arrow(this); break;
}
*pweapon[p->pweapon[j]->kind_no1] = *p->pweapon[j];
weapon_num++;
}
}
}
kill_ = 1;

if (this->parmy->color == 0)
no1++;
else
no2++;
if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " wolf " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;

}

}
else {
p->fightback(this);
}
}
void wolf::hurted(int npower, soldier *p) {
lifev -= npower;
for (int i = 0; i < 3; i++) {
if (p->pweapon[i] != NULL&&p->pweapon[i]->kind_no1 == 0 && p->pweapon[i]->exist == 1) {
lifev -= p->pweapon[i]->power;
p->pweapon[i]->update();
break;
}
}
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu<< " ";
cout << this->parmy->getcolor() << " wolf " << num << " was killed in city " << this->position << endl;
this->can_delete = 1;

}
}
void wolf:: fightback(soldier *p) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " wolf " << num << " fought back against " << p->parmy->getcolor() << " " << soldier::names[p->sort_nm] << " " << p->num << " in city " << this->position << endl;

p->hurted(power / 2,this);
if (p->lifev <= 0) {
if (p->lifev <= 0) {
for (int i = 0; i < 3; i++) {
if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 0 && pweapon[i]->exist == 1) {
wep_sort[0] = 0;
}
else if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 0 && pweapon[i]->exist == 0) {
wep_sort[0] = -1;
}
if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 1 && pweapon[i]->exist == 1) {
wep_sort[1] = 1;
}
else if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 1 && pweapon[i]->exist == 0) {
wep_sort[1] = -1;
}
if (pweapon[i] != NULL&&pweapon[i]->kind_no1 == 2 && pweapon[i]->exist == 1) {
wep_sort[2] = 2;
}
else if(pweapon[i] != NULL&&pweapon[i]->kind_no1 == 2 && pweapon[i]->exist == 0) {
wep_sort[2] = -1;
}
}

if (p->sort_nm == 0 || p->sort_nm == 2) {
int time = 0;
for (int i = 0; i < 3; i++) {
if (p->pweapon[0] != NULL&&p->pweapon[0]->kind_no1 != wep_sort[i])
time++;
}
if (time == 3) {
switch (p->pweapon[0]->kind_no1) {
case 0:pweapon[p->pweapon[0]->kind_no1] = new sword(this); break;
case 1:pweapon[p->pweapon[0]->kind_no1] = new bomb(this); break;
case 2:pweapon[p->pweapon[0]->kind_no1] = new arrow(this); break;
}
*pweapon[p->pweapon[0]->kind_no1] = *p->pweapon[0];
weapon_num++;
}
}
else if (p->sort_nm == 1) {
for (int j = 0; j < 2; j++) {
int time = 0;
for (int i = 0; i < 3; i++) {
if (p->pweapon[j] != NULL&&p->pweapon[j]->kind_no1 != wep_sort[i])
time++;
}
if (time == 3) {
switch (p->pweapon[j]->kind_no1) {
case 0:pweapon[p->pweapon[j]->kind_no1] = new sword(this); break;
case 1:pweapon[p->pweapon[j]->kind_no1] = new bomb(this); break;
case 2:pweapon[p->pweapon[j]->kind_no1] = new arrow(this); break;
}
*pweapon[p->pweapon[j]->kind_no1] = *p->pweapon[j];
weapon_num++;
}
}
}
else if (p->sort_nm == 4) {
for (int j = 0; j < 3; j++) {
int time = 0;
for (int i = 0; i < 3; i++) {
if (p->pweapon[j] != NULL&& p->pweapon[j]->kind_no1 != wep_sort[i])
time++;
}
if (time == 3) {
switch (p->pweapon[j]->kind_no1) {
case 0:pweapon[p->pweapon[j]->kind_no1] = new sword(this); break;
case 1:pweapon[p->pweapon[j]->kind_no1] = new bomb(this); break;
case 2:pweapon[p->pweapon[j]->kind_no1] = new arrow(this); break;
}
*pweapon[p->pweapon[j]->kind_no1] = *p->pweapon[j];
weapon_num++;
}
}
}

kill_ = 1;

if (this->parmy->color == 0)
no1++;
else
no2++;

if (this->pcity->life > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " wolf " << num << " earned " << this->pcity->life << " elements for his headquarter" << endl;
}

}

}
}

void army::produce(int tm,int N) {
int sort_num = pro_order[color][order_index];
if (total_life >= soldier::lifevalue[sort_num]) {
total_life -= soldier::lifevalue[sort_num];
switch (sort_num) {
case 0:psoldier[total_num] = new dragon(this, total_num + 1, sort_num, N); break;
case 1:psoldier[total_num] = new ninja(this, total_num + 1, sort_num, N); break;
case 2:psoldier[total_num] = new iceman(this, total_num + 1, sort_num, N); break;
case 3:psoldier[total_num] = new lion(this, total_num + 1, sort_num, N); break;
case 4:psoldier[total_num] = new wolf(this, total_num + 1, sort_num, N); break;
}
soldier1[sort_num]++;
psoldier[total_num]->printing(tm);
total_num++;
order_index = (order_index + 1) % 5;

}
}
string army::getcolor()
{
if (color == 0)
return "red";
else
return "blue";
}
int army::pro_order[2][5] = { { 2,3,4,1,0 },{ 3,0,1,2,4 } };//生产顺序
int soldier::lifevalue[5];
string soldier::names[5] = { "dragon","ninja","iceman","lion","wolf" };
string weapon::name[3] = { "sword","bomb","arrow" };
int soldier::powerary[5];
int soldier::no1;
int soldier::no2;

void city::init(int i) {
num = i;
life = 0;

}
void city:: supply_life() {
if ((psoldier[0] != NULL&&psoldier[0]->can_delete==0)&&(psoldier[1] == NULL||psoldier[1]->can_delete==1)&&life>0) {

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << psoldier[0]->parmy->getcolor() << " " << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << " earned " << life << " elements for his headquarter" << endl;

psoldier[0]->parmy->total_life += life;
life = 0;

}
else if ((psoldier[1] != NULL&&psoldier[1]->can_delete == 0)&&(psoldier[0] == NULL || psoldier[0]->can_delete == 1) && life>0) {

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << psoldier[1]->parmy->getcolor() << " " << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << " earned " << life << " elements for his headquarter" << endl;
psoldier[1]->parmy->total_life += life;
life = 0;
}
}
void city::battle() {
if (psoldier[0] != NULL&&psoldier[1] != NULL &&psoldier[0]->escape==0&& psoldier[1]->escape==0) {
if ((((num % 2 == 1&&color!=1) || color == 0)&&psoldier[0]->can_delete == 0 )|| ((((num % 2 == 0 && color != 0) || color == 1)&& psoldier[0]->can_delete == 0 && psoldier[1]->can_delete == 1))){
psoldier[0]->attack(psoldier[1]);
if (psoldier[0]->lifev > 0 && psoldier[1]->lifev>0) {
a[0] = 0;
a[1] = 0;
}

}
else if (((num % 2 == 0&&color!=0) || color == 1)&&psoldier[1]->can_delete == 0 || (((num % 2 == 1 && color != 1) || color == 0) && psoldier[0]->can_delete == 1&&psoldier[1]->can_delete == 0)){
psoldier[1]->attack(psoldier[0]);
if (psoldier[0]->lifev > 0 && psoldier[1]->lifev>0) {
a[0] = 0;
a[1] = 0;
}
}
}
if ((psoldier[0]!=NULL&&psoldier[0]->can_delete==0)&&(psoldier[1]!=NULL&&psoldier[1]->can_delete==1 )) {

a[0]++;
a[1] = 0;
}
else if ((psoldier[1] != NULL&&psoldier[1]->can_delete == 0) && (psoldier[0] != NULL&&psoldier[0]->can_delete == 1)) {

a[1]++;
a[0] = 0;
}

if (a[0] == 2 && (color == 1||color==2))
{
color = 0;
a[0] = 0;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << psoldier[0]->parmy->getcolor() << " flag raised in city " << num << endl;
}
if (a[1] == 2 && (color == 0||color==2))
{
color = 1;
a[1] = 0;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << psoldier[1]->parmy->getcolor() << " flag raised in city " << num << endl;
}

}
void city::printing() {
if (psoldier[0]!=NULL&&psoldier[0]->can_delete == 0&& psoldier[0]->position<=Num) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << psoldier[0]->parmy->getcolor() << " " << psoldier[0]->names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << " marched to city " << psoldier[0]->position;
cout << " with " << psoldier[0]->lifev << " elements and force " << psoldier[0]->power << endl;

}
if (psoldier[1] != NULL&&psoldier[1]->can_delete == 0 && psoldier[1]->position >=1) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << psoldier[1]->parmy->getcolor() << " " << psoldier[1]->names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << " marched to city " << psoldier[1]->position;
cout << " with " << psoldier[1]->lifev << " elements and force " << psoldier[1]->power << endl;

}
}

void city::shoot() {
for (int i = 0; i < 3;i++)
if (this->psoldier[0]!=NULL&&this->psoldier[0]->pweapon[i]!=NULL&&this->psoldier[0]->pweapon[i]->kind_no1 == 2&& this->psoldier[0]->pweapon[i]->exist==1 && this->num <= Num - 1&&ct[(this->num) + 1].psoldier[1]!=NULL&&ct[(this->num) + 1].psoldier[1]->can_delete==0) {
ct[(this->num) + 1].psoldier[1]->lifev -=psoldier[0]->pweapon[i]->power;
if (ct[(this->num) + 1].psoldier[1]->lifev > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << " shot" << endl;
}

psoldier[0]->pweapon[i]->update();

if (ct[(this->num) + 1].psoldier[1]->lifev <= 0) {
ct[this->num + 1].psoldier[1]->can_delete = 1;

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << " shot and killed blue " << soldier::names[ct[(this->num) + 1].psoldier[1]->sort_nm] <<" "<< ct[(this->num) + 1].psoldier[1]->num << endl;

}
if (psoldier[0]->pweapon[i]->fight_num == 3) {
psoldier[0]->pweapon[i]->exist = 0;
}
}
for (int i = 0; i < 3; i++)
if (this->psoldier[1]!=NULL&&this->psoldier[1]->pweapon[i] != NULL&&this->psoldier[1]->pweapon[i]->kind_no1 == 2 && this->psoldier[1]->pweapon[i]->exist == 1 && this->num >=2 && ct[(this->num) - 1].psoldier[0] != NULL&&ct[(this->num) - 1].psoldier[0]->can_delete ==0) {
ct[(this->num) - 1].psoldier[0]->lifev -= psoldier[1]->pweapon[i]->power;
if (ct[(this->num) - 1].psoldier[0]->lifev > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << " shot" << endl;
}
psoldier[1]->pweapon[i]->update();
if (ct[(this->num) - 1].psoldier[0]->lifev <= 0) {
ct[this->num - 1].psoldier[0]->can_delete = 1;

cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << " shot and killed red " << soldier::names[ct[(this->num) - 1].psoldier[0]->sort_nm] << " " << ct[(this->num) - 1].psoldier[0]->num << endl;

}
if (psoldier[1]->pweapon[i]->fight_num == 3) {
psoldier[1]->pweapon[i]->exist = 0;
}
}

}

void city::judge() {
if ((num % 2 == 1 && color != 1) || color == 0) {

if (psoldier[0] != NULL&&psoldier[0]->can_delete == 0 && psoldier[1] != NULL&&psoldier[1]->can_delete == 0) {
int b = psoldier[1]->lifev - psoldier[0]->power;
for (int j = 0; j < 3; j++) {
if (psoldier[0]->pweapon[j] != NULL&&psoldier[0]->pweapon[j]->kind_no1 == 0) {
b = b - psoldier[0]->pweapon[j]->power;
break;
}
}
if (b > 0&&psoldier[1]->sort_nm!=1) {
int f = psoldier[0]->lifev - (psoldier[1]->power) / 2;
for (int j = 0; j < 3; j++) {
if (psoldier[1]->pweapon[j] != NULL&&psoldier[1]->pweapon[j]->kind_no1 == 0) {
f = f - psoldier[1]->pweapon[j]->power;
break;
}
}
if (f <= 0) {
for (int i = 0; i < 3; i++) {
if (psoldier[0]->pweapon[i]!=NULL&&psoldier[0]->pweapon[i]->kind_no1 == 1) {
psoldier[0]->pweapon[i]->fight_num++;
psoldier[0]->pweapon[i]->exist = 0;
psoldier[0]->lifev = 0;
psoldier[1]->lifev = 0;
psoldier[0]->can_delete = 1;
psoldier[1]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << " used a bomb and killed blue " << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << endl;
}
}
}
}
else if (b <= 0) {
for (int i = 0; i < 3; i++) {
if (psoldier[1]->pweapon[i]!=NULL&&psoldier[1]->pweapon[i]->kind_no1 == 1) {
psoldier[1]->pweapon[i]->fight_num++;
psoldier[1]->pweapon[i]->exist = 0;
psoldier[0]->lifev = 0;
psoldier[1]->lifev = 0;
psoldier[0]->can_delete = 1;
psoldier[1]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << " used a bomb and killed red " << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << endl;

}

}
}
}
}

else if ((num % 2 == 0 && color != 0) || color == 1) {
if (psoldier[0] != NULL&&psoldier[0]->can_delete == 0 && psoldier[1] != NULL&&psoldier[1]->can_delete == 0) {
int b = psoldier[0]->lifev - psoldier[1]->power;
for (int j = 0; j < 3; j++) {
if (psoldier[1]->pweapon[j] != NULL&&psoldier[1]->pweapon[j]->kind_no1 == 0) {
b = b - psoldier[1]->pweapon[j]->power;
break;
}
}
if (b > 0&& psoldier[0]->sort_nm!=1) {
int f = psoldier[1]->lifev - (psoldier[0]->power) / 2;
for (int j = 0; j < 3; j++) {
if (psoldier[0]->pweapon[j] != NULL&&psoldier[0]->pweapon[j]->kind_no1 == 0) {
f = f - psoldier[0]->pweapon[j]->power;
break;
}
}
if (f <= 0) {
for (int i = 0; i < 3; i++) {
if (psoldier[1]->pweapon[i]!=NULL&&psoldier[1]->pweapon[i]->kind_no1 == 1) {
psoldier[1]->pweapon[i]->fight_num++;
psoldier[1]->pweapon[i]->exist = 0;
psoldier[0]->lifev = 0;
psoldier[1]->lifev = 0;
psoldier[0]->can_delete = 1;
psoldier[1]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << " used a bomb and killed red " << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << endl;
}
}
}
}
else if (b <= 0) {
for (int i = 0; i < 3; i++) {
if (psoldier[0]->pweapon[i]!=NULL&&psoldier[0]->pweapon[i]->kind_no1 == 1) {
psoldier[0]->pweapon[i]->fight_num++;
psoldier[0]->pweapon[i]->exist = 0;
psoldier[0]->lifev = 0;
psoldier[1]->lifev = 0;
psoldier[0]->can_delete = 1;
psoldier[1]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << " used a bomb and killed blue " << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << endl;

}

}
}
}
}
}

void city::printing_red() {
if (psoldier[0] != NULL&& psoldier[0]->can_delete!=1) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " red ";
cout << soldier::names[psoldier[0]->sort_nm] << " " << psoldier[0]->num << " has ";
if (psoldier[0]->sort_nm == 4) {
if (psoldier[0]->pweapon[2] != NULL&&psoldier[0]->pweapon[2]->exist == 1) {
cout << "arrow(" << (3 - psoldier[0]->pweapon[2]->fight_num) << ")";
if (psoldier[0]->pweapon[1] != NULL&&psoldier[0]->pweapon[1]->exist == 1 || psoldier[0]->pweapon[0] != NULL&&psoldier[0]->pweapon[0]->exist == 1)
{
cout << ",";
}
}
if (psoldier[0]->pweapon[1] != NULL&&psoldier[0]->pweapon[1]->exist == 1) {
cout << "bomb";

if (psoldier[0]->pweapon[0] != NULL&&psoldier[0]->pweapon[0]->exist == 1)
cout << ",";
}
if (psoldier[0]->pweapon[0] != NULL&&psoldier[0]->pweapon[0]->exist == 1) {
cout << "sword(" << psoldier[0]->pweapon[0]->power << ")";
}
if ((psoldier[0]->pweapon[0] == NULL || psoldier[0]->pweapon[0]->exist == 0) && (psoldier[0]->pweapon[1] == NULL || psoldier[0]->pweapon[1]->exist == 0) && (psoldier[0]->pweapon[2] == NULL || psoldier[0]->pweapon[2]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (psoldier[0]->sort_nm == 1) {
if (psoldier[0]->pweapon[1] != NULL&&psoldier[0]->pweapon[1]->exist == 1) {

if (psoldier[0]->pweapon[1]->kind_no1 == 2) {
cout << "arrow(" << (3 - psoldier[0]->pweapon[1]->fight_num) << ")";
}
if (psoldier[0]->pweapon[1]->kind_no1 == 1) {
cout << "bomb";
}
if (psoldier[0]->pweapon[0] != NULL&&psoldier[0]->pweapon[0]->exist == 1)
cout << ",";
}
if (psoldier[0]->pweapon[0] != NULL&&psoldier[0]->pweapon[0]->exist == 1) {
if (psoldier[0]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (psoldier[0]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << psoldier[0]->pweapon[0]->power << ")";
}

}
if ((psoldier[0]->pweapon[0] == NULL || psoldier[0]->pweapon[0]->exist == 0) && (psoldier[0]->pweapon[1] == NULL || psoldier[0]->pweapon[1]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (psoldier[0]->sort_nm == 0 || psoldier[0]->sort_nm == 2) {
if (psoldier[0]->pweapon[0] != NULL&&psoldier[0]->pweapon[0]->exist == 1) {
if (psoldier[0]->pweapon[0]->kind_no1 == 2) {
cout << "arrow(" << (3 - psoldier[0]->pweapon[0]->fight_num) << ")";
}
if (psoldier[0]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (psoldier[0]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << psoldier[0]->pweapon[0]->power << ")";
}

}
if (psoldier[0]->pweapon[0] == NULL || psoldier[0]->pweapon[0]->exist == 0)
cout << "no weapon";
cout << endl;
}
if (psoldier[0]->sort_nm == 3) {
cout << "no weapon" << endl;
}
}

}
void city::printing_blue() {
if (psoldier[1] != NULL&&psoldier[1]->can_delete!=1) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " blue ";
cout << soldier::names[psoldier[1]->sort_nm] << " " << psoldier[1]->num << " has ";
if (psoldier[1]->sort_nm == 4) {
if (psoldier[1]->pweapon[2] != NULL&&psoldier[1]->pweapon[2]->exist == 1) {
cout << "arrow(" << (3 - psoldier[1]->pweapon[2]->fight_num) << ")";
if (psoldier[1]->pweapon[1] != NULL&&psoldier[1]->pweapon[1]->exist == 1 || psoldier[1]->pweapon[0] != NULL&&psoldier[1]->pweapon[0]->exist == 1)
{
cout << ",";
}
}
if (psoldier[1]->pweapon[1] != NULL&&psoldier[1]->pweapon[1]->exist == 1) {
cout << "bomb";

if (psoldier[1]->pweapon[0] != NULL&&psoldier[1]->pweapon[0]->exist == 1)
cout << ",";
}
if (psoldier[1]->pweapon[0] != NULL&&psoldier[1]->pweapon[0]->exist == 1) {
cout << "sword(" << psoldier[1]->pweapon[0]->power << ")";
}
if ((psoldier[1]->pweapon[0] == NULL || psoldier[1]->pweapon[0]->exist == 0) && (psoldier[1]->pweapon[1] == NULL || psoldier[1]->pweapon[1]->exist == 0) && (psoldier[1]->pweapon[2] == NULL || psoldier[1]->pweapon[2]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (psoldier[1]->sort_nm == 1) {
if (psoldier[1]->pweapon[1] != NULL&&psoldier[1]->pweapon[1]->exist == 1) {

if (psoldier[1]->pweapon[1]->kind_no1 == 2) {
cout << "arrow(" << (3 - psoldier[1]->pweapon[1]->fight_num) << ")";
}
if (psoldier[1]->pweapon[1]->kind_no1 == 1) {
cout << "bomb";
}
if (psoldier[1]->pweapon[0] != NULL&&psoldier[1]->pweapon[0]->exist == 1)
cout << ",";
}
if (psoldier[1]->pweapon[0] != NULL&&psoldier[1]->pweapon[0]->exist == 1) {
if (psoldier[1]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (psoldier[1]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << psoldier[1]->pweapon[0]->power << ")";
}

}
if ((psoldier[1]->pweapon[0] == NULL || psoldier[1]->pweapon[0]->exist == 0) && (psoldier[1]->pweapon[1] == NULL || psoldier[1]->pweapon[1]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (psoldier[1]->sort_nm == 0 || psoldier[1]->sort_nm == 2){
if (psoldier[1]->pweapon[0] != NULL&&psoldier[1]->pweapon[0]->exist == 1) {
if (psoldier[1]->pweapon[0]->kind_no1 == 2) {
cout << "arrow(" << (3 - psoldier[1]->pweapon[0]->fight_num) << ")";
}
if (psoldier[1]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (psoldier[1]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << psoldier[1]->pweapon[0]->power << ")";
}

}
if (psoldier[1]->pweapon[0] == NULL || psoldier[1]->pweapon[0]->exist == 0)
cout << "no weapon";
cout << endl;
}
if (psoldier[1]->sort_nm == 3) {
cout << "no weapon" << endl;
}
}
}

void army::remove (){//阵营所有的武士进行移动。
if (this->color == 0)
for (int i = 0; i < this->total_num; i++) {
if (this->psoldier[i]->can_delete==0) {
this->psoldier[i]->remv = 1;
this->psoldier[i]->position++;
if (this->psoldier[i]->position < Num + 1) {
this->psoldier[i]->pcity = &ct[this->psoldier[i]->position];
ct[this->psoldier[i]->position].psoldier[0] = this->psoldier[i];
}
else if (this->psoldier[i]->position = Num + 1) {
this->psoldier[i]->pcity = NULL;
}

if (this->psoldier[i]->position >= 2) {
ct[this->psoldier[i]->position - 1].psoldier[0] = NULL;
}
if (this->psoldier[i]->position % 2 == 0 && this->psoldier[i]->sort_nm == 2) {
if (this->psoldier[i]->lifev>9) {
this->psoldier[i]->lifev -= 9;
}
else
this->psoldier[i]->lifev = 1;
this->psoldier[i]->power += 20;
}

}
}
else
for (int i = 0; i < this->total_num; i++) {
if (this->psoldier[i]->can_delete==0) {
this->psoldier[i]->remv = 1;
this->psoldier[i]->position--;
if (this->psoldier[i]->position > 0) {
this->psoldier[i]->pcity = &ct[this->psoldier[i]->position];
ct[this->psoldier[i]->position].psoldier[1] = this->psoldier[i];
}
else if (this->psoldier[i]->position == 0) {
this->psoldier[i]->pcity = NULL;
}

if (this->psoldier[i]->position <=Num-1) {
ct[this->psoldier[i]->position + 1].psoldier[1] = NULL;
}

if (Num % 2 == 1) {
if (this->psoldier[i]->position % 2 == 0 && this->psoldier[i]->sort_nm == 2) {
if (this->psoldier[i]->lifev>9) {
this->psoldier[i]->lifev -= 9;
}
else
this->psoldier[i]->lifev = 1;
this->psoldier[i]->power += 20;
}
}
else {
if (this->psoldier[i]->position % 2 == 1 && this->psoldier[i]->sort_nm == 2) {
if (this->psoldier[i]->lifev > 9) {
this->psoldier[i]->lifev -= 9;
}
else
this->psoldier[i]->lifev = 1;
this->psoldier[i]->power += 20;
}
}

}
}
}

void army::shoot() {
if (color == 0)
if (this->psoldier[total_num] != NULL&&this->psoldier[total_num]->position == 0 && ct[1].psoldier[1] != NULL&&ct[1].psoldier[1]->can_delete == 0) {
for (int i = 0; i < 3; i++)
if (this->psoldier[total_num]->pweapon[i]->kind_no1 == 2 && this->psoldier[total_num]->pweapon[i]->exist == 1) {
ct[1].psoldier[1]->lifev -= psoldier[total_num]->pweapon[i]->power;
if (ct[1].psoldier[1]->lifev > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[psoldier[total_num]->sort_nm] << " " << psoldier[total_num]->num << " shot" << endl;
}
psoldier[total_num]->pweapon[i]->update();
if (ct[1].psoldier[1]->lifev <= 0) {
ct[1].psoldier[1]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[psoldier[total_num]->sort_nm] << " " << psoldier[total_num]->num << " shot and killed blue " << soldier::names[ct[1].psoldier[1]->sort_nm] << " " << ct[1].psoldier[1]->num << endl;

}
}
}

if (color == 1)
if (this->psoldier[total_num] != NULL&&this->psoldier[total_num]->position == Num + 1 && ct[Num].psoldier[0] != NULL&&ct[1].psoldier[0]->can_delete == 0) {
for (int i = 0; i < 3; i++)
if (this->psoldier[total_num]->pweapon[i]->kind_no1 == 2 && this->psoldier[total_num]->pweapon[i]->exist == 1) {
ct[Num].psoldier[0]->lifev -= psoldier[total_num]->pweapon[i]->power;
if (ct[Num].psoldier[0]->lifev > 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[psoldier[total_num]->sort_nm] << " " << psoldier[total_num]->num << " shot" << endl;
}
psoldier[total_num]->pweapon[i]->update();
if (ct[Num].psoldier[0]->lifev <= 0) {
ct[Num].psoldier[0]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[psoldier[total_num]->sort_nm] << " " << psoldier[total_num]->num << " shot and killed red " << soldier::names[ct[Num].psoldier[0]->sort_nm] << " " << ct[Num].psoldier[0]->num << endl;

}
}
}

}

int main() {
int n, M, j,N,T;
cin >> n;
for (j = 1; j <= n; j++) {
flag1 =flag2 =t = minu = 0;
Num = 0;
cin >> M>>N>>R>>K>>T;
Num = N;
for (int i = 1; i <= Num; i++) {
ct[i].init(i);
}

army *redarmy = new army(0, M);
army *bluearmy = new army(1, M);
for (int i = 0; i < 5; i++)
cin >> soldier::lifevalue[i];
for (int i = 0; i < 5; i++)
cin >> soldier::powerary[i];
cout << "Case " << j <<":"<< endl;
while (true) {
redarmy->produce(t, N);//N个城市
bluearmy->produce(t, N);
minu += 5;
if (t * 60 + minu > T)
break;
if (redarmy->total_num >= 1) {
if (redarmy->psoldier[redarmy->total_num - 1] != NULL&&redarmy->psoldier[redarmy->total_num - 1]->sort_nm == 3) {
if (redarmy->psoldier[redarmy->total_num - 1]->devote <= 0 && redarmy->psoldier[redarmy->total_num - 1]->escape == 0) {
redarmy->psoldier[redarmy->total_num - 1]->can_delete = 1;
if (redarmy->psoldier[redarmy->total_num - 1]->escape == 0) {
redarmy->psoldier[redarmy->total_num - 1]->escape = 1;
}
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[redarmy->psoldier[redarmy->total_num - 1]->sort_nm] << " " << redarmy->total_num << " ran away" << endl;

}
}
}
for (int i = 1; i <= Num; i++) {
if (ct[i].psoldier[0]!=NULL&&ct[i].psoldier[0]->sort_nm == 3) {
if (ct[i].psoldier[0]->escape == 1) {
ct[i].psoldier[0]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red " << soldier::names[ct[i].psoldier[0]->sort_nm] << " " << ct[i].psoldier[0]->num << " ran away" << endl;

}
}
if (ct[i].psoldier[1]!=NULL&&ct[i].psoldier[1]->sort_nm == 3) {
if (ct[i].psoldier[1]->escape == 1 ) {
ct[i].psoldier[1]->can_delete = 1;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[ct[i].psoldier[1]->sort_nm] << " " << ct[i].psoldier[1]->num << " ran away" << endl;

}
}
}
if (bluearmy->total_num >= 1) {
if (bluearmy->psoldier[bluearmy->total_num - 1] != NULL&&bluearmy->psoldier[bluearmy->total_num - 1]->sort_nm == 3) {
if (bluearmy->psoldier[bluearmy->total_num - 1]->devote <= 0 && bluearmy->psoldier[bluearmy->total_num - 1]->escape == 0) {
bluearmy->psoldier[bluearmy->total_num - 1]->can_delete = 1;
if (bluearmy->psoldier[bluearmy->total_num - 1]->escape == 0) {
bluearmy->psoldier[bluearmy->total_num - 1]->escape = 1;
}
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue " << soldier::names[bluearmy->psoldier[bluearmy->total_num - 1]->sort_nm] << " " << bluearmy->total_num << " ran away" << endl;

}
}
}
minu += 5;
if (t * 60 + minu > T)
break;
redarmy->remove();
bluearmy->remove();

for (int i = 0; i < bluearmy->total_num; i++)
if (bluearmy->psoldier[i]->position == 0 && bluearmy->psoldier[i]->can_delete == 0) {
flag2++;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << bluearmy->getcolor() << " " << soldier::names[bluearmy->psoldier[i]->sort_nm] << " " << bluearmy->psoldier[i]->num << " reached red headquarter with ";
cout << bluearmy->psoldier[i]->lifev << " elements and force " << bluearmy->psoldier[i]->power << endl;
bluearmy->psoldier[i]->can_delete = 1;
}

if (flag2 == 2) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "red headquarter was taken" << endl;

}

for (int i = 1; i <= Num; i++) {
ct[i].printing();
}
for (int i = 0; i < redarmy->total_num; i++)
if (redarmy->psoldier[i]->position == Num + 1 && redarmy->psoldier[i]->can_delete == 0) {
flag1++;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << redarmy->getcolor() << " " << soldier::names[redarmy->psoldier[i]->sort_nm] << " " << redarmy->psoldier[i]->num << " reached blue headquarter with ";
cout << redarmy->psoldier[i]->lifev << " elements and force " << redarmy->psoldier[i]->power << endl;
redarmy->psoldier[i]->can_delete = 1;
}

if (flag1 == 2) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << "blue headquarter was taken" << endl;
break;
}
if (flag2 == 2) {
break;
}

minu += 10;
if (t * 60 + minu > T)
break;
for (int i = 1; i <= Num; i++) {
ct[i].produce_life();
}
minu += 10;
if (t * 60 + minu > T)
break;
for (int i = 1; i <= Num; i++) {
ct[i].supply_life();
}
minu += 5;

if (t * 60 + minu > T)
break;
redarmy->shoot();
for (int i = 1; i <= Num; i++) {
ct[i].shoot();
}
bluearmy->shoot();
minu += 3;
if (t * 60 + minu > T)
break;
for (int i = 1; i <= Num; i++) {
ct[i].judge();
}

minu += 2;
if (t * 60 + minu > T)
break;
for (int i = 1; i <= Num; i++) {
ct[i].battle();

}
for (int i = 1; i <= Num; i++) {
for (int j = 0; j < 3; j++) {
if (ct[i].psoldier[0] != NULL&&ct[i].psoldier[0]->pweapon[j] != NULL)
ct[i].psoldier[0]->pweapon[j]->check();
if (ct[i].psoldier[1] != NULL&& ct[i].psoldier[1]->pweapon[j] != NULL)
ct[i].psoldier[1]->pweapon[j]->check();
if (ct[i].psoldier[0] != NULL&& ct[i].psoldier[0]->pweapon[j] != NULL&&ct[i].psoldier[0]->pweapon[j]->exist == 0) {
ct[i].psoldier[0]->weapon_num--;

ct[i].psoldier[0]->pweapon[j] = NULL;
}
if (ct[i].psoldier[1] != NULL&&ct[i].psoldier[1]->pweapon[j] != NULL&&ct[i].psoldier[1]->pweapon[j]->exist == 0) {
ct[i].psoldier[1]->weapon_num--;

ct[i].psoldier[1]->pweapon[j] = NULL;
}
}

}

for (int i = Num; i >= 1; i--) {
if (ct[i].psoldier[0]!=NULL&&ct[i].psoldier[0]->kill_ == 1&&ct[i].psoldier[0]->parmy->total_life>=8) {

ct[i].psoldier[0]->parmy->total_life -= 8;
ct[i].psoldier[0]->lifev += 8;
soldier::no1--;
}
if (ct[i].psoldier[0] != NULL&&soldier::no1 == 0 || (ct[i].psoldier[0] != NULL&&ct[i].psoldier[0]->parmy->total_life < 8))
break;
}
for (int i = 1; i <= Num; i++) {
if (ct[i].psoldier[0] != NULL&&ct[i].psoldier[0]->kill_ == 1) {
ct[i].psoldier[0]->parmy->total_life += ct[i].life;
ct[i].life = 0;
}
}
for (int i = 1; i <= Num; i++) {
if (ct[i].psoldier[1] != NULL&&ct[i].psoldier[1]->kill_ == 1 && ct[i].psoldier[1]->parmy->total_life >= 8) {
ct[i].psoldier[1]->parmy->total_life -= 8;
ct[i].psoldier[1]->lifev += 8;
soldier::no2--;
}
if (ct[i].psoldier[1] != NULL&&soldier::no2 == 0|| (ct[i].psoldier[1] != NULL&&ct[i].psoldier[1]->parmy->total_life < 8))
break;
}
for (int i = 1; i <= Num; i++) {
if (ct[i].psoldier[1] != NULL&&ct[i].psoldier[1]->kill_ == 1) {
ct[i].psoldier[1]->parmy->total_life += ct[i].life;
ct[i].life = 0;
}
}

for (int i = 1; i <= Num; i++) {
if (ct[i].psoldier[0] != NULL&&ct[i].psoldier[0]->kill_ == 1) {
ct[i].psoldier[0]->kill_ = 0;
}
if (ct[i].psoldier[1] != NULL&&ct[i].psoldier[1]->kill_ == 1) {
ct[i].psoldier[1]->kill_ = 0;
}

}
minu += 10;
if (t * 60 + minu > T)
break;
redarmy->printing();
bluearmy->printing();
minu += 5;
if (t * 60 + minu > T)
break;

for (int i = 1; i <= Num; i++) {
ct[i].printing_red();
}
for (int i = 0; i < redarmy->total_num; i++) {
if (redarmy->psoldier[i]->position == Num + 1) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " red ";
cout << soldier::names[redarmy->psoldier[i]->sort_nm] << " " << redarmy->psoldier[i]->num << " has ";
if (redarmy->psoldier[i]->sort_nm == 4) {
if (redarmy->psoldier[i]->pweapon[2] != NULL&&redarmy->psoldier[i]->pweapon[2]->exist == 1) {
cout << "arrow(" << (3 - redarmy->psoldier[i]->pweapon[2]->fight_num) << ")";
if (redarmy->psoldier[i]->pweapon[1] != NULL&&redarmy->psoldier[i]->pweapon[1]->exist == 1 || redarmy->psoldier[i]->pweapon[0] != NULL&&redarmy->psoldier[i]->pweapon[0]->exist == 1)
{
cout << ",";
}
}
if (redarmy->psoldier[i]->pweapon[1] != NULL&&redarmy->psoldier[i]->pweapon[1]->exist == 1) {
cout << "bomb";

if (redarmy->psoldier[i]->pweapon[0] != NULL&&redarmy->psoldier[i]->pweapon[0]->exist == 1)
cout << ",";
}
if (redarmy->psoldier[i]->pweapon[0] != NULL&&redarmy->psoldier[i]->pweapon[0]->exist == 1) {
cout << "sword(" << redarmy->psoldier[i]->pweapon[0]->power << ")";
}
if ((redarmy->psoldier[i]->pweapon[0] == NULL || redarmy->psoldier[i]->pweapon[0]->exist == 0) && (redarmy->psoldier[i]->pweapon[1] == NULL || redarmy->psoldier[i]->pweapon[1]->exist == 0) && (redarmy->psoldier[i]->pweapon[2] == NULL || redarmy->psoldier[i]->pweapon[2]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (redarmy->psoldier[i]->sort_nm == 1) {
if (redarmy->psoldier[i]->pweapon[1] != NULL&&redarmy->psoldier[i]->pweapon[1]->exist == 1) {

if (redarmy->psoldier[i]->pweapon[1]->kind_no1 == 2) {
cout << "arrow(" << (3 - redarmy->psoldier[i]->pweapon[1]->fight_num) << ")";
}
if (redarmy->psoldier[i]->pweapon[1]->kind_no1 == 1) {
cout << "bomb";
}
if (redarmy->psoldier[i]->pweapon[0] != NULL&&redarmy->psoldier[i]->pweapon[0]->exist == 1)
cout << ",";
}
if (redarmy->psoldier[i]->pweapon[0] != NULL&&redarmy->psoldier[i]->pweapon[0]->exist == 1) {
if (redarmy->psoldier[i]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (redarmy->psoldier[i]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << redarmy->psoldier[i]->pweapon[0]->power << ")";
}

}
if ((redarmy->psoldier[i]->pweapon[0] == NULL || redarmy->psoldier[i]->pweapon[0]->exist == 0) && (redarmy->psoldier[i]->pweapon[1] == NULL || redarmy->psoldier[i]->pweapon[1]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (redarmy->psoldier[i]->sort_nm == 0 || redarmy->psoldier[i]->sort_nm == 2) {
if (redarmy->psoldier[i]->pweapon[0] != NULL&&redarmy->psoldier[i]->pweapon[0]->exist == 1) {
if (redarmy->psoldier[i]->pweapon[0]->kind_no1 == 2) {
cout << "arrow(" << (3 - redarmy->psoldier[i]->pweapon[0]->fight_num) << ")";
}
if (redarmy->psoldier[i]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (redarmy->psoldier[i]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << redarmy->psoldier[i]->pweapon[0]->power << ")";
}

}
if (redarmy->psoldier[i]->pweapon[0] == NULL || redarmy->psoldier[i]->pweapon[0]->exist == 0)
cout << "no weapon";
cout << endl;
}
if (redarmy->psoldier[i]->sort_nm == 3) {
cout << "no weapon" << endl;
}
}
}
for (int i = 0; i < bluearmy->total_num; i++) {
{
if (bluearmy->psoldier[i]->position == 0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " blue ";
cout << soldier::names[bluearmy->psoldier[i]->sort_nm] << " " << bluearmy->psoldier[i]->num << " has ";
if (bluearmy->psoldier[i]->sort_nm == 4) {
if (bluearmy->psoldier[i]->pweapon[2] != NULL&&bluearmy->psoldier[i]->pweapon[2]->exist == 1) {
cout << "arrow(" << (3 - bluearmy->psoldier[i]->pweapon[2]->fight_num) << ")";
if (bluearmy->psoldier[i]->pweapon[1] != NULL&&bluearmy->psoldier[i]->pweapon[1]->exist == 1 || bluearmy->psoldier[i]->pweapon[0] != NULL&&bluearmy->psoldier[i]->pweapon[0]->exist == 1)
{
cout << ",";
}
}
if (bluearmy->psoldier[i]->pweapon[1] != NULL&&bluearmy->psoldier[i]->pweapon[1]->exist == 1) {
cout << "bomb";

if (bluearmy->psoldier[i]->pweapon[0] != NULL&&bluearmy->psoldier[i]->pweapon[0]->exist == 1)
cout << ",";
}
if (bluearmy->psoldier[i]->pweapon[0] != NULL&&bluearmy->psoldier[i]->pweapon[0]->exist == 1) {
cout << "sword(" << bluearmy->psoldier[bluearmy->total_num - 1]->pweapon[0]->power << ")";
}
if ((bluearmy->psoldier[i]->pweapon[0] == NULL || bluearmy->psoldier[i]->pweapon[0]->exist == 0) && (bluearmy->psoldier[i]->pweapon[1] == NULL || bluearmy->psoldier[i]->pweapon[1]->exist == 0) && (bluearmy->psoldier[i]->pweapon[2] == NULL || bluearmy->psoldier[i]->pweapon[2]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (bluearmy->psoldier[i]->sort_nm == 1) {
if (bluearmy->psoldier[i]->pweapon[1] != NULL&&bluearmy->psoldier[i]->pweapon[1]->exist == 1) {

if (bluearmy->psoldier[i]->pweapon[1]->kind_no1 == 2) {
cout << "arrow(" << (3 - bluearmy->psoldier[i]->pweapon[1]->fight_num) << ")";
}
if (bluearmy->psoldier[i]->pweapon[1]->kind_no1 == 1) {
cout << "bomb";
}
if (bluearmy->psoldier[i]->pweapon[0] != NULL&&bluearmy->psoldier[i]->pweapon[0]->exist == 1)
cout << ",";
}
if (bluearmy->psoldier[i]->pweapon[0] != NULL&&bluearmy->psoldier[i]->pweapon[0]->exist == 1) {
if (bluearmy->psoldier[i]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (bluearmy->psoldier[i]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << bluearmy->psoldier[i]->pweapon[0]->power << ")";
}

}
if ((bluearmy->psoldier[i]->pweapon[0] == NULL || bluearmy->psoldier[i]->pweapon[0]->exist == 0) && (bluearmy->psoldier[i]->pweapon[1] == NULL || bluearmy->psoldier[i]->pweapon[1]->exist == 0))
cout << "no weapon";
cout << endl;
}

if (bluearmy->psoldier[i]->sort_nm == 0 || bluearmy->psoldier[i]->sort_nm == 2) {
if (bluearmy->psoldier[i]->pweapon[0] != NULL&&bluearmy->psoldier[i]->pweapon[0]->exist == 1) {
if (bluearmy->psoldier[i]->pweapon[0]->kind_no1 == 2) {
cout << "arrow(" << (3 - bluearmy->psoldier[i]->pweapon[0]->fight_num) << ")" ;
if (bluearmy->psoldier[i]->pweapon[0]->kind_no1 == 1) {
cout << "bomb";
}
if (bluearmy->psoldier[i]->pweapon[0]->kind_no1 == 0) {
cout << "sword(" << bluearmy->psoldier[i]->pweapon[0]->power << ")";
}

}
if (bluearmy->psoldier[i]->pweapon[0] == NULL || bluearmy->psoldier[i]->pweapon[0]->exist == 0)
cout << "no weapon";
cout << endl;
}
}

if (bluearmy->psoldier[i]->sort_nm == 3) {
cout << "no weapon" << endl;
}
}
}
}
for (int i = 1; i <= Num; i++) {
ct[i].printing_blue();
}

minu += 5;

for (int i = 0; i < redarmy->total_num; i++) {
redarmy->psoldier[i]->remv = 0;
if (redarmy->psoldier[i]->can_delete == 1&& redarmy->psoldier[i]->position!=Num+1) {
ct[redarmy->psoldier[i]->position].psoldier[0] = NULL;
}
}
for (int i = 0; i < bluearmy->total_num; i++) {
bluearmy->psoldier[i]->remv = 0;
if (bluearmy->psoldier[i]->can_delete == 1 && bluearmy->psoldier[i]->position != Num + 1) {
ct[bluearmy->psoldier[i]->position].psoldier[1] = NULL;
}
}

if (minu == 60) {
minu = 0;
t++;
}
if (t * 60 + minu > T)
break;

}
delete redarmy;
delete bluearmy;
for (int i = 0; i < 100; i++) {
ct[i].initial();
}
}
return 0;
}

cousera of pku:魔兽世界:终极版相关推荐

  1. 18.04.26 魔兽世界终极版

    A:魔兽世界终极版 描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 .... N ( N <= 20 ).红魔军 ...

  2. 【程设】魔兽世界终极版!

    魔兽世界终极版 总时间限制:  6000ms  内存限制:  65536kB   描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市,城市从西向东依次编号为 ...

  3. 程序设计实习 魔兽世界终极版 注意及代码~

    http://cxsjsx.openjudge.cn/warcraftpractice/1/ 这个题,,怎么说呢,大bug不解释.. 超级模拟有木有.. 第一:看清题目!!!!!! 第二,如果你是直接 ...

  4. 魔兽世界终极版(C++程序设计第6周)

    问题描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 -. N ( N <= 20 ).红魔军的司令部算作编号为0 ...

  5. 魔兽世界终极版 北京大学C++课程

     题目 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 .... N ( N <= 20 ).红魔军的司令部算作编号为 ...

  6. 程序设计实习 作业3 魔兽世界终极版

    Description: 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 .... N ( N <= 20 ).红魔军 ...

  7. 【openjudge】魔兽世界(终极版)

    第一行是取消vs的error用的 //#pragma warning(disable:4996) #include <iostream> #include <fstream> ...

  8. OpenJudge-魔兽世界终极版

    魔兽世界终极版 描述 城市 武器 Sword Bomb Arrow 武士 编号 生命值 Dragon Ninja Iceman Lion Wolf 战斗 时间线 输入 输出 样例输入 样例输出 模块代 ...

  9. 全面屏适配方案,终极版,华为隐藏导航栏解决方案

    全面屏适配方案,终极版,华为隐藏导航栏解决方案 参考文章: (1)全面屏适配方案,终极版,华为隐藏导航栏解决方案 (2)https://www.cnblogs.com/lizhanqi/p/93371 ...

最新文章

  1. Android opencv cvCvtColor()的转换
  2. 内存延时cl_内存频率和CL延迟哪个重要
  3. ShaderLab学习小结(一)最简化的顶点片断Shader
  4. 西门子S7comm-plus通信过程及重放攻击分析
  5. Ubuntu16.04+NVIDIA显卡驱动安装步骤
  6. 程序设计基础基于C语言(第二版),程序设计基础_基于C语言(第2版)__课后习题参考答案.doc...
  7. 渗透测试工具之——WVSS(绿盟web应用漏洞扫描系统)概述
  8. 计算机考试字体大小怎么看,Win7电脑便签字体大小怎么查看?
  9. [Error] ld returned 1 exit status
  10. POJ3658Matrix( 双重二分+负数+死循环)
  11. Fe3O4纳米颗粒的表面接枝修饰/氨基乙酸|L-半胱氨酸(L-Cys)修饰的Fe3O4包裹TiO2(Fe3O4@TiO2/L-Cys)复合纳米粒子
  12. PayPal支付集成到自己Web网站
  13. 抓包工具httpbuger的使用问题
  14. 查看mysql数据库最大连接数和已经连接的数量
  15. fvtool幅度归一化
  16. 何志强:张尚昀式的当代好青年
  17. 千锋学习day09面向对象
  18. Did the Microsoft Stack Kill MySpace?
  19. idea Compound 一次启动多个应用
  20. 三、51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)

热门文章

  1. 钢铁厂IP网络广播呼叫对讲案例解析-IP网络广播呼叫对讲应用川威集团钒钛钢厂
  2. iOS开发------获取系统联系人(AddressBook篇)
  3. HCIA-GaussDB 华为认证数据库工程师(持续更新中60%)
  4. ACK Flood攻击
  5. 【JavaSE】继承
  6. 职场“29岁现象”:是继续打工还是创业?
  7. 【智能物流】快递、云仓、新零售引领物流自动化千亿市场
  8. windows下安装gitblit
  9. 高中生近视率超过80%!最主要原因青少年缺乏户外活动
  10. MAC下SSH及可视化工具(亲测有效)