题目描述

在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc(此处loc是Location类的实例)属性。有了Role类,可以派生出不同的角色,如人、神仙、怪兽等。如下程序中,定义了Location类和Role类,人类(Human)中新增了姓名和攻击力数据成员,请为Human类设计成员函数,并实现Role类中的moveTo和addBlood两个成员函数。
请在begin和end中间写下需要的代码。你只能编辑并提交begin和end之间的代码。
#include <iostream>
using namespace std;
class Location
{
private:
int x, y;
public:
Location(int a, int b):x(a),y(b) {}
int getX(){return x;}
int getY(){return y;}
void setXY(int a,int b) {x=a;y=b;};  //设置位置坐标
};
class Role
{
public:
Role(int rblood, int rx, int ry):blood(rblood),loc(rx,ry) {}
void moveTo(int rx, int ry);  //移动到(rx, ty)处,要改变loc的值
void addBlood(int b); //增加血量,参数为负时,代表减少
protected:
int blood;
Location loc;
};
void Role::moveTo(int rx, int ry)
{
loc.setXY(rx,ry);
}
void Role::addBlood(int b)
{
blood+=b;
}
//************* begin *****************
class Human: public Role
{
public:
private:
string name;  // 姓名
int attack;   // 攻击力
};
//************* end *****************
int main()
{
string name;
int att, blood, x, y;
cin>>name>>att>>blood>>x>>y;
Human hum(name,att,blood,x,y); //人name的攻击力att,血量blood,在(x,y)处
hum.show();
int incAtt, incBlood, newx, newy ;
cin>>incAtt;
cin>>incBlood;
cin>>newx>>newy;
hum.addAttack(incAtt);  //攻击力增加incAtt
hum.addBlood(incBlood); //血量增加incBlood
hum.moveTo(newx,newy);  //人移到了(news,newy)处
hum.show();
return 0;
}

输入

第一行:名字 血量 攻击力 位置,其中位置处是两个整数,代表平面x、y坐标
第二行:增加的攻击力
第三行:要增加的血量
第四行:新位置,用两个整数代表
输入的各部分之间用空格隔开

输出

分别用两行显示游戏角色的初始状态和调整参数后的状态
如“Avanda has 500 attack and 1000 blood in (4,3)”表示Avanda有500攻击力1000血量,在(4,3)位置处

样例输入

Avanda 500 1000 4 3
-300
200
2 5

样例输出

