不同类中的两个相同变量

时间:2014-09-04 22:31:02

标签: java

我只能为此找到一个c#链接并且无法理解,所以这里就是..

我的程序中有一个Player和一个Target类,我希望能够这样做:

public Player(int difficulty)
{
    if(difficulty == 1)
        health = hArray[0];
    else
        health = hArray[1];
}

其中hArray是我可能的健康值数组。这样做有效,但我也只是为了易于使用而处理我的Target类中的playerHealth,因为我是java的新手,并且不知道如何做到这一点,所以它有这样的东西:

private int playerHealth;
public int getPlayerHealth()
{
    return playerHealth;
}


public void setPlayerHealth(int playerHealth){
    this.playerHealth = playerHealth;
}

但是我不知道如何调用它,因为最初我设置为Player总是以100健康开始。我改变了它,因为我需要在Player中设置健康值选项作为要求,现在当我在main中调用它时(psuedo-ish):

Your starting health: " + tgt.getPlayerHealth()

它只是说0,因为健康是在播放器中定义的。所以我知道为什么它不起作用,但我不确定如何解决它,或者我是否可以用我当前的布局修复它。

这是我的声明/实例(这是一个字吗?):

    Target tgt = new Target(dif);
    Player p1 = new Player(dif);

基于:

System.out.println("\nEnter a difficulty 1-2 (entering an integer "
            + "other than 1 or 2 will default to 2):");
dif = scn.nextInt();

感谢任何帮助

3 个答案:

答案 0 :(得分:2)

鉴于您已正确建模了两个类(我有点怀疑):如果您的Target需要了解玩家的健康状况,那么它应该引用Player 实例并且不保留Player的某个私人成员的副本。然后,您将通过该实例访问玩家健康状况:

target.getPlayer().getHealth();
target.getPlayer().setHealth(50);

但是,一旦Target引用了一个Player,类的名称(如果不是整个设计)似乎就不够了。

答案 1 :(得分:1)

在知道Target被认为是某种与你Player战斗并使他们失去健康的实体之后,因此需要目标来了解玩家的健康状况,那么我认为你我希望有一个属于Player的操作可以对抗Target s(只是将Target传递给Player,或者反之亦然。下面的内容最有可能奏效:

public interface Entity
{
    public int getStrength();
    public int damageThatCanBeDoneToAnotherEntity(Entity someOtherEntity);
    public int getHealth();
    public void fightAnotherEntity(Entity someOtherEntity);
}

public class WeakMonster implements Entity...
public class StrongMonster implements Entity...
public class Player implements Entity...

这是你的家庭作业,所以我会让你填补空白。

答案 2 :(得分:0)

而不是像使用hArray那样使用数组,你应该在Player中创建一个函数,如

public static int getPlayerInitialHealth(int difficulty)

然后你可以在你的两个类中使用该函数(导入到第二个类中)