如何在另一个对象java上使用一个对象的实例变量



我正在制作一个简单的游戏。当我调用战斗方法时,角色被击中时受到的伤害是其自身的伤害变量例如奈特-健康:100伤害:20

士兵-健康:100伤害:10

当我把我的方法称为"骑士攻击士兵,士兵攻击骑士"时,他们的生命值如下

骑士->80健康士兵->90健康

什么时候应该是的另一条路

示例代码

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");
    }

}
}

士兵和骑士都是基本特征的子类

  public class soldier extends BasicCharacter{} 

感谢

这是因为在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);
 }
}

最新更新