我或多或少是Java的新手。
我正在用java制作一个基于控制台的connect 4游戏,我已经差不多完成了,我只是在努力检查如何对角线获胜(对角线上连续四个棋子)。我的垂直/水平获胜跳棋运行良好,但我不知道如何为对角线跳棋做类似的事情。该板是一个2d阵列,打印在控制台上,为了检查是否获胜,我检查了四个相邻或上方的同一块。
以下是板代码:
private String board[][] = new String[8][8];
创建阵列
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
board[i][j] = "( )";
}
}
用空白插槽填充板
void displayBoard() {
for (int i = 1; i < 9; i++) {
System.out.print(" " + i + " ");
}
System.out.println();
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
这是绞车检查
boolean winCheck1() {
String p = "(" + piece1 + ")";
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 5; j++) {
if ((board[i][j].equals(p) && board[i][j + 1].equals(p)
&& board[i][j + 2].equals(p) && board[i][j + 3]
.equals(p))) {
this.win1();
return false;
}
}
}
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 5; j++) {
if ((board[j][i].equals(p) && board[j + 1][i].equals(p)
&& board[j + 2][i].equals(p) && board[j + 3][i]
.equals(p))) {
this.win1();
return false;
}
}
}
this.play2();
return false;
}
如有任何帮助,我们将不胜感激。谢谢
如果你想继续按自己的方式进行:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if ((board[j][i].equals(p) && board[j + 1][i + 1].equals(p)
&& board[j + 2][i + 2].equals(p) && board[j + 3][i + 3]
.equals(p))) {
this.win1();
return false;
}
}
}
for (int i = 3; i < 8; i++) {
for (int j = 0; j < 5; j++) {
if ((board[j][i].equals(p) && board[j + 1][i - 1].equals(p)
&& board[j + 2][i - 2].equals(p) && board[j + 3][i - 3]
.equals(p))) {
this.win1();
return false;
}
}
}
然而,使用循环(遍历方向)可能会更好。