?? jinshou.java
字號:
public class jinshou {
public boolean panduan(int m,int n,int pq[][]){
int left=0;
int right=0;
int above=0;
int below=0;
int skewabove=0;
int skewbelow=0;
int tiltedabove=0;
int tiltedbelow=0;
int horizon=0; // 水平方向上棋子數(shù)
int vertical=0; // 豎直方向上棋子數(shù)
int bias1=0; // "\"方向上棋子數(shù)
int bias2=0; // "/"方向上棋子數(shù)
// //判斷最一般的三三禁手情況
// if(pq[m][n]==1){
// //判斷水平方向
// int a=1;
// if(m-1>=0){
// for(a=m-1;a>=0;a--){
// if(pq[a][n]==1){
// left++;
// }
// else{
// break;
// }
// }
// }
// if(a>=0&&a!=m-1){
// if(pq[a][n]==-1){
// return false;
// }
// }
// int b=1;
// if(m+1<15){
// for(b=m+1;b<15;b++){
// if(pq[b][n]==1){
// right++;
// }
// else{
// break;
// }
// }
// }
// if(b<15&&b!=m+1){
// if(pq[b][n]==-1){
// return false;
// }
// }
// horizon=left+right;
//
// //判斷豎直方向
// int c=1;
// for(c=n-1;c>=0;c--){
// if(pq[m][c]==1){
// above++;
// }
// else{
// break;
// }
// }
// if(c>=0&&c!=n-1){
// if(pq[m][c]==-1){
// return false;
// }
// }
// int d=1;
// for(d=n+1;d<15;d++){
// if(pq[m][d]==1){
// below++;
// }
// else{
// break;
// }
// }
// if(d<15&&d!=n+1){
// if(pq[m][d]==-1){
// return false;
// }
// }
// vertical=above+below;
//
// //判斷"\"方向
// int e=1,f=1;
// for(e=m-1,f=n-1;e>=0&&f>=0;e--,f--){
// if(pq[e][f]==1){
// skewabove++;
// }
// else{
// break;
// }
// }
// if(e>=0&&f>=0&&e!=m-1&&f!=n-1){
// if(pq[e][f]==-1){
// return false;
// }
// }
// int g=1,h=1;
// for(g=m+1,h=n+1;g<15&&h<15;g++,h++){
// if(pq[g][h]==1){
// skewbelow++;
// }
// else{
// break;
// }
// }
// if(g<15&&h<15&&g!=m+1&&h!=n+1){
// if(pq[g][h]==-1){
// return false;
// }
// }
// bias1=skewabove+skewbelow;
//
// //判斷"/"方向
// int e1=1,f1=1;
// for(e1=m+1,f1=n-1;e1<15&&f1>=0;e1++,f1--){
// if(pq[e1][f1]==1){
// tiltedabove++;
// }
// else{
// break;
// }
// }
// if(e1<15&&f1>=0&&e1!=m+1&&f1!=n-1){
// if(pq[e1][f1]==-1){
// return false;
// }
// }
// int g1=1,h1=1;
// for(g1=m-1,h1=n+1;g1>=0&&h1<15;g1--,h1++){
// if(pq[g1][h1]==1){
// tiltedbelow++;
// }
// else{
// break;
// }
// }
// if(g1>=0&&h1<15&&g1!=m-1&&h1!=n+1){
// if(pq[g1][h1]==-1){
// return false;
// }
// }
// bias2=tiltedabove+tiltedbelow;
//
//
// if((horizon==2&&vertical==2)||(horizon==2&&bias1==2)||(horizon==2&&bias2==2)
// ||(vertical==2&&bias1==2)||(vertical==2&&bias2==2)||(bias1==2&&bias2==2)){
// return true;
// }
// }
//
//
// //判斷有跳沖三的情況
// left=0;
// right=0;
// above=0;
// below=0;
// skewabove=0;
// skewbelow=0;
// tiltedabove=0;
// tiltedbelow=0;
// horizon=0; // 水平方向上棋子數(shù)
// vertical=0; // 豎直方向上棋子數(shù)
// bias1=0; // "\"方向上棋子數(shù)
// bias2=0; // "/"方向上棋子數(shù)
if(pq[m][n]==1){
//判斷水平方向
int a=1;
int b=1;
// if(m-1>0){
// a=m-1;
// }
// if(m+1<15){
// b=m+1;
// }
if(m-1>=0&&m+1<15){
a=m-1;
b=m+1;
if(pq[a][n]==0){
for(a=m-2;a>=0;a--){
if(pq[a][n]==1){
left++;
}
else{
break;
}
}
if(a>=0&&a!=m-1){
if(pq[a][n]==-1){
return false;
}
}
if(pq[b][n]==0){
for(b=m+2;b<15;b++){
if(pq[b][n]==1){
right++;
}
else{
break;
}
}
if(b<15&&b!=m+1){
if(pq[b][n]==-1){
return false;
}
}
}
else{
if(pq[b][n]==1){
right=1;
b=m+2;
if(pq[b][n]==1){
right=2;
for(b=m+3;b<15;b++){
if(pq[b][n]==1){
right++;
}
else{
break;
}
}
}
else{
if(pq[b][n]==0){
for(b=m+3;b<15;b++){
if(pq[b][n]==1){
right++;
}
else{
break;
}
}
}
}
if(b<15&&b!=m+1){
if(pq[b][n]==-1){
return false;
}
}
}
}
horizon=left+right;
}
else{
a=m-1;
b=m+1;
//if((pq[a][n]==1)&&(pq[b][n]==0)){
if((pq[a][n]==1)){
left=1;
a=m-2;
if(pq[a][n]==1){
left=2;
for(a=m-3;a>=0;a--){
if(pq[a][n]==1){
left++;
}
else{
break;
}
}
}
else{
if(pq[a][n]==0){
for(a=m-3;a>=0;a--){
if(pq[a][n]==1){
left++;
}
else{
break;
}
}
}
}
if(a>=0&&a!=m-1){
if(pq[a][n]==-1){
return false;
}
}
if(pq[b][n]==1){
right=1;
b=m+2;
if(pq[b][n]==1){
right=2;
for(b=m+3;b<15;b++){
if(pq[b][n]==1){
right++;
}
else{
break;
}
}
}
else{
if(pq[b][n]==0){
for(b=m+3;b<15;b++){
if(pq[b][n]==1){
right++;
}
else{
break;
}
}
}
}
if(b<15&&b!=m+1){
if(pq[b][n]==-1){
return false;
}
}
}
else{
if(pq[b][n]==0){
for(b=m+2;b<15;b++){
if(pq[b][n]==1){
right++;
}
else{
break;
}
}
if(b<15&&b!=m+1){
if(pq[b][n]==-1){
return false;
}
}
}
}
}
horizon=left+right;
}
}
//判斷豎直方向
int c=1;
int d=1;
// c=n-1;
// d=n+1;
if(n-1>=0&&n+1<15){
c=n-1;
d=n+1;
if(pq[m][c]==0){
for(c=n-2;c>=0;c--){
if(pq[m][c]==1){
above++;
}
else{
break;
}
}
if(c>=0&&c!=n-1){
if(pq[m][c]==-1){
return false;
}
}
if(pq[m][d]==1){
below=1;
d=n+2;
if(pq[m][d]==1){
below=2;
for(d=n+3;d<15;d++){
if(pq[m][d]==1){
below++;
}
else{
break;
}
}
}
else{
if(pq[m][d]==0){
for(d=n+3;d<15;d++){
if(pq[m][d]==1){
below++;
}
else{
break;
}
}
}
}
if(d<15&&d!=n+1){
if(pq[m][d]==-1){
return false;
}
}
}
else{
if(pq[m][d]==0){
for(d=n+2;d<15;d++){
if(pq[m][d]==1){
below++;
}
else{
break;
}
}
if(d<15&&d!=n+1){
if(pq[m][d]==-1){
return false;
}
}
}
}
vertical=above+below;
}
else{
c=n-1;
d=n+1;
if((pq[m][c]==1)){
above=1;
c=n-2;
if(pq[m][c]==1){
above=2;
for(c=n-3;c>=0;c--){
if(pq[m][c]==1){
above++;
}
else{
break;
}
}
}
else{
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -