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