📄 rule.cs
字号:
//连子个数
int num = 1;
//正南方向检查(y+)
int i = n + 1;
while (i < 15)
{
//前方的棋子与m,n点不同时跳出循环
if (arrchessboard[m, i] == arrchessboard[m, n])
{
num++;
i++;
}
else
{
break;
}
}
//正南方向超出棋格
if (i == 15)
{
flag++;
}
else
{
//正南方向有别的子不可在下
if (arrchessboard[m, i] != 2)
{
flag++;
}
}
//正北方向检查(y-)
i = n - 1;
while (i >= 0)
{
//前方的棋子与m,n点不同时跳出循环
if (arrchessboard[m, i] == arrchessboard[m, n])
{
num++;
i--;
}
else
{
break;
}
}
//正北方向超出棋格
if (i == -1)
{
flag++;
}
else
{
//正北方向有别的子不可在下
if (arrchessboard[m, i] != 2)
{
flag++;
}
}
if (flag == 2)
{
return -num;
}
else
{
if (flag == 1 && num == 3)
{
//连子数为3时有一边不能下就不是活三
return -num;
}
else
{
return num;
}
}
}
/// <summary>
/// 西北东南方向检查
/// </summary>
/// <param name="m"></param>
/// <param name="n"></param>
/// <param name="arrchessboard"></param>
/// <returns>如果返回负值则表示改方向在无子可下</returns>
public static int YXnum(int m, int n, int[,] arrchessboard)
{
//检查是否无子可下(当flag=2时表示无子可下)
int flag = 0;
//连子个数
int num = 1;
//东南方向(x+,y+)
int i = m + 1;
int j = n + 1;
//不超出棋格
while (i < 15 && j < 15)
{
//前方的棋子与m,n点不同时跳出循环
if (arrchessboard[i, j] == arrchessboard[m, n])
{
num++;
i++;
j++;
}
else
{
break;
}
}
//东南方向超出棋格
if (i == 15 || j == 15)
{
flag++;
}
else
{
//东南方向有别的子不可在下
if (arrchessboard[i, j] != 2)
{
flag++;
}
}
//西北方向(x-,y-)
i = m - 1;
j = n - 1;
//不超出棋格
while (i >= 0 && j >= 0)
{
//前方的棋子与m,n点不同时跳出循环
if (arrchessboard[i, j] == arrchessboard[m, n])
{
num++;
i--;
j--;
}
else
{
break;
}
}
//西北方向超出棋格
if (i == -1 || j == -1)
{
flag++;
}
else
{
//西北方向有别的子不可在下
if (arrchessboard[i, j] != 2)
{
flag++;
}
}
if (flag == 2)
{
return -num;
}
else
{
if (flag == 1 && num == 3)
{
//连子数为3时有一边不能下就不是活三
return -num;
}
else
{
return num;
}
}
}
/// <summary>
/// 西南东北方向检查
/// </summary>
/// <param name="m"></param>
/// <param name="n"></param>
/// <param name="arrchessboard"></param>
/// <returns>如果返回负值则表示改方向在无子可下</returns>
public static int XYnum(int m, int n, int[,] arrchessboard)
{
//检查是否无子可下(当flag=2时表示无子可下)
int flag = 0;
//连子个数
int num = 1;
//西南方向(x-,y+)
int i = m - 1;
int j = n + 1;
//不超出棋格
while (i >= 0 && j < 15)
{
//前方的棋子与m,n点不同时跳出循环
if (arrchessboard[i, j] == arrchessboard[m, n])
{
num++;
i--;
j++;
}
else
{
break;
}
}
//西南方向超出棋格
if (i == -1 || j == 15)
{
flag++;
}
else
{
//西南方向有别的子不可在下
if (arrchessboard[i, j] != 2)
{
flag++;
}
}
//东北方向(x+,y-)
i = m + 1;
j = n - 1;
//不超出棋格
while (i < 15 && j >= 0)
{
//前方的棋子与m,n点不同时跳出循环
if (arrchessboard[i, j] == arrchessboard[m, n])
{
num++;
i++;
j--;
}
else
{
break;
}
}
//东北方向超出棋格
if (i == 15 || j == -1)
{
flag++;
}
else
{
//东北方向有别的子不可在下
if (arrchessboard[i, j] != 2)
{
flag++;
}
}
if (flag == 2)
{
return -num;
}
else
{
if (flag == 1 && num == 3)
{
//连子数为3时有一边不能下就不是活三
return -num;
}
else
{
return num;
}
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -