如何在四连棋中检查四个相连的棋子?
我不会复制数组的代码,但它基本上是一个长度为42的数组。每个数组元素都保存着绘图的X、Y位置和颜色。
var board_array = [{x:60, y:55, c:"Red"}, // ... and so on
并且看起来像这样:
最初我采用了这种方法。以下是所有可能赢得游戏的不同方式。这不是所有可能的四个连续位置,但所有垂直、水平和对角线获胜的不同方式 - 您仍然需要使用某种嵌套for循环进行检查。
// Winning vertically
wins[0] = new Array(0, 7, 14, 21, 28, 35);
wins[1] = new Array(1, 8, 15, 22, 29, 36);
wins[2] = new Array(2, 9, 16, 23, 30, 37);
wins[3] = new Array(3, 10, 17, 24, 31, 38);
wins[4] = new Array(4, 11, 18, 25, 32, 39);
wins[5] = new Array(5, 12, 19, 26, 33, 40);
wins[6] = new Array(6, 13, 20, 27, 34, 41);
// Winning horizontally
wins[7] = new Array(0, 1, 2, 3, 4, 5, 6);
wins[8] = new Array(7, 8, 9, 10, 11, 12, 13);
wins[9] = new Array(14, 15, 16, 17, 18, 19, 20);
wins[10] = new Array(21, 22, 23, 24, 25, 26, 27);
wins[11] = new Array(28, 29, 30, 31, 32, 33, 34);
wins[12] = new Array(35, 36, 37, 38, 39, 40, 41);
// Winning diagonally, left to right
wins[13] = new Array(14, 22, 30, 38);
wins[14] = new Array(7, 15, 23, 31, 39);
wins[15] = new Array(0, 8, 16, 24, 32, 40);
wins[16] = new Array(1, 9, 17, 25, 33, 41);
wins[17] = new Array(2, 10, 18, 26, 34);
wins[18] = new Array(3, 11, 19, 27);
//Winning diagonally, right to left
wins[19] = new Array(20, 26, 32, 38);
wins[20] = new Array(13, 19, 25, 31, 37);
wins[21] = new Array(6, 12, 18, 24, 30, 36);
wins[22] = new Array(5, 11, 17, 23, 29, 35);
wins[23] = new Array(4, 10, 16, 22, 28);
wins[24] = new Array(3, 9, 15, 21);
如果你将board_array看作是这样的:
//0 1 2 3 4 5 6
//7 8 9 10 11 12 13
//14 15 16 17 18 19 20
//21 22 23 24 25 26 27
//28 29 30 31 32 33 34
//35 36 37 38 39 40 41
我尝试使用一个三层循环和一个计数器来检查胜利数组与棋盘数组是否匹配,但是没有成功。我想知道是否有更简单的方法。
index = y*7+ y
。然后只需检查新芯片坐标周围四个可能的方向。 - Bergi