⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmp.cpp

📁 站长以前用Brew写的五子棋程序
💻 CPP
字号:
int FIVE_CalcCount(APP_DATA *pdata, int color)
{
	int i, j, m, n, k1, k2, s1, s2, s3,dead01, dead02, dead11, dead12;
	int max_count =0, max_i =LINE_COUNT/2, max_j =LINE_COUNT/2, count;

	if(pdata->cur_deep >= pdata->deep) return 0;

	for(i =0; i<LINE_COUNT; i++)
	for(j =0; j<LINE_COUNT; j++)
	{
		if(pdata->tmp_man[i][j] ==0)
		{
			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =i+1; m<LINE_COUNT; m++)
			{
				if(pdata->tmp_man[m][j] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][j] ==0)
					s1 +=1;
				else if(pdata->tmp_man[m][j] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =0; m<i-1; m++)
			{
				if(pdata->tmp_man[m][j] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead11 ++;
					if(s2 ==1)
						dead12 ++;
				}
				else if(pdata->tmp_man[m][j] ==0)
					s2 +=1;
				else if(pdata->tmp_man[m][j] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][0] =k1*20+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;

			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =j+1; m<LINE_COUNT; m++)
			{
				if(pdata->tmp_man[i][m] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[i][m] ==0)
					s1 +=1;
				else if(pdata->tmp_man[i][m] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =0; m<j-1; m++)
			{
				if(pdata->tmp_man[i][m] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead11 ++;
					if(s2 ==1)
						dead12 ++;
				}
				else if(pdata->tmp_man[i][m] ==0)
					s2 +=1;
				else if(pdata->tmp_man[i][m] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][2] =k1*20+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;

			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =i-1, n=j-1; m>=0 && n>=0; m--, n--)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s1 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =i+1, n=j+1; m <LINE_COUNT && n <LINE_COUNT; m++, n++)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead01 ++;
					if(s2 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s2 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][1] =k1*20+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;

			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =i-1, n=j+1; m>=0 && n<LINE_COUNT; m--, n++)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s1 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =i+1, n=j-1; m <LINE_COUNT && n >=0; m++, n--)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead01 ++;
					if(s2 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s2 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][3] =k1*20+1+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;;
		}
		else
		{
			pdata->tmp_count_info[i][j][0] =
			pdata->tmp_count_info[i][j][1] =
			pdata->tmp_count_info[i][j][2] =
			pdata->tmp_count_info[i][j][3] =0;
		}
		for(m =0; m<4; m++)
			count +=pdata->tmp_count_info[i][j][m];
		if(count > max_count)
		{
			max_count =count;
			max_i =i;
			max_j =j;
		}
	}
	pdata->cur_deep ++;
	pdata->tmp_man[max_i][max_j] =MAN_WHITE;

	FIVE_CalcCount(pdata, color);
	
	return 0;
}

int FIVE_CheckWin(APP_DATA *pdata)
{
	return 0;
}

int FIVE_tmp(APP_DATA *pdata, int i, int j)
{
	int m, n, k1, k2, s1, s2, s3,dead01, dead02, dead11, dead12;

		{
			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =i+1; m<LINE_COUNT; m++)
			{
				if(pdata->tmp_man[m][j] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][j] ==0)
					s1 +=1;
				else if(pdata->tmp_man[m][j] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =0; m<i-1; m++)
			{
				if(pdata->tmp_man[m][j] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead11 ++;
					if(s2 ==1)
						dead12 ++;
				}
				else if(pdata->tmp_man[m][j] ==0)
					s2 +=1;
				else if(pdata->tmp_man[m][j] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][0] =k1*20+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;

			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =j+1; m<LINE_COUNT; m++)
			{
				if(pdata->tmp_man[i][m] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[i][m] ==0)
					s1 +=1;
				else if(pdata->tmp_man[i][m] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =0; m<j-1; m++)
			{
				if(pdata->tmp_man[i][m] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead11 ++;
					if(s2 ==1)
						dead12 ++;
				}
				else if(pdata->tmp_man[i][m] ==0)
					s2 +=1;
				else if(pdata->tmp_man[i][m] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][2] =k1*20+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;

			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =i-1, n=j-1; m>=0 && n>=0; m--, n--)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s1 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =i+1, n=j+1; m <LINE_COUNT && n <LINE_COUNT; m++, n++)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead01 ++;
					if(s2 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s2 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][1] =k1*20+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;

			k1 =0;
			k2 =0;
			s1 =s2 =s3 =0;
			dead01=dead11=dead02=dead12 =0;
			for(m =i-1, n=j+1; m>=0 && n<LINE_COUNT; m--, n++)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k1 +=LINE_COUNT;
					if(s1 ==0)
						dead01 ++;
					if(s1 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s1 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			for(m =i+1, n=j-1; m <LINE_COUNT && n >=0; m++, n--)
			{
				if(pdata->tmp_man[m][n] ==2)
				{
					k2 +=LINE_COUNT;
					if(s2 ==0)
						dead01 ++;
					if(s2 ==1)
						dead02 ++;
				}
				else if(pdata->tmp_man[m][n] ==0)
					s2 +=1;
				else if(pdata->tmp_man[m][n] ==1)
				{
					s3 -=1;
					break;
				}
			}
			if(k1 <0) k1 =0;
			if(k2 <0) k2 =0;
			pdata->tmp_count_info[i][j][3] =k1*20+1+k2+(s1+s2)%5+s3+(dead01+dead11+1)/3*1000+(dead02+dead12+1)/3*200;;
		}
	SPRINTF(temp, "0:%d,1:%d,2:%d,3:%d  ",
			pdata->tmp_count_info[i][j][0],
			pdata->tmp_count_info[i][j][1],
			pdata->tmp_count_info[i][j][2],
			pdata->tmp_count_info[i][j][3]);
	FIVE_ShowStat(pdata, temp);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -