五子棋java程序的判断胜负的方法

2024-12-28 23:17:32
推荐回答(3个)
回答1:

每走一步,调用判断方法
思路为:
首先你应该有一个组的集合,就是横、竖、斜三个方向,每5格一组,这个可以根据你的宽高计算出来。

循环这个集合。如果有同色连接5个,那么为胜

同时将五格中已有4个同色并且剩余一格未操作的,放入一个集合内,若上一步没有结果,那么判断这个集合,如果有这个集合有两条以上,并且未操作格坐标不为同一个,那么同样为胜

这么说明白不?

回答2:

public boolean isWin(int row, int column) {
boolean isWin = false;
char curChess = turn?'@':'o';
if (this.isHorizontalWin(row, column, curChess)
|| this.isVerticalWin(row, column, curChess)
|| this.isLeftObliqueDownWin(row, column, curChess)
|| this.isLeftObliqueUpWin(row, column, curChess)) {
isWin = true;
}
return isWin;
}

public boolean isHorizontalWin(int row, int column, char curChess) {
boolean isWin = false;
int count = 0;
for (int c = column-1; c>=0; c--) {
if (cells[row][c] == curChess) {
count++;
} else {
break;
}
}
for (int c = column+1; c if (cells[row][c] == curChess) {
count++;
} else {
break;
}
}
System.out.println("horizontal count :"+ count);
if (count >=4) {
isWin = true;
}
return isWin;
}

public boolean isVerticalWin(int row, int column, char curChess) {
boolean isWin = false;

return isWin;
}

public boolean isLeftObliqueDownWin(int row, int column, char curChess) {
boolean isWin = false;

return isWin;
}

public boolean isLeftObliqueUpWin(int row, int column, char curChess) {
boolean isWin = false;
int count = 0;
for (int r = row-1, c = column-1; r>=0 && c>=0; r--, c--){
if (cells[r][c] == curChess) {
count++;
} else {
break;
}
}

if (count >=4) {
isWin = true;
}
return isWin;
}

回答3:

写个算法
判断矩阵横竖斜。。。,要颜色一样,没走一步都要判定
做的更好点的话,可以连续4个就判定输