1
我目前正在嘗試獲取二維數組的對角線行。Javascript:獲取對角線陣列
這是數組的樣子:
/* Array containing the playing field 8 x 8
C0 C1 C2 C3 C4 C5 C6 C7
R0[0][0][0][0][0][0][0][X]
R1[0][0][0][0][0][0][X][0]
R2[0][0][0][0][0][X][0][0]
R3[0][0][0][0][X][0][0][0]
R4[0][0][0][X][0][0][0][0]
R5[0][0][X][0][0][0][0][0]
R6[0][X][0][0][0][0][0][0]
R7[X][0][0][0][0][0][0][0]
*/
row0 = [0, 0, 0, 0, 0, 0, 0, 0],
row1 = [0, 0, 0, 0, 0, 0, 0, 0],
row2 = [0, 0, 0, 0, 0, 0, 0, 0],
row3 = [0, 0, 0, 0, 0, 0, 0, 0],
row4 = [0, 0, 0, 0, 0, 0, 0, 0],
row5 = [0, 0, 0, 0, 0, 0, 0, 0],
row6 = [0, 0, 0, 0, 0, 0, 0, 0],
row7 = [0, 0, 0, 0, 0, 0, 0, 0];
field = [row0, row1, row2, row3, row4, row5, row6, row7];
我想檢查遊戲的玩家在四連勝。目前正在處理的水平和垂直校驗功能得到了如下信息:
列ID和行ID的用戶點擊(X在功能上代表了玩家人數)
這是我使用檢查功能:
function checkVieropeenrij(id, rij, x) {
function contains(hooibaal, naalden) {
return hooibaal.join(",").indexOf(naalden.join(",")) != -1;
}
var horizontaal = field[0, rij];
var verticaal = [];
for (g=7; g>=0; g--) {
verticaal[g] = field[g][id-1]
}
var diagonaal = []
var needles = [x, x, x, x];
if (contains(horizontaal, needles) || contains(verticaal, needles)) {
spelActief = false;
return true
}
else if (!contains(horizontaal, needles) || !contains(verticaal, needles)) {
return false
}
}
所以我想要做的就是保存[X,X,X,X,X,X,X,X]在一個新的數組(可變diagonaal_1)和我在尋找最有效的方法來做到這一點。
對角線的位置取決於玩家點擊的位置,所以如果他們點擊C6,R6應該從R7,C5到R0,C7和對角線R7,C7到R0,C0獲得對角線(兩個對角線都跨越運動場存儲在單獨的變量中)