2014-01-31 74 views
-1

我做了一個塔防遊戲,有一件事困擾了我。我已經確定了金錢的初始價值,但我無法將價值轉移到下一個層面。有任何想法嗎?Java |檢索數據

public void define() { 
    room = new Room(); 
save = new Save(); 
    store = new Store(); 

    if(level == 1){ 
    coinage = 50; 
    health = 100; 
    } 

    if(level == 2){ 
    coinage = 40; 
    health = 100; 
    } 
    if(level > 2){ 
     coinage = 30; 
     health = 100; 
    } 

    if(level > 8){ 
     coinage = 0; 
    } 

嗯,所以我嘗試這樣做:

public static int coinage = 0, health = 100; 

然後

if(level == 1){ 
    coinage += 50; 
    } 

    if(level == 2){ 
    coinage += 40; 
    } 

我相信我在這裏做得不對。當第二級出現時,起始值仍然是40. 我該如何解決這個問題?

這裏是a link to the full code

+2

看起來有代碼缺失。 「coinage」和「health」在哪裏申報?你在哪裏嘗試檢索他們的價值?除此之外,在我看來,你應該使用if-elses鏈而不是單個if語句。它更清晰地表達你的意圖,並且效率稍高。就此而言,在3個分支中將健康設置爲相同的值是相當多餘的。 – Doval

+0

@Doval opps,這是測試。我忘了拿出來。 – Minecraftonian

+0

好吧,我打印出造幣,它從0開始,並添加到40.所以我知道那部分工作。 – Minecraftonian

回答

1

如果coinage是你的錢,你可以在這define()函數之外設置一個全局變量。讓我們跟蹤玩家有多少錢。您可以添加到現有值,而不是將值設置爲直接數字。所以在你的例子中,級別2,coinage += 50;。這將採用coinage的全局值並將50添加到現有數字,而不是將其設置爲特定值。只需使用=即表示您確實是X/Y。通過保持全局,您可以添加/減去它並以更多方式操作它。

我認爲,通過查看代碼的關鍵是,只需將其切換爲使用類似+=而不僅僅是=。這樣它將增加到現有的值,而不是每次只設置爲靜態數字。