2014-01-06 117 views
1

所以我在畫布上製作了一個網格遊戲,如果選擇了一個正方形,那麼它周圍同樣顏色的正方形也會被選中,當正方形被點擊時,新的方格掉下來。在javascript畫布中超出了最大調用堆棧大小

我所做的電網是9行15列 -

tile_array = [[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]]; 

,我與隨機顏色的瓷磚網格填充。 和我的繼承人懸停功能 -

function over_tile(our_tile) {//, pointer 
    our_tile.alpha = 0.5; 
    if (our_tile.tile_row > 0) { // top row availiable 
     top_tile = this.tile_array[our_tile.tile_row-1][our_tile.tile_column]; 
     if (top_tile.tile_color == our_tile.tile_color) { 
      this.over_tile(top_tile); 
     }; 
    }; 
    if (our_tile.tile_column < 14) { // right column availiable 
     right_tile = this.tile_array[our_tile.tile_row][our_tile.tile_column+1]; 
     if (right_tile.tile_color == our_tile.tile_color) { 
      this.over_tile(right_tile); 
     }; 
    }; 
    if (our_tile.tile_column > 0) { // left column availiable 
     left_tile = this.tile_array[our_tile.tile_row][our_tile.tile_column-1]; 
     if (left_tile.tile_color == our_tile.tile_color) { 
      this.over_tile(left_tile); 
     }; 
    }; 
    if (our_tile.tile_row < 8) { // bottom row availiable 
     bottom_tile = this.tile_array[our_tile.tile_row+1][our_tile.tile_column]; 
     if (bottom_tile.tile_color == our_tile.tile_color) { 
      this.over_tile(bottom_tile); 
     }; 
    }; 
} 

現在我面臨的問題是,上面是創建一個調用堆棧大小超出誤差。 但在功能,如果我註釋掉的部分,並嘗試一些變化工作 -

  1. 左邊一列,下排
  2. 左邊一列,頂行
  3. 右側立柱,下排
  4. 右列,頂行

,這些都是產生錯誤 -

  1. 左欄右列
  2. 頂行,底行

和任意三個或所有組合不工作在一起,他們每個人單獨工作。我似乎無法弄清楚這個問題。

回答

2

讓矩陣是這樣的:

1 2 3 
4 5 6 
7 8 9 

當你做底+留在,例如,5,呼叫正在擴大這樣:

5->4->7->fin 

5->8->7->fin 

同樣,在其他工作情況。

在底部+頂的情況下,在5,您將獲得:

5->2->5 (lower than 2)->2 (higher than 5)->5->2->... 

同樣在不工作的其他情況。

嘗試標記已訪問的切片,以免再次訪問它們。

+0

哦,那是如此愚蠢的我......現在我明白了....非常感謝這麼快的答案。 – MaSK

+0

我只是把一個字母檢查,它的工作。再次感謝 – MaSK

+0

沒問題,謝謝 –

相關問題