C++游戏系列2:角色装备武器
2016-04-02 22:29
661 查看
更多见:C++游戏系列目录
知识点:类的组合,A类的数据成员,是B类的对象,或B类的对象,做A类的数据成员
【项目-带武器的游戏角色】
设计一个武器类,其数据成员至少要有武器名、威力,还可以加上你想描述武器的其他数据。想一想要对武器实施什么处理,设计其成员函数。
在上周的游戏角色类Role基础上扩充,为每个角色创建一个武器,并在攻击(attack)行为发生时,武器在其中起作用。制定游戏规则,使之接近于真实的游戏场景,并利用成员函数实现游戏规则,最后在main函数中通过调用相应的成员函数,模拟游戏过程。
参考解答:
知识点:类的组合,A类的数据成员,是B类的对象,或B类的对象,做A类的数据成员
【项目-带武器的游戏角色】
设计一个武器类,其数据成员至少要有武器名、威力,还可以加上你想描述武器的其他数据。想一想要对武器实施什么处理,设计其成员函数。
在上周的游戏角色类Role基础上扩充,为每个角色创建一个武器,并在攻击(attack)行为发生时,武器在其中起作用。制定游戏规则,使之接近于真实的游戏场景,并利用成员函数实现游戏规则,最后在main函数中通过调用相应的成员函数,模拟游戏过程。
参考解答:
/* 仅设计了一个非常简单的使用武器的规则 当攻击对方时,自己涨血数等于自己武器的威力,同时对方失去等量血 对方失血变为0或负后,死去 欢迎游戏者,按你的想像扩充 */ #include <iostream> using namespace std; class Weapon { public: Weapon(string wnam, int f); int getForce(); private: string wname; //名称 int force; //威力 }; Weapon::Weapon(string wnam, int f):wname(wnam),force(f) {} int Weapon::getForce() { return force; } class Role { public: Role(string nam, int b, string wnam, int f); //构造函数 ~Role(); //析构函数 void eat(int d); //吃东西,涨d血 void attack(Role &r); //攻击别人,自己涨血,同时失血 bool isAlived(); //是否活着 void show(); //显示 private: string name; int blood; Weapon weapon; bool life; }; Role::Role(string nam, int b, string wnam, int f):name(nam),blood(b),weapon(wnam,f) { if(blood>0) life=true; else life=false; } Role::~Role() { cout<<name<<"退出江湖..."<<endl; } void Role::eat(int d) //吃东西,涨d血 { if(isAlived()) blood+=d; } void Role::attack(Role &r) //攻击别人,涨1血 { if(isAlived()) { blood+=weapon.getForce(); r.blood-=weapon.getForce(); if(r.blood<=0) r.life=false; } } bool Role::isAlived() //是否活着 { return life; } void Role::show() //显示 { cout<<name<<" has "<<blood<<" blood, it is "; if(isAlived()) cout<<"alived."; else cout<<"dead."; cout<<endl; } int main( ) { Role mary("Mary", 500, "TuLong",200); Role jack("Jack", 10, "YiTian", 180); cout<<"---begin---"<<endl; mary.show(); jack.show(); cout<<"---1st round---"<<endl; jack.attack(mary); mary.show(); jack.show(); cout<<"---2nd round---"<<endl; mary.attack(jack); mary.show(); jack.show(); cout<<"---end---"<<endl; return 0; }
相关文章推荐
- 我是运营,我没有假期
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- 一步一步跟我学易语言之第二个易程序菜单设计
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#中设计、使用Fluent API
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- 纯javascript实现的小游戏《Flappy Pig》实例
- JavaScript设计模式初探
- 基于javascript实现句子翻牌网页版小游戏
- JavaScript实现俄罗斯方块游戏过程分析及源码分享