2014-04-19 72 views
0

我正在嘗試使用6行和7列進行Connect Four遊戲。該板是一個String 2D陣列,板上的每個空槽都是「。」字符串。如果我再調整循環,程序會給我一個indexArrayOutOfBoundsException,所以我無法弄清楚需要對算法進行哪些修改來檢查對角線的勝利。Java Connect Four遊戲無法識別對角線勝利

//tests for an upper-left-to-lower-right diagonal line made by four of the same color checker 
    for(int row = 0; row <= LOWEST_ROW_INDEX - 3; row++) 
    { 
     for(int col = 0; col <= RIGHTMOST_COLUMN_INDEX - 3; col++) 
     { 
      if((gb[row][col] != ". ") 
      && (gb[row + 1][col + 1] != ". ") 
      && (gb[row + 2][col + 2] != ". ") 
      && (gb[row + 3][col + 3] != ". ") 
      && (gb[row][col] == gb[row + 1][col + 1]) 
      && (gb[row + 1][col + 1] == gb[row + 2][col + 2]) 
      && (gb[row + 2][col + 2] == gb[row + 3][col + 3])) 
      { 
       return gb[row][col]; 
      } 
     } 
    } 

    //tests for a lower-left-to-upper-right diagonal line made by four of the same color checker 
    for(int row = 0; row <= LOWEST_ROW_INDEX - 3; row++) 
    { 
     for(int col = RIGHTMOST_COLUMN_INDEX - 3; col >= 0; col--) 
     { 
      if((gb[row][col] != ". ") 
      && (gb[row + 1][col + 1] != ". ") 
      && (gb[row + 2][col + 2] != ". ") 
      && (gb[row + 3][col + 3] != ". ") 
      && (gb[row][col] == gb[row + 1][col + 1]) 
      && (gb[row + 1][col + 1] == gb[row + 2][col + 2]) 
      && (gb[row + 2][col + 2] == gb[row + 3][col + 3])) 
      { 
       return gb[row][col]; 
      } 
     } 
    } 

回答

0

這個邏輯對我來說看起來很合理,但是一個問題是你無法將Java中的字符串與==相比較;你需要使用.equals()。 ==檢查兩個字符串是否存儲在內存中的相同位置,而不是它們是否包含相同的字符。