Java 基于控制台的连接四局-对角赢检测器算法
我对Java多少有些陌生 我正在用java制作一个基于控制台的connect 4游戏,我已经做得差不多了,我只是在挣扎如何检查对角线上的胜利(对角线上连续四个棋子)。我的垂直/水平赢棋盘工作正常,但我不知道如何为对角线棋盘做类似的事情。电路板是一个2d阵列,打印到控制台上,为了检查是否有赢的情况,我检查了同一块中有四块相邻或相邻 以下是电路板代码位:Java 基于控制台的连接四局-对角赢检测器算法,java,algorithm,for-loop,multidimensional-array,Java,Algorithm,For Loop,Multidimensional Array,我对Java多少有些陌生 我正在用java制作一个基于控制台的connect 4游戏,我已经做得差不多了,我只是在挣扎如何检查对角线上的胜利(对角线上连续四个棋子)。我的垂直/水平赢棋盘工作正常,但我不知道如何为对角线棋盘做类似的事情。电路板是一个2d阵列,打印到控制台上,为了检查是否有赢的情况,我检查了同一块中有四块相邻或相邻 以下是电路板代码位: private String board[][] = new String[8][8]; 创建数组 for (int i = 0; i
private String board[][] = new String[8][8];
创建数组
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
board[i][j] = "( )";
}
}
for(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
董事会[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();
}
}
void显示板(){
对于(int i=1;i<9;i++){
系统输出打印(“+i+”);
}
System.out.println();
对于(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
系统输出打印(板[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;
}
boolean winCheck1(){
字符串p=“(“+piece1+”);
对于(int i=0;i<8;i++){
对于(int j=0;j<5;j++){
如果((董事会[i][j]。等于(p)和董事会[i][j+1]。等于(p)
&&董事会[i][j+2]。等于(p)和董事会[i][j+3]
.等于(p))){
这个是.win1();
返回false;
}
}
}
对于(int i=0;i<8;i++){
对于(int j=0;j<5;j++){
如果((董事会[j][i].等于(p)和董事会[j+1][i].等于(p)
&&董事会[j+2][i]。等于(p)和董事会[j+3][i]
.等于(p))){
这个是.win1();
返回false;
}
}
}
这个。play2();
返回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;
}
}
}
for(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
如果((董事会[j][i]。等于(p)和董事会[j+1][i+1]。等于(p)
&&董事会[j+2][i+2]。等于(p)和董事会[j+3][i+3]
.等于(p))){
这个是.win1();
返回false;
}
}
}
对于(int i=3;i<8;i++){
对于(int j=0;j<5;j++){
如果((board[j][i].等于(p)&&board[j+1][i-1].等于(p)
&&董事会[j+2][i-2]。等于(p)和董事会[j+3][i-3]
.等于(p))){
这个是.win1();
返回false;
}
}
}
但是,使用循环(在方向上迭代)可能更好