如何解决如何跟踪以前的国王是正常跳跃还是在 Java 中捕获跳跃
我使用 Java 设计了跳棋游戏,国王沿着左右、上下的对角线跳到任何空白处。我可以跟踪来决定国王是正常移动还是跳跃并杀死对手的棋子,问题是我如何记录之前的移动是正常移动还是JUMPING_KILLING MOVE。 我有两个布尔函数来决定是正常移动还是跳跃,这有助于我决定进行强制跳跃(如果有的话)。
这是我的跳跃布尔函数: public boolean canJumpKing(int player,int r1,int c1,int r2,int c2,int r3,int c3) {
if (r3 < 0 || r3 >= 8 || c3 < 0 || c3 >= 8)
return false;
if (board[r3][c3] != EMPTY)
return false;
for (int i = 1; i < r3 - r1 - 1; i++) {
if (((r3 > r2) && (c3 > c2)))
if ((board[r1 + i][c1 + i] != EMPTY) && (board[r1 + i + 1][c1 + i + 1] != EMPTY))
return false; }
for (int i = 1; i < c1 - c3 - 1; i++) {
if (((r3 < r2) && (c3 < c2)))
if ((board[r1 - i][c1 - i] != EMPTY) && (board[r1 - i - 1][c1 - i - 1] != EMPTY))
return false; }
}
这是我将强制跳跃动作添加到array_list的代码:
if (board[row][col] == playerKing) {
if (row<col)
for (int i=1; i<(7-col); i++) {
if (canJumpKing(player,row,col,row+i,col+i,row+1+i,col+1+i)) {
moves.add(new CheckersMove(row,col+1+i));
for (int j=1; j<8-(col+1+i); j++){
if (col+j+i+1<8)
if ((board[row+1+j+i][col+j+1+i] != EMPTY))
break;
if ((board[row+1+j+i][col+j+1+i] == EMPTY)) {
moves.add(new CheckersMove(row,row+1+j+i,col+j+1+i));
}}}}}
以上代码扩展到多行以涵盖所有选项。 上一招是普通招还是跳杀招,请帮我记录一下。
解决方法
问题是我将 King-jumping 和普通棋子保持在同一个数组上,我决定将它们分开在不同的 array_list 中,这样在 King 可以移动它之前检查 King_Jumping Array 是否返回 null然后它移动,这样我必须决定检查 King_Jumping Array_List 上是否有任何内容,如果移动是正常跳跃,它返回 null。无论如何,感谢您尝试提供的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。