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];
	    }
	}
}

}
最近下载更多
anzai123  LV3 2月29日
YYZQ编程  LV1 2023年12月28日
3大沙发  LV1 2023年12月20日
126577126  LV1 2023年6月18日
1600679511  LV1 2023年5月30日
sherlockq  LV1 2023年5月20日
13174819092  LV1 2023年2月14日
alexcheung  LV3 2022年12月17日
微信网友_6258245891903488  LV7 2022年12月12日
npclll  LV1 2022年11月29日
最近浏览更多
adfasddfsd 4月12日
暂无贡献等级
anzai123  LV3 2月29日
YYZQ编程  LV1 2023年12月28日
46562026 2023年12月22日
暂无贡献等级
3大沙发  LV1 2023年12月20日
2386136609  LV1 2023年12月17日
微信网友_6767218254057472  LV3 2023年12月6日
wangjialiang1  LV17 2023年8月23日
2385649653  LV7 2023年6月26日
126577126  LV1 2023年6月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友