2016-12-11 35 views
0

我被要求做一個tictactoe算法但是我不太明白我怎麼檢查每行或列是否可以成爲結束狀態。井字算法5x5表4連續

我用5x5試過,但是我只能用5行來做,所以我希望如果結束狀態需要連續4行,我還是有辦法做到這一點。我還沒有考慮對角線,所以我可以專注於列和行檢查。

我檢查看起來像這樣

var B = this.board; 

    //check rows 
    for(var i = 0; i <= 20; i = i + 5) { 
     if(B[i] !== "E" && B[i] === B[i + 1] && B[i + 1] == B[i + 2] && B[i + 2] == B[i + 3] && B[i + 3] == B[i + 4]) { 
      this.result = B[i] + "-won"; //update the state result 
      return true; 
     } 
    } 

    //check columns 
    for(var i = 0; i <= 4 ; i++) { 
     if(B[i] !== "E" && B[i] === B[i + 5] && B[i + 5] === B[i + 10] && B[i + 10] === B[i + 15]) && B[i +15] === B[i + 20]{ 
      this.result = B[i] + "-won"; //update the state result 
      return true; 
     } 
    } 

    var available = this.emptyCells(); 
    if(available.length == 0) { 
     //the game is draw 
     this.result = "draw"; //update the state result 
     return true; 
    } 
    else { 
     return false; 
    } 

回答

0

你可以只遍歷頂行(從0到1(含))和所有列和檢查4個細胞在此列的順序從給定行並且向下包含相同的元素。

通過迭代最左邊的列(再次從0到1)和所有行並檢查是否正確的序列,您可以對行進行相同的操作。