[英]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.