Java Do While循环过早退出
我试着写一个PvP国际象棋程序。然而,当一个无效的移动被播放时,它结束回合Java Do While循环过早退出,java,loops,do-while,chess,Java,Loops,Do While,Chess,我试着写一个PvP国际象棋程序。然而,当一个无效的移动被播放时,它结束回合 do { boolean q = askMove(board, white , in); if (q == true){ white.move = false; break; } else conti
do
{
boolean q = askMove(board, white , in);
if (q == true){
white.move = false;
break;
}
else
continue;
} while (white.move == true);
do
{
//boardDisplay (board);
boolean w = askMove(board, black, in);
if (w == true){
black.move = false;
break;
}
else
continue;
}while (black.move == true);
}
在代码中,如果工件的初始坐标和最终坐标不相同,则q为真
if (x1 != x2 || y1 != y2)
return true;
return false;
当我执行这个代码时
因此,如果我玩第二个无效,第二个移动应该重放,因为(q==false)
但是,
只有当轮到错误的玩家时,代码才会触发“你不能移动敌人的棋子”。但是,当我尝试使用有效的移动时,它也会触发
尽管我写道:
player p
if (board[x1][y1].initPiece.name.charAt(0) != p.colour)
System.out.println ("you cannot move an enemy piece");
非常感谢您的帮助。尽管可以改进,但我认为您的错误不在您显示的第一个代码块中 如果确实需要,可以将
askMove()
设置为白色/黑色。将移动到false
。然后,您可以将第一段代码简化为:
while(!askMove(board, white, in));
while(!askMove(board, black, in));
这还不能解释你的错误
但是,如果您更改此代码,我认为您会很快发现错误:
if (board[x1][y1].initPiece.name.charAt(0) != p.colour)
System.out.println ("you cannot move an enemy piece");
if (board[x1][y1].initPiece.name.charAt(0) != p.colour)
System.out.println ("You cannot move the enemy piece "
+ board[x1][y1].initPiece.name + " at "
+ x1 + "," + y1 + " when playing as "
+ p.colour);
根据本守则:
if (board[x1][y1].initPiece.name.charAt(0) != p.colour)
System.out.println ("you cannot move an enemy piece");
if (board[x1][y1].initPiece.name.charAt(0) != p.colour)
System.out.println ("You cannot move the enemy piece "
+ board[x1][y1].initPiece.name + " at "
+ x1 + "," + y1 + " when playing as "
+ p.colour);
我必须看到您的代码的其余部分,但如果在切换玩家时索引被反转,我不会感到惊讶 请格式化您的代码。您认为break代码>正在做什么?