2014-12-07 75 views
0

我正在嘗試放置一個遊戲,但是,我不確定如何解決重置功能。我已經完成了遊戲重置的工作,但是,在遊戲重新啓動時,這個標籤應該顯示玩家玩過的遊戲的數量不會從0改變爲0.這是我迄今爲止所做的。java重置遊戲方法,玩過的遊戲數量不增加

顯示和標籤的定位...

private int noGamesPlayed; 
private JLabel gamesPlayed = new JLabel("Games Played = " + noGamesPlayed); 
getContentPane().add(gamesPlayed); 
gamesPlayed.setBounds(60,60+gridsize*boardsize,130,30); 

復位功能...

public void reset(){ 

game.this.setVisible(false); 
game.this.dispose(); 
new game(); 
updateGamesPlayed(); 
} 

是想更新遊戲起的作用......

public void updateGamesPlayed() { 
noGamesPlayed ++; 
gamesPlayed.setText("" + noGamesPlayed + " Games Played"); 

} 

幫助讚賞。

+0

我認爲updateGamesPlayed()在遊戲類中? – JClassic 2014-12-07 18:18:00

+0

如果是的話(並且沒有遊戲玩家不是靜態的),當你調用'新遊戲()'時,你正在重新初始化變量。 – JClassic 2014-12-07 18:19:18

+0

它在遊戲類中是的,當遊戲重置時有沒有增加變量的方法? – AW90 2014-12-07 18:32:24

回答

1

將noOfGamesPlayed變量更改爲static。該領域不屬於對象,而是屬於類本身。然後,將updateGamesPlayed更改爲靜態方法,這樣所有遊戲對象都會看到相同的numberOfGamesPlayed計數。這樣的:

private static int noGamesPlayed = 0; 

public static void updateGamesPlayed() { 
    noGamesPlayed ++; 
} 

然後,在復位方法,創建後,一個新的遊戲更新的遊戲次數。

public void reset(){ 
    game.this.setVisible(false); 
    game.this.dispose(); 
    updateGamesPlayed(); 
    new game(); 
} 

你也可以讓它「自動」通過在遊戲構造遞增noGamesPlayed。這樣你就不需要撥打updateGamesPlayed

+0

完美 - 像一個治療工作謝謝你! – AW90 2014-12-07 19:04:33

0

你創建一個全新的遊戲對象,一個擁有自己noGamesPlayed變量和JTextField中,並有可能調用此方法不會在新顯示的GUI

gamesPlayed.setText("" + noGamesPlayed + " Games Played"); 

而是改變gamesPlayed的JTextField更新已經處理的GUI的JTextField。請注意,您的重置方法看起來是遞歸的。

一種解決方法是調用新創建的遊戲對象的updateGamesPlayed(...)方法(注意該類應重命名爲Game),並將正確的數字作爲參數傳入。我不會創建一個新窗口,而是通過更新關鍵模型變量(確定程序狀態的非GUI變量和類)來完成不同的重置操作。 ),然後使用這些變量重置當前顯示。

+0

我認爲你的方式更好,當我進行一些改進時,我會考慮按照自己的方式進行操作,目前它正在重置。謝謝。 – AW90 2014-12-07 19:06:01