2016-04-05 30 views
0

パターンXOOXのグリッド内に対角線を見つけようとしています。私はこの機能を持っている:2次元配列の対角線を確認する

function chkDiagonal(token, x,y){ 
    if(x >= 0 && x - 2 >=0 && y >= 0){ 
    if(token === "X"){ 
     if(gameBoard[x][y]==="X" && gameBoard[x-1][y+1] === "O" 
      && gameBoard[x-2][y-2] === "O" && gameBoard[x-3][y+3]==="X"){ 
      return true; 
      } 
     } 
    } 
    } 
} 

を私はすでに2 O'sが斜めの行にすでに存在する場合、それが唯一気になるように、私はそれがより一般的なようにする方法を見つけ出すことはできませんboard[x-3][x+3]Xを持っている場合にのみtrueを返します。いずれの順番でもなく、X'sがいずれかの端に配置されています。誰かがこれにアプローチする方法について私にアドバイスできますか?

は、私はこのようにそれをテストしてい:

var gameBoard = [ 
     ["X", "O", "X", "O", "X", "O"], 
     ["X", "O", "X", "X", "X", "O"], 
     ["X", "O", "O", "O", "X", "O"], 
     ["X", "O", "X", "O", "X", "O"], 
     ["X", "O", "X", "O", "X", "O"] 

     ]; 

console.log(chkDiagonal("X",4,0));//undefined 
+1

確認するデータを追加してください。 –

+0

私はいくつかのテストデータを追加しました。 –

+2

ここに間違いがあります: 'gameBoard [x-2] [y-2] ===" O "'は、y + 2でなければなりません –

答えて

1

は、指摘すべき2つのものがあります。

  • まず、あなたの条件であなたは、チェックが失敗したとき、それはfalseを返すように第二に、あなたは、関数の最後にreturn falseを追加する必要がありますgameBoard[x-2][y+2]
  • であるべきgameBoard[x-2][y-2]のためにチェックしています。 return文を追加しないと、何も返されないため、undefinedが返されます。
+1

'undefined'は偽です。 –

+0

@NinaScholz申し訳ありません。私はあなたを取得しませんでした。 – niyasc

+1

'' if(chkDiagonal(...)){/ *何か* /} 'のような単純なチェックの場合は、明示的な' 'false''なしで動作します。 –