资源简介

北京大学程序设计实习“魔兽世界终极版”的参考程序。 写了540行,代码较短。 仅供交流、参考。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include
using namespace std;

char colname[2][10] = {“red“ “blue“};
char manname[5][10] = {“iceman“ “lion“ “wolf“ “ninja“ “dragon“};
char wpname[3][10] = {“sword“ “bomb“ “arrow“};
int stlife[5] statk[5];
int R K N;

class Game
{
public:
int Min Hou M T que over[2] inman[2];
int l[2][100] p[2];
Game();
void printtim();
void start();
void work();
void finish();
void simul(int x);//bomb
void battle(int x);
bool checkover();
void check_taken();
} game;

class Man
{
public:
int kd/*类型*/ life atk/*攻击*/ po/*位置*/ fa/*阵营*/ num/*编号*/ stk/*sword*/;
bool wpn[3];
int le[2];//sword arrow 剩余
Man(int x int _num int _kd);
Man(Man &x);
void birth(int x int y);
void get(Man *x)//缴获
{
if(x->wpn[0] && (wpn[0] == 0)){wpn[0] = 1; le[0] = x->le[0]; stk = x->stk;}
if(x->wpn[2] && (wpn[2] == 0)){wpn[2] = 1; le[1] = x->le[1];}
if(x->wpn[1]) wpn[1] = 1;
}
void move();
int calc_sword(int x)
{
int ret = 0;
while(x) {x = x * 4 / 5; ++ret;}
return ret;
}
void checkwpn()
{
int t;
if(wpn[0] == 1)
{
stk = atk / 5;
if(stk == 0) wpn[0] = 0; else le[0] = calc_sword(stk);
}
if(wpn[2] == 1) le[1] = 3;
}
int fight(Man *x int y);
void fightback(Man *x int y);
void bomb();
void death();
virtual void checkloya(){};
virtual void checkwk(){};
void repwpn()
{
game.printtim();
cout << colname[fa] << “ “ << manname[kd] << “ “ << num << “ has “;
int tot = 0;
if(wpn[2]){cout << “arrow(“ << le[1] << “)“; tot++;}
if(wpn[1]){if(tot) cout << ““; cout << “bomb“; tot++;}
if(wpn[0]){if(tot) cout << ““; cout << “sword(“ << stk << “)“; tot++;}
if(wpn[2] + wpn[1] + wpn[0] == 0) cout << “no weapon“;
cout << endl;
}
void arr();
};

class Iceman: public Man
{
public:
int wk;
Iceman(int x);
void checkwk()
{
if(++wk % 2 == 0)
{
atk += 20; life -= 9;
if(life <= 0) life = 1;
}
}
};
class Lion: public Man
{
public:
int loya;
Lion(int x);
void checkloya()
{
if(loya > 0) return;
game.printtim();
cout << colname[fa] << “ lion “ << num << “ ran away“ << endl;
this->death();
}
};
class Wolf: public Man
{
public:
Wolf(int x);
};
class Ninja: public Man
{
public:
Ninja(int x);
};

class Dragon: public Man
{
public:
double morale;
Dragon(int x);
};

class City
{
public:
int pr[2]/*胜者*/ aro[2]/*放箭*/;
int lf flag;
Man *son[2];//士兵 
Man *tmp[2];//存放被射死的士兵 
Man *tt[2];//移动 
City(){
lf = 0;
pr[0] = pr[1] = flag = -1;
son[0] = son[1] = tmp[0] = tmp[1] = NULL;
}
void clear(){
if(this == NULL) return;
son[0] = son[1] = NULL;  lf = 0;
pr[0] = pr[1] = flag = -1;
}
void give();
void changeflag(int x int y)
{
pr[0] = pr[1]; pr[1] = x;

评论

共有 条评论