簡體   English   中英

不同類中的兩個相同變量

[英]Two of the same variables in different classes

我只能為此找到ac#link並且無法理解它所以這里...

我的程序中有一個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();

任何幫助表示贊賞

既然你正確建模的兩班(我懷疑了一下):如果你的Target需要了解球員的健康,它應該有一個參考Player 的實例 ,而不是拖延的私有成員之一的副本Player 然后,您將通過該實例訪問玩家健康狀況:

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

但是一旦Target有一個Player的引用,類的名稱(如果不是整個設計)似乎是不夠的。

在知道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...

這是你的家庭作業,所以我會讓你填補空白。

而不是像使用hArray那樣使用數組,你應該在Player中創建一個函數

public static int getPlayerInitialHealth(int difficulty)

然后你可以在你的兩個類中使用該函數(導入到第二個類)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM