繁体   English   中英

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

[英]How to use an instance variable of one object on another object 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");
    }


}
}

士兵和骑士都是BasicCharacter的子类

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM