这是第三部分,足足花了我一周多的时间才编写完成。

#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;

class soldier {
friend class army;
friend class weapon;
public:
static int no1, no2;//no1表示红军杀死的人数,no2表示蓝军杀死的人数。
bool can_delete;
bool kill_;
bool remv;
city *pcity;
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();
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:
weapon *pweapon;

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:

weapon *pweapon[2];
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:

weapon *pweapon;
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:

int devote;
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;
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 kind_no1;//0为sword,1为bomb,2为arrow.
soldier *psoldier;
static string name[3];
weapon(soldier *p, int num) {
psoldier = p;
kind_no1 = num;
}
};
class sword :public weapon {
sword(soldier *p) :weapon(p, 0) {}
};
class bomb :public weapon {
bomb(soldier *p) :weapon(p, 1) {}
};
class arrow :public weapon {
arrow(soldier *p) :weapon(p, 2) {}
};
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();

} 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;
}
}
void remove();
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;
}
void soldier::printing(int tm) {}
void soldier::init() {
if (can_delete == 0) {
kill_ = 0;

}
}

dragon::dragon(army *p, int to_num, int sort, int N) :soldier(p, to_num, sort, N) {
lifev = lifevalue[0];
power = powerary[0];
pweapon = new weapon(this, num % 3);
brave = double(parmy->total_life) / double(lifevalue[sort_nm]);
}
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;
}
void dragon::attack(soldier *p) {
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) {
kill_ = 1;

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

if (lifev>0) {
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " dragon " << this->num << " yelled in city " << this->position << endl;
}
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) {
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;
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;
p->pcity->a[p->parmy->color]++;
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;

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

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;

}
}

ninja::ninja(army *p, int to_num, int sort, int N) :soldier(p, to_num, sort, N) {
lifev = lifevalue[1];
power = powerary[1];
pweapon[0] = new weapon(this, num % 3);
pweapon[1] = new weapon(this, (num + 1) % 3);
}
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) {
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) {
kill_ = 1;

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

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;
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;
p->pcity->a[p->parmy->color]++;
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];
pweapon = new weapon(this, num % 3);
}
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) {
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) {
kill_ = 1;

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

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;
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;
p->pcity->a[p->parmy->color]++;
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++;

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 = parmy->total_life;
}
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;
}
void lion::attack(soldier *p) {
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) {
kill_ = 1;

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

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);
}
}
void lion::hurted(int npower, soldier *p) {
lifev -= npower;
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;
p->pcity->a[p->parmy->color]++;
cout << setw(3) << setfill('0') << t << ":";
cout << setw(2) << minu << " ";
cout << this->parmy->getcolor() << " lion " << num << " was killed in city " << this->position << endl;
if (p->sort_nm != 4) {
int beforev = lifev + npower;
p->lifev += beforev;
}
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++;

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;

}
}

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;
}
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) {
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) {
kill_ = 1;
n++;
if (n % 2 == 0 && n != 0) {
lifev = lifev * 2;
power = power * 2;
}
if (p->sort_nm == 3) {
lifev += p->lifev + power;
}

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

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;
if (lifev > 0) {

}
else {
this->pcity->a[this->parmy->color] = 0;
p->pcity->a[p->parmy->color]++;
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) {
kill_ = 1;

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

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)) {

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)) {

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]->can_delete == 0 && psoldier[1]->can_delete == 0) {
if ((num % 2 == 1 && color != 1) || color == 0) {
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]->attack(psoldier[0]);
if (psoldier[0]->lifev > 0 && psoldier[1]->lifev>0) {
a[0] = 0;
a[1] = 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 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++;
this->psoldier[i]->pcity = &ct[this->psoldier[i]->position];
ct[this->psoldier[i]->position].psoldier[0] = this->psoldier[i];
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--;
this->psoldier[i]->pcity = &ct[this->psoldier[i]->position];
ct[this->psoldier[i]->position].psoldier[1] = this->psoldier[i];
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;
}
}

}
}
}

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 >> 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 += 10;
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 += 10;
if (t * 60 + minu > T)
break;
for (int i = 1; i <= Num; i++) {
ct[i].battle();

}

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 += 10;
for (int i = 0; i < redarmy->total_num; i++) {
redarmy->psoldier[i]->remv = 0;
}
for (int i = 0; i < bluearmy->total_num; i++) {
bluearmy->psoldier[i]->remv = 0;
}
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. cousera of pku:魔兽世界:终极版

    做这个终极版的题目,花了大概3个礼拜的时间.做完之后,感觉立刻轻松了很多,也学到了很多.这是我第一个写的差不多2000行的程序,当然也有比较大的满足感. 首先,先说下这个题目的注意事项. 1.这个题目 ...

  2. PKU MOOC作业魔兽世界之一:备战的结构化程序

    一不小心踏入PKU程序设计专项课程,没先听课就交钱加入.这门课,目的是培养程序员,从0基础,到程序设计员的培养,课程顺序是C语言-算法-数据结构,实际拆分为6+1门(毕业项目),理念不可谓不好.但是, ...

  3. 魔兽世界 - PKU[课程作业]程序设计与算法(三)C++面向对象程序设计/coursera C++程序设计_World of warcraft Project

    感觉写得挺差:代码纯原创,没有半点参考: 以后若有空打算看看老师的代码,再来修改此文,先多花点时间再别的上面 建议: 1. 耐心点,仔细理解题意 2. 做到后面,前面若有设计得不好的地方,别犹豫,赶快 ...

  4. 程设大作业之魔兽世界

    [前言]:在学习了一些看上去只是能让程序更好看更清晰的类的知识之后...为了让我们真的觉得类是个好东西,丧心病狂的作业--魔兽出现了...然而...emmmm... 好吧,这篇博客主要就是记录一下自己 ...

  5. 18.04.06 魔兽世界三(开战)

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

  6. 18.04.26 魔兽世界终极版

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

  7. 魔兽世界服务器位面 稳定,因抗议《魔兽世界》位面技术在RP服务器中被取消

    <魔兽世界>官方在今天宣布,游戏中的位面技术已经在RP服务器中取消,原因是该技术在社区中受到了大量玩家的抗议. 不久前,一些<魔兽世界>玩家曾举办了一场名为"Tour ...

  8. 魔兽怀旧服怎么找不到服务器,魔兽世界怀旧服无法连接服务器怎么解决 服务器连接不上解决方法...

    标签: 服务器 今日很多玩家翘首以盼的魔兽世界怀旧服正式上线与各位见面,魔兽世界对老玩家来说是自己的青春,也是自己对过去的回忆.那么我们今天进入魔兽世界怀旧服遇到无法连接服务器怎么办呢?想必很多新老玩 ...

  9. 魔兽世界多玩服务器位置,选择服务器也有大学问?新手入坑《魔兽世界》该在哪里“扎根”...

    <魔兽世界:暗影国度>开服至今已经五个多月了,圈内圈外都在讨论新版本的话题,不少萌新与老玩家都选择了在这个版本中加入探索暗影界的行列.但面对茫茫多的区服,许多玩家都犯起了"选择困 ...

