第八周项目四—游戏中的角色类

问题及代码:

/*

*Copyright(c) 2016.烟台大学计算机与控制工程学院
*ALL rights  reserved.

*文件名称:main.cpp
*作者:郝昱猛
*完成日期:2016年4月27日
 * 问题描述:在上面已经建好的项目基础上,将Weapon类的数据成员改为数组,以支持一个角色可以带多件武器的需求,为此,在原类基础上,改造及增加的数据成员和成员函数至少包括:

*/
//1.game.h:类声明
#ifndef GAME_H_INCLUDED
#define GAME_H_INCLUDED
#include <string>
using namespace std;
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(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); //构造函数
    ~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 show(); //显示
    void changeWeapon(int wno); //换手中的武器
private:
    string name;  //角色名称
   int blood;    //当前血量
   bool life;    //是否活着
    Point location;  //位置
    Weapon weapon;  //武器
    Weapon weapons[N];  //武器,N为定义的常变量
    int weaponNum;      //武器数目
    int holdWeapon;     //现在手持哪一件武器(用武器数组的下标做标识)。
                        //0 ≤ holdWeapon < weaponNum
                         //初始时为空手,空手时holdWeapon值为-1,将-1定义为常变量为宜)
};

#endif // GAME_H_INCLUDED
//2.point.cpp,定义点类,表示位置

#include <iostream>
#include <game.h>
using namespace std;
int main( )
{
    Weapon w1[1]= {Weapon("Gold stick",200, 100)}; //金箍棒
    Weapon w2[3]= {Weapon("Fire-Tip Lance",180,300), //火尖枪
                   Weapon("Universal Ring",100,500), //乾坤圈
                  Weapon("Sky Muddling Damask",50,1000) //混天绫
                  };
    Role wuKong("WuKong", 500, Point(0, 0), w1, 1);
   Role neZha("NeZha", 210, Point(30,30), w2, 3);
   wuKong.changeWeapon(0);
   neZha.changeWeapon(0);
    cout<<"---begin---"<<endl;
    wuKong.show();
    neZha.show();
    cout<<"---1st round---"<<endl;
    wuKong.attack(neZha);
    wuKong.show();
    neZha.show();
    cout<<"---2nd round---"<<endl;
    neZha.changeWeapon(2);
    neZha.attack(wuKong);
    wuKong.show();
    neZha.show();
    cout<<"---3rd round---"<<endl;
    neZha.moveTo(100,100);
    wuKong.attack(neZha);
    wuKong.show();
   neZha.show();
   cout<<"---4th round---"<<endl;
   neZha.attack(wuKong);
    wuKong.show();
   neZha.show();
   cout<<"---then---"<<endl;
    neZha.attack(wuKong);
    neZha.attack(wuKong);
    wuKong.attack(neZha);
    wuKong.show();
   neZha.show();
    cout<<"---end---"<<endl;
    return 0;
}


你可能感兴趣的:(第八周项目四—游戏中的角色类)