【发布时间】:2014-04-05 09:41:13
【问题描述】:
我正在编写一个井字游戏程序,我正在尝试在驱动程序中使用此类中的方法“playOn”,但我不确定我应该如何使用公共变量(X和 O)我已经定义使用该方法。它应该采用“单例”设计。任何帮助表示赞赏。
public class TTTPlayer {
public TTTPlayer X = new TTTPlayer('X');
public TTTPlayer O = new TTTPlayer('O');
private char symbol;
private Random gen;
private boolean playerTurn; // true for 'X', false for 'O'
private TTTPlayer(char ch) {
this.symbol = ch;
}
public void playOn(TTTBoard board) {
int row = gen.nextInt(2);
int col = gen.nextInt(2);
if (playerTurn) {
board.place(X, row, col);
playerTurn = false;
} else {
board.place(O, row, col);
playerTurn = true;
}
}
【问题讨论】:
-
我会假设您与
board.place(X, row,col);和board.place(O, row, col);完全一样。为什么 X 和 O 完全公开? -
好吧,为了确保没有其他 TTTPlayer 实例被创建,我的老师指定构造函数为私有并创建两个实例 X 和 O 公开,我不明白为什么,因为它只是让我更难使用它的方法。我不能在我的驱动程序中声明一个 TTTPlayer 实例,因为它是私有的,但我可以将它声明为这样的变量:“TTTPlayer player;”但我不能对它使用任何方法..
-
嗯...如果它们被制作成
public,那么我敢猜测它们将在定义它们的类之外使用。