Java 如何使用实例变量和方法定义类,使其在两个值之间交替,并对其进行修改
我正在尝试定义一个可以用于棋盘游戏的类。 我想我将使用accesor方法(getTurn())作为棋盘游戏类的参数 当游戏开始时,它应该在前两次给出“黑色”、“黑色”,然后在“白色”和“黑色”之间交替。 我的startTurn()方法返回这个值 在游戏进行到一半的时候,在当前玩家(WLOG,比如说他的黑人)移动之后,我需要检查一些条件(如果下一个玩家没有移动的可能),并且根据它,我想改变它的顺序 我需要定义的方法是(因此我们假设当前回合是黑色的,现在继续下一回合) 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(),在我将字符串作为turn参数传递时分配getTurn(),并在每次玩家移动时调用startTurn()? 这行吗?(因为我很不确定) 如果是的话,我想什么时候改变订单呢?然后我是否应该有条件地调用该方法而不是startTurn()方法 我在这个问题上纠缠了很长时间。特别是问题2。。 任何建议都将不胜感激 以下是我到目前为止为TurnIndicator课程所做的工作 谢谢Java 如何使用实例变量和方法定义类,使其在两个值之间交替,并对其进行修改,java,function,methods,logic,Java,Function,Methods,Logic,我正在尝试定义一个可以用于棋盘游戏的类。 我想我将使用accesor方法(getTurn())作为棋盘游戏类的参数 当游戏开始时,它应该在前两次给出“黑色”、“黑色”,然后在“白色”和“黑色”之间交替。 我的startTurn()方法返回这个值 在游戏进行到一半的时候,在当前玩家(WLOG,比如说他的黑人)移动之后,我需要检查一些条件(如果下一个玩家没有移动的可能),并且根据它,我想改变它的顺序 我需要定义的方法是(因此我们假设当前回合是黑色的,现在继续下一回合) 1) 如果下一个玩家选择跳过他
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() {
?
}
}
公共类转向指示器{
私有布尔值为白色;
私有整数_计数=0;
私有字符串_currentTurn;
public void startTurn(){
如果(_count我认为你在“转身指示器”中加入了太多的逻辑。跳过转身只是“下一个转身”-当前玩家没有移动/打球的事实不会改变转身顺序
另外,你有两个变量来指示轮到谁了。\u isWhite
和\u currentTurn
两者都有。更糟糕的是,你的反向旋转
会改变一个而不改变另一个。我建议你使用bool
[假设你实际上只想有两个玩家],如果你需要“字符串”轮到谁,调用一个返回它的函数:
std::string playerColour()
{
if (_isWhite) return "WHITE";
return "BLACK";
}
当游戏开始时,它应该在前两次显示“黑色”、“黑色”,然后在“白色”和“黑色”之间交替显示
在内部startTurn()
为什么不做:
if(_count<3) {
_count++;
_currentTurn = "BLACK";
}
<代码>如果(这看起来非常相似。为什么你还用C++来标记?C++有什么用?抱歉,你能取消投票吗?我需要实现这些,因为这是项目描述。玩家不能移动其他玩家的棋子除非它是1),2条件。移动棋子把字符串“黑色”或“白色”。作为它的论点。这就是为什么我需要这个…真的没有办法实现吗??