2013-12-18 73 views
0

在Java中使用簡單的井字遊戲。如何從另一個類操作一個類?

我有一個名爲TicTacToe的類,其中包含大部分程序。 而我有一個名爲GameHelpers的類,它應該包含幫助遊戲的方法。

類別TicTacToe包含一個數組(JButton buttons[9])和一個int count變量,該變量存儲用戶已將多少個X和OS放在屏幕上。 (每次用戶單擊一個按鈕時,空白文本將更改爲X或O,並且計數變量將變爲++)。

目前,我計劃在GameHelpers內寫入的唯一方法是名爲resetGame()的方法。這種方法應該做兩件事:
1-設置buttons空白的所有按鈕上的文字。
2-設置count爲0

如果resetGame()是內部TicTacToe的方法,這將是容易的。它應該是這樣的:

resetGame(){ 
    for(int i=0;i<9;i++){ 
      buttons[i].setText(""); 
    } 
    count = 0; 
} 

resetGame()應該是一個不同的類,GameHelpers內的方法。

我認爲我想要做的是非常標準的面向對象編程。大部分課程都有一門課程,而另一門課程則是幫助大班授課的小班授課。該計劃始終圍繞着更大的課程(TicTacToe)。

我有兩個問題:

1是上述想法(約一大類,該方案圍繞,並且採用小班授課,以幫助),標準和常見的面向對象的程序?

2-你將如何編碼方法resetGame()裏面GameHelpers

謝謝

回答

-1

最好的做法是寫setter和你的計數getter和你的按鈕,像這樣:(對數):

public int getCount() { 
return count; 
} 

public void setCount(int count) { 
    this.count = count; 
} 

然後你就可以在你的其他訪問通過類:

TicTacToe ttt = new TicTacToe(); 
ttt.setCount(0); 

既然你不想井字遊戲的新實例,我想你可以做這樣的事情: 在GameHelper寫private TicTacToe ttt;然後

public GameHelper(TicTacToe ttt) { 
this.ttt = ttt; 
} 

然後,您將不必創建新實例,但在創建GameHelper時傳遞該實例。所以在井字遊戲,當你初始化GameHelper你會寫GameHelper gh = new GameHelper(this);

在這裏,我做給你一個例子:

public class TicTacToe { 

private int count = 0; 

public TicTacToe() { 
count = 3; 
GameHelper gh = new GameHelper(this); 
} 

public void setCount(int count) { 
this.count = count; 
} 

public int getCount() { 
return count; 
} 
public void printCount() { 
System.out.println("Count:"+count); 
} 
} 



    public class GameHelper { 

TicTacToe ttt; 
public GameHelper(TicTacToe ttt) { 
this.ttt = ttt; 
this.ttt.setCount(5); 
this.ttt.printCount(); 
} 

} 

public class Test { 

public static void main(String[] args) { 
TicTacToe ttt = new TicTacToe(); 
} 

} 
1

1.-這種技術可以使用,但少一類程序有依靠更好。我沒有看到簡單地在TicTacToe中創建方法#resetGame的問題。

2:

public class GameHelper { 
public static void resetGame() { 
    for(int i=0;i<9;i++){ 
     TicTacToe.buttons[i].setText(""); 
    } 
    TicTacToe.count = 0; 
} 
} 

然後,您可以通過調用從井字遊戲這個方法:

GameHelper.resetGame(); 

在這種情況下,類GameHelper是多餘的,但我不知道的全部意圖你的程序。

+0

靜態變量是不好的做法,他應該更好地使用私有變量和公共setter/getter – dehlen

+0

我知道它不好使用靜態,但我認爲他的主要問題是如何從另一個類調用靜態方法。 –

+0

這不起作用。它給我一個錯誤(紅線)在TicTacToe.buttons和TicTacToe.count下。該錯誤說:「無法對非靜態字段TicTacToe.buttons進行靜態引用」。 – AvivC