最新文章

  1. 网络技术温故知新(一)
  2. md5sum算法 —— linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序
  3. 《Effective STL》学习笔记(第四部分)
  4. Kotlin实战指南十:let、apply、with、run
  5. 初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)
  6. java 线程池 状态_【Java多线程】线程状态、线程池状态
  7. php调用md5.js,PHP和JS实现HTTP上安全地传输密码
  8. [vue] 你是从vue哪个版本开始用的?你知道1.x和2.x有什么区别吗?
  9. LeetCode 1624. 两个相同字符之间的最长子字符串
  10. docker elasticsearch:7.14.2
  11. 开发类似vs的黑色风格_传闻:2020年《使命召唤》将是《黑色行动》重启作品
  12. 组合模式Composite
  13. Aspose.Words.dll根据模板生成word详解
  14. js操作json对象
  15. 【Servlet:Java Web服务器】JSP 基本知识点与总结 (思维导图)
  16. 微信小程序微信登录-云端登录模板
  17. ESP8266编译提示:undefined reference to `app_main‘
  18. java-net-php-python-jAVANICE体育用品交易网站系统计算机毕业设计程序
  19. WIN10下删除Hiberfil.sys文件
  20. 计算机打印机副机无法打印,打印机共享无法打印怎么办,教您解决电脑打印机共享无法打印...

热门文章

  1. Thinkpad E440 拷贝虚拟机导致蓝屏问题
  2. 分析最新12306滑动验证
  3. MySQL查询学生成绩表相关
  4. Linux初识——基础指令及使用规则
  5. windows live writer 设置默认字体
  6. Python Selenium之等待元素小案例(用于某网站自动打开领取QQ名片赞)--文末有附selenium知识点以及对应学习文档网址
  7. Spring Boot+Spring Cloud实现itoken项目
  8. 如何批量将caj转换成word
  9. python飞机大战功能模块图_python pygame实现飞机大战游戏
  10. windows中搭建当当网