java五子棋中聊天面板代码_java swing人机对战版五子棋游戏源码

package ui;

public class JudgePoint {

int computer[][][]=new int[15][15][5];//电脑棋型评分表

int player[][][]=new int[15][15][5];//万家棋型评分表

final static int[][] COMPUTER_SCORE=new int[][]{{20,30,790,800000},{35,800,15000,800000}};

final static int[][] PLAYER_SCORE=new int[][]{{5,10,390,100000},{15,400,7000,100000}};

public JudgePoint()

{

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

for(int k=0;k<5;k++)

{

computer[i][j][k]=0;

player[i][j][k]=0;

}

}

public int[] getPoint(int a[][])

{

int []point=new int[2];

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

{

if(a[i][j]==0)

{

setComputerAndPlayer(a,i,j,1);

setComputerAndPlayer(a,i,j,2);

}

}

point=getMax();

return point;

}

public int[] getMax()

{

int[] result=new int[2];

int computerMax=0;

int computerX=0;

int computerY=0;

int playerMax=0;

int playerX=0;

int playerY=0;

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

{

if(computerMax

{

computerMax=computer[i][j][4];

computerX=i;

computerY=j;

}

}

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

{

if(playerMax

{

playerMax=player[i][j][4];

playerX=i;

playerY=j;

}

}

System.out.println("computer--"+"computerX= "+computerX+",computerY= "+computerY+" max="+ computerMax);

System.out.println("player--"+"playerX= "+playerX+",playerY= "+playerY+" max="+ playerMax);

if(computerMax>playerMax)

{

result[0]=computerX;

result[1]=computerY;

}

else

{

result[0]=playerX;

result[1]=playerY;

}

return result;

}

public void setComputerAndPlayer(int[][]a,int row,int col,int n)

{

getRow(a,row,col,n);

getCol(a,row,col,n);

getForward(a,row,col,n);

getBack(a,row,col,n);

}

public void getRow(int[][]a,int row,int col,int n)

{

int count1=0;

int count2=0;

int flag1=0;

int flag2=0;

int result=0;

int flag=0;

//横向遍历

for(int i=row-1;i>=0;i--)

{

if(a[i][col]==n)

{

count1++;

if(i==0)

{

flag1=1;

break;

}

}

else if(a[i][col]==0)

{

flag1=2;

break;

}

else

{

flag1=1;

break;

}

}

for(int i=row+1;i<15;i++)

{

if(a[i][col]==n)

{

count2++;

if(i==14)

{

flag2=1;

break;

}

}

else if(a[i][col]==0)

{

flag2=2;

break;

}

else

{

flag2=1;

break;

}

}

result=count1+count2+1;

if(result<=1)

return ;

if(result>5)

return ;

if(flag1==2&&flag2==2)

flag=2;

else if(flag1==1&&flag2==1)

flag=0;

else

flag=1;

if(n==1)

{ if(flag!=0)

{

player[row][col][0]=PLAYER_SCORE[flag-1][result-2];

player[row][col][4]+=player[row][col][0];

}

}

else

{

if(flag!=0)

{

computer[row][col][0]=COMPUTER_SCORE[flag-1][result-2];

computer[row][col][4]+=computer[row][col][0];

}

}

}

public void getCol(int a[][],int row,int col,int n)

{

int count1=0;

int count2=0;

int flag1=0;

int flag2=0;

int result=0;

int flag=0;

//横向遍历

for(int i=col-1;i>=0;i--)

{

if(a[row][i]==n)

{

count1++;

if(i==0)

{

flag1=1;

break;

}

}

else if(a[row][i]==0)

{

flag1=2;

break;

}

else

{

flag1=1;

break;

}

}

for(int i=col+1;i<15;i++)

{

if(a[row][i]==n)

{

count2++;

if(i==14)

{

flag2=1;

break;

}

}

else if(a[row][i]==0)

{

flag2=2;

break;

}

else

{

flag2=1;

break;

}

}

result=count1+count2+1;

if(result<=1)

return ;

if(result>5)

return ;

if(flag1==2&&flag2==2)

flag=2;

else if(flag1==1&&flag2==1)

flag=0;

else

flag=1;

if(n==1)

{ if(flag!=0)

{

player[row][col][1]=PLAYER_SCORE[flag-1][result-2];

player[row][col][4]+=player[row][col][1];

}

}

else

{

if(flag!=0)

{

computer[row][col][1]=COMPUTER_SCORE[flag-1][result-2];

computer[row][col][4]+=computer[row][col][1];

}

}

}

public void getForward(int a[][],int row,int col,int n)

{

int count1=0;

int count2=0;

int flag1=0;

int flag2=0;

int result=0;

int flag=0;

//横向遍历

for(int i=row+1,j=col-1;i<15&&j>=0;i++,j--)

{

if(a[i][j]==n)

{

count1++;

if(i==14&&j==0)

{

flag1=1;

break;

}

}

else if(a[i][j]==0)

{

flag1=2;

break;

}

else

{

flag1=1;

break;

}

}

for(int i=row-1,j=col+1;i>=0&&j<15;i--,j++)

//for(int j=col+1;j<15;j++)

{

if(a[i][j]==n)

{

count2++;

if(i==0&&j==14)

{

flag2=1;

break;

}

}

else if(a[i][j]==0)

{

flag2=2;

break;

}

else

{

flag2=1;

break;

}

}

result=count1+count2+1;

if(result<=1)

return ;

if(result>5)

return ;

if(flag1==2&&flag2==2)

flag=2;

else if(flag1==1&&flag2==1)

flag=0;

else

flag=1;

if(n==1)

{ if(flag!=0)

{

player[row][col][2]=PLAYER_SCORE[flag-1][result-2];

player[row][col][4]+=player[row][col][2];

}

}

else

{

if(flag!=0)

{

computer[row][col][2]=COMPUTER_SCORE[flag-1][result-2];

computer[row][col][4]+=computer[row][col][2];

}

}

}

public void getBack(int a[][],int row,int col,int n)

{

int count1=0;

int count2=0;

int flag1=0;

int flag2=0;

int result=0;

int flag=0;

for(int i=row+1,j=col+1;i<15&&j<15;i++,j++)

{

if(a[i][j]==n)

{

count1++;

if(i==14&&j==14)

{

flag1=1;

break;

}

}

else if(a[i][j]==0)

{

flag1=2;

break;

}

else

{

flag1=1;

break;

}

}

for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--)

{

if(a[i][j]==n)

{

count2++;

if(i==0&&j==0)

{

flag2=1;

break;

}

}

else if(a[i][j]==0)

{

flag2=2;

break;

}

else

{

flag2=1;

break;

}

}

result=count1+count2+1;

if(result<=1)

return ;

if(result>5)

return ;

if(flag1==2&&flag2==2)

flag=2;

else if(flag1==1&&flag2==1)

flag=0;

else

flag=1;

if(n==1)

{ if(flag!=0)

{

player[row][col][3]=PLAYER_SCORE[flag-1][result-2];

player[row][col][4]+=player[row][col][3];

}

}

else

{

if(flag!=0)

{

computer[row][col][3]=COMPUTER_SCORE[flag-1][result-2];

computer[row][col][4]+=player[row][col][3];

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值