我正在尝试定义一个可以用于棋盘游戏的类。我想我将使用访问方法(getTurn())作为棋盘游戏类的参数。
游戏开始时,前两次应给出“BLACK”、“BLACK”,然后应在“WHITE”和“BLACK”之间交替。我的 startTurn() 方法返回这个。
游戏进行到一半,当前玩家(WLOG,说他的BLACK)移动后,我需要检查一些条件(如果下一个玩家没有移动可能),并根据它,我想改变顺序其中。
我需要定义的方法是(所以我们假设当前转弯是黑色的,现在继续下一个)
1)如果下一个玩家选择跳过他/她的回合,它应该再次给黑色,然后像以前一样在白色和黑色之间交替。
像这样:B-> B-> W -> B ->........ W -> B| -> B -> W -> B -> .....
或者如果当前玩家是白人,
像这样:B-> B-> W -> B ->........ B -> W| -> W -> B -> W -> .....
, 其中“|” 在 B 或 W 之后只是我用来解释我测试下一个玩家是否有可能移动(使用方法)的点的符号,如果没有,则像这样改变转弯。(我猜 reverseTurn() 方法可以做到这一点,这可能不会太难。)
2)如果下一个玩家选择移动对方的棋子,它应该先给黑(这样白棋可以移动一个黑棋),然后给黑(这样黑棋轮到他/她),然后在白棋和黑棋之间交替和以前一样。
像这样:B-> B-> W -> B ->........ W -> B| -> B -> B -> W -> B -> .....
或者如果当前玩家是白人,
像这样:B-> B-> W -> B ->........ B -> W| -> W-> W -> B -> W -> .....
, 其中“|” 在 B 或 W 之后只是我用来解释我测试下一个玩家是否有可能移动(使用方法)的点的符号,如果没有,则像这样改变转弯。
3)另一个问题是,如果我有上述两个问题的答案,我如何在我的棋盘游戏课程中使用它?我能想到的只是初始化TurnIndicator,并在构造函数中调用startTurn(),并在我将字符串作为转向参数传递时分配getTurn(),并在每次玩家移动时调用startTurn()?这行得通吗?(因为我很不确定)
如果是这样,那我什么时候想更改订单呢?然后我应该有条件地调用该方法而不是 startTurn() 方法吗?
我已经被这个问题困扰了很长时间。特别是问题 2.. 任何建议将不胜感激。
以下是我迄今为止为 TurnIndicator 类所做的工作。
谢谢!!
public class TurnIndicator {
private boolean _isWhite;
private int _count = 0;
private String _currentTurn;
public void startTurn() {
if(_count<3)
_count++;
if(_count == 1 || _count == 2) {
_currentTurn = "BLACK";
}
else {
_isWhite = !_isWhite;
_currentTurn = _isWhite ? "WHITE" : "BLACK";
}
}
public String getTurn() {
return _currentTurn;
}
public void reverseTurn() {
_currentTurn = _currentTurn == "WHITE" ? "BLACK" : "WHITE";
}
public String skipTurn() {
?
}
public String takeOthersTurn() {
?
}
}