Avanda has 500 attack and 1000 blood in (4,3)
Avanda has 200 attack and 1200 blood in (2,5)
#include <iostream>
using namespace std;
class Location
{
private:int x, y;
public:Location(int a, int b):x(a),y(b) {}int getX(){return x;}int getY(){return y;}void setXY(int a,int b) {x=a;y=b;};  //设置位置坐标
};class Role
{
public:Role(int rblood, int rx, int ry):blood(rblood),loc(rx,ry) {}void moveTo(int rx, int ry);  //移动到(rx, ty)处,要改变loc的值void addBlood(int b); //增加血量,参数为负时,代表减少
protected:int blood;Location loc;
};
void Role::moveTo(int rx, int ry)
{loc.setXY(rx,ry);
}
void Role::addBlood(int b)
{blood+=b;
}class Human:public Role
{
public:Human(string nam,int att,int b,int rx,int ry):Role(b,rx,ry),name(nam),attack(att){}void show(){cout<<name<<" has "<<attack<<" attack and "<<blood<<" blood in ("<<loc.getX()<<','<<loc.getY()<<')'<<endl;}void addAttack(int att){attack+=att;}
private:string name;int attack;
};
int main()
{string name;int att, blood, x, y;cin>>name>>att>>blood>>x>>y;Human hum(name,att,blood,x,y); //人name的攻击力att,血量blood,在(x,y)处hum.show();int incAtt, incBlood, newx, newy ;cin>>incAtt;cin>>incBlood;cin>>newx>>newy;hum.addAttack(incAtt);  //攻击力增加incAtthum.addBlood(incBlood); //血量增加incBloodhum.moveTo(newx,newy);  //人移到了(news,newy)处hum.show();return 0;

[YTU]_2635(P4 游戏中的Human角色)相关推荐

  1. 如何利用Shader来渲染游戏中的3D角色

    杨航最近在学Unity3D 本文主要介绍一下如何利用Shader来渲染游戏中的3D角色,以及如何利用Unity提供的Surface Shader来书写自定义Shader. 一.从Shader开始 ...

  2. 1996.游戏中的弱角色的数量

    难度:中等 目录 一.问题描述 二.思想 1.解题思想 三.解题 1.代码实现 2.时间复杂度 and 空间复杂度 四.总结 一.问题描述 这里直接采用的是LeetCode上面的问题描述. 你正在参加 ...

  3. 游戏脚本在移动游戏设计中的作用_关卡设计师谈游戏中的敌对角色设计Monster Design...

    原作者:Emil Glans 关卡设计是一门非常广泛的学科,不仅涵盖了基础几何学.脚本中的事件&敌人设计,还涉及到不同部分的组合.紧张度调节和叙事.在本文中,我将重点讨论一些与核心游戏设计密切 ...

  4. 如何铸造游戏中的NFT游戏角色

    Web3 领域中有许多令人兴奋的领域.然而,NFT 仍然风靡一时.如您所知,2021 年 NFT 出现了巨大的增长,它们的众多用例开始出现.因此,NFT 游戏浮出水面,让程序员将全部注意力转向 NFT ...

  5. 游戏开发中的各种角色浅析

    在以往的游戏开发中,我们往往需要处理很多角色,围绕着这些角色的组织形式,解耦等话题,出现了很多复合设计模式.例如:pureMVC,MVVM ,MVC 等等.对于这些设计模式,都是有利有弊,有他自己的使 ...

  6. MIT教授: 世界就是《黑客帝国》,人类在模拟游戏中扮演角色

      转载于 新智元   编辑:元子 MIT教授认为我们目前有50%-100%的概率生活在<黑客帝国>那样的计算机模拟世界中,所谓现实可能不过是一种幻觉.而距离我们创建自己的模拟世界,最多需 ...

  7. 游戏中的整容术! 《Honey Select》捏人系统剖析

    关于游戏中的捏人系统,很少有资料提到怎么做,印象中只有<天涯明月刀>分享过.前段时间关注了个VR资源分享的公众号,经常推送HS的捏人作品,所以才引发了我的好奇心,决定一探究竟. HS之所以 ...

  8. 人工智能(AI)在游戏中的应用(上)

    AI在视频游戏中的应用 副标题:游戏AI技术的发展现状以及在视频游戏领域的应用概览 (原作者:)Written by Laura E. Shummon Maass and Andy Luc 大多数人可 ...

  9. 从游戏中学习产品设计2:消费篇

    上一期,我们介绍了游戏中的诱导充值套路,没有看的朋友可点击 从游戏中学习产品设计1:充值篇!了解游戏中是如何引诱玩家充值的,今天我们来聊一聊游戏中的消费套路,上文介绍了游戏中的三类货币:金币,钱币和时 ...

最新文章

  1. HDU 4738 Caocao‘s Bridges(桥、任何位运算一定都要加括号、因为有重边所以用前向星)
  2. HTML 5 Canvas 参考手册
  3. CSS中可以让文字在水平和垂直方向上重叠的两个属性
  4. 心情有些复杂,不知道还能做多久,未来也不知道该如何选择
  5. 更新maven卡在18不动_Android Studio maven-metadata.xml 卡着不动原因和解决方法
  6. EPM240T100的Pin
  7. SAP工具箱 多表导入程序
  8. ERP进销存系统开发源码交付
  9. form表单内子元素组件按钮button事件冲突 - Vue
  10. springboot传图片到前端之有手就行
  11. Struts+Spring+Hibernate处理Lob(Blob,Clob)--sessionFactory中注入 org.springframework.jdbc.support.lob.Def
  12. IllegalArgumentException 异常
  13. 一起来聊一聊MySQL:从B树到B+树到索引再到存储引擎
  14. 向企业微信发送文字、图片的接口【亲测有效】
  15. C语言练习题:小明排序(数组)
  16. 怎么改html文件的桌面图标,教你怎么把软件图标换成自己喜欢的图标
  17. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图
  18. 编译ijkplayer遇到的问题“/libavutil/arm/asm.S:50:9: error: unknown directive”的解决
  19. 中国联通5G终端白皮书——第三阶段
  20. 京东个人版C店即将上线

热门文章

  1. ldd,locate,vimdiff
  2. svn(subversion)代码版本管理在linux下的一些常见使用命令
  3. Mtk Android 打包解包*.img
  4. PostgreSQL的实践一:初识
  5. Android下的数据存储与访问、权限
  6. Vijos P1756 数字反转【进制】
  7. POJ 1144 Network(无向图连通分量求割点)
  8. 【转】Ubuntu VI基本用法
  9. QGIS简介与源代码编译
  10. windows ubuntu Android studio安装好启动没反应解决方法