cousera of pku:魔兽世界:行军

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值