谁有c#的五子棋算法..不要网络的
private int Check(int m, int n, int[,] arrchessboard){ int qz = 0; //找自己的取胜点(1000) int w1 = 100000; //找对手的取胜点(80) int w2 = 50000; //找自己的三个相连的点(60) int w3 = 10000; //找对手的三个相连的点(40) int w4 = 5000; //找自己的两个相连的点(20) int w5 = 1000; //找对手的两个相连的点(10) int w6 = 500; //找自己的相连的点(5) int w7 = 100; //找对方的相连的点(5) int w8 = 50; //找自己的失败点 int w9 = -1000000; int[] arrf = new int[4]; //如果该位置下我方的子 if (mflag) { //我方黑子 arrchessboard[m, n] = 0; } else { //我方白子 arrchessboard[m, n] = 1; } arrf[0] = Rule.Xnum(m, n, arrchessboard); arrf[1] = Rule.Ynum(m, n, arrchessboard); arrf[2] = Rule.YXnum(m, n, arrchessboard); arrf[3] = Rule.XYnum(m, n, arrchessboard); //中心点权值加1 if (m == 7 && n == 7) { qz += 1; } for (int i = 0; i < 4; i++) { if (Math.Abs(arrf[i]) == 5) { qz += w1; } if (arrf[i] == 4) { qz += w3; } if (arrf[i] == 3) { qz += w5; } if (arrf[i] == 2) { qz += w7; } //如果我方为黑棋,还要检查失败点 if (mflag) { if (Rule.IsFail(arrf, arrchessboard[m, n]) > 0) { qz += w9; } } } //如果该位置下对方的子 if (mflag) { //对方白子 arrchessboard[m, n] = 1; } else { //对方黑子 arrchessboard[m, n] = 0; } arrf[0] = Rule.Xnum(m, n, arrchessboard); arrf[1] = Rule.Ynum(m, n, arrchessboard); arrf[2] = Rule.YXnum(m, n, arrchessboard); arrf[3] = Rule.XYnum(m, n, arrchessboard); for (int i = 0; i < 4; i++) { if (Math.Abs(arrf[i]) == 5) { qz += w2; } if (arrf[i] == 4) { qz += w4; } if (arrf[i] == 3) { qz += w6; } if (arrf[i] == 2) { qz += w8; } } //数组好像是引用传递,探测完后恢复到默认值 arrchessboard[m, n] = 2; return qz;}...
18516