如何在另一个java对象上使用一个对象的实例变量
我正在做一个简单的游戏。 当我调用战斗方法时,角色受到的伤害是它自己的伤害变量 例如 骑士- 健康:100 损失:20 士兵- 健康:100 损失:10 当我称我的方法为“骑士攻击士兵”和“士兵攻击骑士”时,他们的健康状况如下 骑士->80健康 士兵->90健康 什么时候应该反过来 示例代码如何在另一个java对象上使用一个对象的实例变量,java,object,Java,Object,我正在做一个简单的游戏。 当我调用战斗方法时,角色受到的伤害是它自己的伤害变量 例如 骑士- 健康:100 损失:20 士兵- 健康:100 损失:10 当我称我的方法为“骑士攻击士兵”和“士兵攻击骑士”时,他们的健康状况如下 骑士->80健康 士兵->90健康 什么时候应该反过来 示例代码 public abstract class BasicCharacter { private double health; private double damage; private double at
public abstract class BasicCharacter
{
private double health;
private double damage;
private double attackProbability;
private String name;
public BasicCharacter(double hp,double attp,double d, String n)
{
health=hp;
attackProbability=attp;
damage=d;
name=n;
}
public void setHealth(double hp)
{
health=hp;
}
public double getHealth()
{
return health;
}
public double getDamage()
{
return damage;
}
public void fight()
{
double prob=Math.random();
if(prob<attackProbability)
{
JOptionPane.showMessageDialog(null, name+" attacked for " + damage+ "\n" + name + " health " + health +" left");
health=health-damage;
}
else {
JOptionPane.showMessageDialog(null, name + " missed");
}
}
}
谢谢这是因为在你的
fight()
方法中,你从物体自身的伤害中扣除了生命值:
health=health-damage;
你真正想要的可能是:
fight(BasicCharacter target){
target.setHealth(target.getHealth() - this.damage);
}
您可以在战斗方法中添加一个参数,指示战斗目标。示例:
骑士进攻战士
一个简单的方法,将处理损坏,发送在您想要损坏的对象和损坏的金额
public void damaging(Object object, Double damage){
if(object instanceof Soldier){
((Soldier)object).setHealth(((Soldier)object).getHealth()-damage);
}
}
这是在同一个方法中还是在一个单独的方法中,因为所有字符都是该方法的一部分class@thebigone您可以在BasicCharacter的抽象类中实现这一点。因此,任何扩展BasicCharacter的人都将拥有这个defaut实现。您仍然可以选择在子类中重写此方法。为什么有人要使用
对象
?这里甚至不需要对象
,因为此方法只能用于士兵
。那么使用Soldier
或者更好的BasicCharacter
怎么样?
public void damaging(Object object, Double damage){
if(object instanceof Soldier){
((Soldier)object).setHealth(((Soldier)object).getHealth()-damage);
}
}