当前位置:编程学习 > JAVA >>

五子棋经典算法

求五子棋的判断输赢的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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,