2 回答
TA贡献1825条经验 获得超6个赞
我在代码中看到了一些问题,但这将有助于解决您的错误。您在帖子中询问了如何调试,我将尝试向您展示如何重新排列代码:
这个剪断是完全一样的:
String Player1Pos1 = reader.getString(); //gets user input ... move from... to.... temporary variables
int x1From = Player1Pos1.charAt(0) - 'a'; //to transform the letter ASCII values
int y1From = 8 - (Player1Pos1.charAt(1) - '1') - 1; // to transform the number
为什么不使用单独的函数:
Pair<Integer, Integer> getPlayerPosition(String x, String y)
在函数 legalPieceMove(...) 你有很多重复的代码。我认为您不需要白色和黑色之间的区别。那么这个功能真的很短。使用 switch 语句或“if”“else if”“else”语句,代码更具可读性。
在 Board 类中,几乎每个函数都需要 board 变量。为什么不使用实例变量。然后你的函数参数列表会短一点。
我无法修改您的代码,因为我没有完整的代码。
TA贡献1863条经验 获得超2个赞
我找到了这个:
for (...) {
if (getPieceColour(gameBoard, xFrom - i, yFrom) != getPieceColour(gameBoard, xFrom, yFrom)) {
...
}
}
如果 getPieceColour(...) == getPieceColour(...),则必须离开 for 循环:
for (...) {
if (getPieceColour(gameBoard, xFrom - i, yFrom) != getPieceColour(gameBoard, xFrom, yFrom)) {
...
} else {
break;
}
}
添加回答
举报