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<computer[i][j][4])
			{
				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<player[i][j][4])
			{
				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];
	    }
	}
}

}
最近下载更多
鲁一宇  LV5 2024年12月30日
kndxrt  LV1 2024年12月13日
qqqww11  LV2 2024年6月26日
wwuuuas  LV1 2024年6月3日
dexd1111  LV1 2024年5月28日
姜长志  LV1 2024年5月5日
anzai123  LV3 2024年2月29日
YYZQ编程  LV1 2023年12月28日
3大沙发  LV1 2023年12月20日
126577126  LV1 2023年6月18日
最近浏览更多
2601581358  LV1 3月31日
鲁一宇  LV5 2024年12月30日
yzhsnjdn  LV1 2024年12月17日
Jarway 2024年12月16日
暂无贡献等级
kndxrt  LV1 2024年12月13日
qqqww11  LV2 2024年6月26日
azzzz1  LV2 2024年6月26日
wwuuuas  LV1 2024年6月3日
A2220617643 2024年6月2日
暂无贡献等级
dexd1111  LV1 2024年5月28日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友