给你一段已实现应用的程序 protected void analyse01(int a1,int a2,int a3,int a4,double f){//绘制棋型表函数0(中级级别2——2003/12/02)
for(i=0;i<15;i++){
for(j=0;j<15;j++){
if (i==0 || j==0 || i==14 || j==14){
n[i][j]=a2;
}
}
}
for(i=1;i<14;i++){
for(j=1;j<14;j++){
if(n[i][j]==0){
if(i-a3>=0 && i-a3<=14 && j-a4<=14 && j-a4>=0 && n[i-a3][j-a4]==a1){
sc[i][j]+=100*f;//活一——100 "本O_
if(i-2*a3>=0 && i-2*a3<=14 && j-2*a4<=14 && j-2*a4>=0 && n[i-2*a3][j-2*a4]==a1){
sc[i][j]+=200*f;//活二——300 "本OO_
if(i-3*a3>=0 && i-3*a3<=14 && j-3*a4<=14 && j-3*a4>=0 && n[i-3*a3][j-3*a4]==a1){
sc[i][j]+=400*f;//活三——700 "本OOO_
if(i-4*a3>=0 && i-4*a3<=14 && j-4*a4<=14 && j-4*a4>=0 && n[i-4*a3][j-4*a4]==a1){
sc[i][j]+=800*f;//活四——1500 "本OOOO_
if(i-5*a3>=0 && i-5*a3<=14 && j-5*a4<=14 && j-5*a4>=0 && n[i-5*a3][j-5*a4]==a1){
if(f==1){
win=1;//黑棋取胜 "本OOOOO
}else{
win=2;//白棋取胜 "本OOOOO
}
}
}else if (i-4*a3>=0 && i-4*a3<=14 && j-4*a4<=14 && j-4*a4>=0 && n[i-4*a3][j-4*a4]==a2){
sc[i][j]-=200*f;//眠三——500 "本OOOX
if (i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2){
sc[i][j]-=500*f;//死三——0 "X本OOOX
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=400*f;//眠三——400(前位有分) "_本OOOX
}else{
sc[i][j]+=800*f;//——1300 "O本OOOX
}
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=560*f;//活三——560(前位有分) "_本OOO_
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2){
sc[i][j]-=350*f;//自成眠四——350 "X本OOO_
}
}else if (i-3*a3>=0 && i-3*a3<=14 && j-3*a4<=14 && j-3*a4>=0 && n[i-3*a3][j-3*a4]==a2){
sc[i][j]-=100*f;//眠二——200  "本OOX
if ((i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2)||
(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==a2)){
sc[i][j]-=200*f;//死二——0  "X_本OOX or XO本OOX
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=160*f;//眠二——160(前1位有分) "__本OOX or O_本OOX
if(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==0){
sc[i+2*a3][j+2*a4]+=120*f;//眠二——120(前2位有分) "__本OOX 
}
}else {
sc[i][j]+=300*f;//——500 "O本OOX
}
}else if(i-4*a3>=0 && i-4*a3<=14 && j-4*a4<=14 && j-4*a4>=0 && n[i-4*a3][j-4*a4]==a2){ 
if (i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2){
sc[i][j]-=300*f;//死二——0 "X本OO_X 
}else {
if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=240*f;//活二——240(前1位有分) "_本OO_X 
if(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==0){
sc[i+2*a3][j+2*a4]+=180*f;//活二——180(前2位有分) "__本OO_X 
}
}
}
}else{
if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=270*f;//活二——270(前1位有分) "_本OO__ or _本OO_O
if(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==0){
sc[i+2*a3][j+2*a4]+=240*f;//活二——240(前2位有分) "__本OO__ or _O本OO_O
}
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2){
sc[i][j]-=150*f;//自成眠三——150 "X本OO__ 
}
}
}else if (i-2*a3>=0 && i-2*a3<=14 && j-2*a4<=14 && j-2*a4>=0 && n[i-2*a3][j-2*a4]==a2){
sc[i][j]-=50*f;//眠一——50  "本OX 
if ((i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2) || 
(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==a2)||
(i+3*a3>=0 && i+3*a3<=14 && j+3*a4<=14 && j+3*a4>=0 && n[i+3*a3][j+3*a4]==a2)){
sc[i][j]-=50*f;//死一——0 "X本OX or "X_本OX or "X__本OX 
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=40*f;//眠一——40(前1位有分)"___本OX or "OO_本OX or "O__本OX or "_O_本OX 
if(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==0){
sc[i+2*a3][j+2*a4]+=30*f;//眠一——30(前2位有分)"___本OX or "O_O本OX or "O__本OX or "__O本OX
if(i+3*a3>=0 && i+3*a3<=14 && j+3*a4<=14 && j+3*a4>=0 && n[i+3*a3][j+3*a4]==0){
sc[i+3*a3][j+3*a4]+=20*f;//眠一——20(前3位有分)"___本OX or "_O_本OX or "_OO本OX or "__O本OX
}
}
}else {
sc[i][j]+=100*f;//——150 "__O本OX
}
}else if(i-3*a3>=0 && i-3*a3<=14 && j-3*a4<=14 && j-3*a4>=0 && n[i-3*a3][j-3*a4]==a2){
if ((i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2)||
(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==a2)){
sc[i][j]-=100*f;//死一——0 "X本O_X or "X_本O_X 
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=70*f;//半活一——70(前1位有分) "__本O_X or O_本O_X
if(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==0){
sc[i+2*a3][j+2*a4]+=60*f;//半活一——60(前2位有分) "__本O_X or _O本O_X
if(i+3*a3>=0 && i+3*a3<=14 && j+3*a4<=14 && j+3*a4>=0 && n[i+3*a3][j+3*a4]==0){
sc[i+3*a3][j+3*a4]+=50*f;//半活一——50(前3位有分)"___本O_X or "_O_本O_X or "_OO本O_X or "__O本O_X
}
}
}else {
sc[i][j]+=100*f;//——150 "_O本O_X
}
}else if(i-4*a3>=0 && i-4*a3<=14 && j-4*a4<=14 && j-4*a4>=0 && n[i-4*a3][j-4*a4]==a2){
if ((i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2)){
sc[i][j]-=100*f;//死一——0 "X本O__X  or "X本O_OX
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=80*f;//活一——80(前1位有分) "_本O__X or _本O_OX
if(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==0){
sc[i+2*a3][j+2*a4]+=70*f;//活一——70(前2位有分) "__本O__X or _O本O_OX or
if(i+3*a3>=0 && i+3*a3<=14 && j+3*a4<=14 && j+3*a4>=0 && n[i+3*a3][j+3*a4]==0){
sc[i+3*a3][j+3*a4]+=60*f;//活一——60(前3位有分)"___本O__X or "_O_本O__X or "_OO本O__X or "__O本O__X
}
}
}else{
sc[i][j]+=100*f;//——150 "O本O__X
}
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==0){
sc[i+a3][j+a4]+=90*f;//活一——90(前1位有分) "_本O___ or _本O_O_
if(i+2*a3>=0 && i+2*a3<=14 && j+2*a4<=14 && j+2*a4>=0 && n[i+2*a3][j+2*a4]==0){
sc[i+2*a3][j+2*a4]+=80*f;//活一——80(前2位有分) "__本O___ or _O本O_O_ or
if(i+3*a3>=0 && i+3*a3<=14 && j+3*a4<=14 && j+3*a4>=0 && n[i+3*a3][j+3*a4]==0){
sc[i+3*a3][j+3*a4]+=70*f;//活一——70(前3位有分)"___本O___ or "_O_本O___ or "_OO本O___ or "__O本O___
}
}
}else if(i+a3>=0 && i+a3<=14 && j+a4<=14 && j+a4>=0 && n[i+a3][j+a4]==a2){
sc[i][j]-=50*f;//自成眠二——50 "X本O___ 
}else{
sc[i][j]+=100*f;//——150 "O本O___
}
}
}
}
}
}

