第六周项目二-带武器的游戏角色
2016-04-05 19:12
363 查看
<pre class="cpp" name="code">/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年4月5日 *版 本 号:v1.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); 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) { if(isAlived()) blood+=d; } void Role::attack(Role &r) { 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; }
运行结果:
相关文章推荐
- 构造器权限与类权限的问题
- 二分法查找
- 求最大公约数
- 第五周项目1-三角形雏形(3)
- 怎样配置vi编辑器
- 第六周项目3-IP地址类
- Form token KO80SIJW4F84034NG5HM1ZBUGOVNY64D does not match the session token null.
- Integer.valueof(null)报错
- Leetcode 96. Unique Binary Search Trees
- bzoj 3265 志愿者招募加强版 (单纯形)
- 初识commonjs
- 数据分类K—means 算法的python代码实现
- HDU 4059 The Boss on Mars 容斥原理+逆元
- ytu 2617: B C++时间类的运算符重载
- this关键字
- 长方柱类
- java反射中的动态代理机制(有实例)
- Maven部署多个环境
- Fortran 数组
- drbd