五子棋输赢判定算法
Posted soldierback
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五子棋输赢判定算法相关的知识,希望对你有一定的参考价值。
public void whoWin(int row, int col, char ch) { // row是传入的棋子行地址,col为列地址,ch代表棋子,"黑"或“白”
int i;
int j;
int k;
char[] line = new char[getColOfBoard()]; //存储斜行数据
int chNum = 0; //若chNum >= 5,则赢
//从行判断输赢
for(i = 0; i < getColOfBoard(); i++) {
if(cheboard[row][i] == ch) {
chNum++;
if(chNum >= 5) {
System.out.println(ch + "获胜!游戏结束!");
return;
}
} else {
chNum = 0;
}
}
//从列判断输赢
chNum = 0;
for(i = 0; i < getRowOfBoard(); i++) {
if(cheboard[i][col] == ch) {
chNum++;
if(chNum >= 5) {
System.out.println(ch + "获胜!游戏结束!");
return;
}
} else {
chNum = 0;
}
}
//从右下斜行判断
chNum = 0;
k = 0;
for(i = 0; i < getColOfBoard(); i++) { //将line数组清零
line[i] = ‘0‘;
}
i = row + 1;
j = col + 1;
while(i > 0 && j > 0) {
i--;
j--;
}
while(i < getRowOfBoard() && j < getColOfBoard()) {
line[k++] = cheboard[i][j];
i++;
j++;
}
for(i = 0; i < line.length; i++) {
if(line[i] == ch) {
chNum++;
if(chNum >= 5) {
System.out.println(ch + "获胜!游戏结束!");
return;
}
} else {
chNum = 0;
}
}
//从右上斜行判断
chNum = 0;
k = 0;
for(i = 0; i < getColOfBoard(); i++) { //将line数组清零
line[i] = ‘0‘;
}
i = row;
j = col;
while(i < getRowOfBoard() - 1 && j > 0) {
i++;
j--;
}
while(i >= 0 && j < getColOfBoard()) {
line[k++] = cheboard[i][j];
i--;
j++;
}
for(i = 0; i < line.length; i++) {
if(line[i] == ch) {
chNum++;
if(chNum >= 5) {
System.out.println(ch + "获胜!游戏结束!");
return;
}
} else {
chNum = 0;
}
}
}
以上是关于五子棋输赢判定算法的主要内容,如果未能解决你的问题,请参考以下文章