解决方案 »

  1.   

    protected void analyse(int x1,int y1){//分析当前点所属
    win=0;
    for(i=1;i<9;i++){
    for(j=0;j<4;j++){
    af[i][j]=0;
    num[i][j]=0;
    }
    }
    analyse1(x1,y1,-1,-1,1);
    analyse1(x1,y1,-1,0,2);
    analyse1(x1,y1,-1,1,3);
    analyse1(x1,y1,0,1,4);
    analyse1(x1,y1,1,1,5);
    analyse1(x1,y1,1,0,6);
    analyse1(x1,y1,1,-1,7);
    analyse1(x1,y1,0,-1,8);
    }
    protected void analyse1(int x1,int y1,int a1,int a2,int f){//分析当前点所属及其棋子数
    x=x1;y=y1;flag=0;
    while(x+a1>0 && y+a2>0 && x+a1<14 && y+a2<14){
    if(n[x+a1][y+a2]!=n[x][y] && num[f][0]!=0){
    flag++;
    num[f][flag]=0;
    }
    if(n[x+a1][y+a2]==1){
    af[f][flag]=1;
    }else if(n[x+a1][y+a2]==2){
    af[f][flag]=2;
    }else{
    af[f][flag]=0;
    }
    num[f][flag]++;
    x+=a1;
    y+=a2;
    }
    } protected void analyse00(int a1,int a2,double f1,double f2){//绘制棋型表函数0(中级级别2——2003/12/02)
    win=0;
    for(i=1;i<14;i++){
    for(j=1;j<14;j++){
    sc[i][j]=0;
    }
    }
    //判定己方棋子分值
    analyse01(a1,a2,-1,-1,f1);
    analyse01(a1,a2,-1,0,f1);
    analyse01(a1,a2,-1,1,f1);
    analyse01(a1,a2,0,1,f1);
    analyse01(a1,a2,1,1,f1);
    analyse01(a1,a2,1,0,f1);
    analyse01(a1,a2,1,-1,f1);
    analyse01(a1,a2,0,-1,f1);
    //判定对方棋子分值
    analyse01(a2,a1,-1,-1,f2);
    analyse01(a2,a1,-1,0,f2);
    analyse01(a2,a1,-1,1,f2);
    analyse01(a2,a1,0,1,f2);
    analyse01(a2,a1,1,1,f2);
    analyse01(a2,a1,1,0,f2);
    analyse01(a2,a1,1,-1,f2);
    analyse01(a2,a1,0,-1,f2);
    }