2015-06-28 15:08:41 OJ期末模考I

Problem I: P4 游戏中的Human角色

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 417  Solved: 245
[Submit][Status][Web Board]

Description

在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc(此处locLocation类的实例)属性。有了Role类,可以派生出不同的角色,如人、神仙、怪兽等。如下程序中,定义了Location类和Role类,人类(Human)中新增了姓名和攻击力数据成员,请为Human类设计成员函数,并实现Role类中的moveToaddBlood两个成员函数。

请在beginend中间写下需要的代码。你只能编辑并提交beginend之间的代码。

#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;

}

Input

第一行:名字血量攻击力位置,其中位置处是两个整数,代表平面xy坐标

第二行:增加的攻击力

第三行:要增加的血量

第四行:新位置,用两个整数代表

输入的各部分之间用空格隔开

Output

分别用两行显示游戏角色的初始状态和调整参数后的状态

“Avanda has 500 attack and 1000 blood in (4,3)”表示Avanda500攻击力1000血量,在(4,3)位置处

Sample Input

Avanda 500 1000 4 3

-300

200

2 5

Sample Output

Avanda has 500 attack and 1000 blood in (4,3)

Avanda has 200 attack and 1200 blood in (2,5)

 

 

 

Submit:

#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:
    Human(string nam,int att,int blood,int x,int y):Role(blood,x,y),name(nam),attack(att){}
    int addAttack(int n);
    void show();
private:
    string name;  // 姓名
    int attack;   // 攻击力
};
int Human::addAttack(int n)
{
    attack+=n;
    return attack;
}
void Human::show()
{
    cout<<name<<" has "<<attack<<" attack and "<<blood<<" blood in "<<"("<<loc.getX()<<","<<loc.getY()<<")"<<endl;
}
//************* 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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值