问题及代码:
Problem T: P4 游戏中的Human角色
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 449 Solved: 270
[ Submit][ Status][ Web Board]
Description
{
loc.setXY(rx,ry);
}
void Role::addBlood(int b)
{
blood+=b;
}
Input
Output
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)
HINT
#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 Location
{
public:
Human(string na,int att,int rblood,int rx,int ry) :Role(rblood,rx,ry),Location(rx,ry),name(na),attack(att) {}
void show();
void addAttack(int n);
void addBlood(int m);
void moveTo(int rx,int ry);
private:
string name; // 姓名
int attack; // 攻击力
};
void Human::addAttack(int n)
{
attack+=n;
}
void Human::addBlood(int m)
{
blood+=m;
}
void Human::show()
{
cout<<name<<" has "<<attack<<" attack and "<<blood<<" blood in ("<<Location::getX()<<","<<Location::getY()<<")"<<endl;
}
void Human::moveTo(int rx,int ry)
{
Location::setXY(rx,ry);
}
//************* 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;
}
运行结果:
1198



被折叠的 条评论
为什么被折叠?



