五子棋经典算法
求五子棋的判断输赢的java源代码 --------------------编程问答-------------------- 以前做过,现在只有jar打包好的了。要不? --------------------编程问答-------------------- 应该是作业吧努力想想 考虑所有可能就可以了 --------------------编程问答-------------------- 理一理很简单的。博弈算法 去看看。 --------------------编程问答-------------------- 网上多的是 好好找找吧 --------------------编程问答-------------------- public static boolean isWin(int x,int y){
/*首先判断水平方向是否获胜?
从落子坐标开始,向左找,找到第一个不是白子 的位置
循环*/
return(isWinAtS(x,y) || isWinAtH(x,y) || isWinAtL(x,y) || isWinAtR(x,y));
}
//水平方向
public static boolean isWinAtS(int x,int y){
char ch=broad[x][y];
while(y>=0 && broad[x][y]==ch){
y--;
}
int from=++y;
while(y<16 && broad[x][y]==ch){
y++;
}
if(y-from>=5){
return true;
}else{
return false;
}
}
//垂直方向
public static boolean isWinAtH(int x,int y){
char ch=broad[x][y];
while(x>=0 && broad[x][y]==ch){
x--;
}
int from=++x;
while(x<16 && broad[x][y]==ch){
x++;
}
if(x-from>=5){
return true;
}else{
return false;
}
}
//左斜方向
public static boolean isWinAtL(int x,int y){
char ch=broad[x][y];
while(x>=0 && y>=0 && broad[x][y]==ch){
x--;
y--;
}
int from=++x;
y++;
while(x<16 && y<16 && broad[x][y]==ch){
x++;
y++;
}
if(x-from>=5){
return true;
}else{
return false;
}
}
//右斜方向
public static boolean isWinAtR(int x,int y){
char ch=broad[x][y];
while(x>=0 && y<16 && broad[x][y]==ch){
x--;
y++;
}
int from=++x;
y--;
while(x<16 && y>=0 && broad[x][y]==ch){
x++;
y--;
}
if(x-from>=5){
return true;
}else{
return false;
}
} --------------------编程问答--------------------
补充:Java , Eclipse