#ifndef GAME_H_INCLUDED
#define GAME_H_INCLUDED
#include <string>
using namespace std;
const int N=10; //每個角色最多擁有的武器
const int NOWEAPON=-1; //表示手中無武器
class Point //Point類聲明
{
public: //外部接口
Point(int x=0, int y=0);
int getX();
int getY();
double distance(const Point &p); //傳回與另外一點p之間的距離
void moveTo(int x, int y); //移到另外一點
void move(int dx, int dy); //從目前位置移動
private:
int x, y; //座标
};
class Weapon
{
public:
Weapon(){};
Weapon(string wnam, int f, double k);
Weapon(const Weapon&);
string getWname();
int getForce(); //傳回殺傷力
double getKillRange(); //傳回殺傷距離
private:
string wname; //名稱
int force; //殺傷力
double killRange; //殺傷距離
};
class Role
{
public:
Role(string nam, int b, Point l, Weapon w[], int n); //構造函數
~Role(); //析構函數
void eat(int d); //吃東西,漲d血(死了後吃上東西可以複活)
void attack(Role &r); //攻擊别人,自己漲血,同時對方被攻擊失血。血量取決于目前用的武器
void beAttack(int f); //被别人攻擊,參數f是承受的攻擊力
double distance(Role &r); //傳回與另一角色的距離
bool isAlived(); //是否活着
void moveTo(int x, int y); //移到另外一點
void move(int dx, int dy); //從目前位置移動
void changeWeapon(int wno); //換手中的武器
void show(); //顯示
private:
string name; //角色名稱
int blood; //目前血量
bool life; //是否活着
Point location; //位置
Weapon weapons[N]; //武器
int weaponNum; //武器數目
int holdWeapon; //現在手持哪一件武器(空手為NOWEAPON,初始時空手)
};
#endif // GAME_H_INCLUDED