2016-04-24 19 views
0

編集: 2d配列を単純な配列に変更し、算術と論理を使用して座標を取得することで問題を解決しました。ロジックがjavascriptで正しく起動しない

私は、座標に奇数 - 奇数のペアリングがあるときに2次元配列に50を加えるアルゴリズムを持っています([1] [1]、[3] [5]など)。唯一の問題は、機能していないことです。ブラウザのコンソールによれば、決して起動しません。これは、それが何であるかです:

if(((col & 1) & row) == 1) { y+= 50; } 

私のコードのより完全な例ここにある:配列は、次のコードで設定された

//goes through the board's array and calls 
//drawChecker to print each found piece 
function drawPieces() { 

    var row = 0; 
    var col= 0; 

    for(row = 0; row < 1; row++) { 

     var y = row * 100; 

     console.log("row " + row + " set x to " + x); 
     var flag = (row & 1); 

     for(col = 0; col < 8; col++) { 

      var x = col*50; 

      console.log("column " + col + " set y to " + y); 

      console.log("y was " + y); 
      if(((col & 1) & row) == 1) { y+= 50; } 
      console.log("Now y is " + y); 

      console.log("Done setting " + row + "," + col); 

      console.log("Final coordinates are " + x + "," + y); 
      drawChecker(x,y,square[row][col]); 
     } 
    } 
} 

var square = new Array(4); 
for(i = 0; i < 4; i++) { square[i] = new Array(8); } 
+0

計算の結果は行く?正方形にする? –

+3

'for(row = 0; row <1; row ++)の単一行しかありません。 –

+0

' for'ループでは 'square.length'を限界値として使い、' for 'ループでは 'square [row] .length '内部の値ではなく、固定値である。 – hindmost

答えて

1

あなたがテストすることはできません行0のアルゴリズムだけです。

function drawPieces() { 
 
    square.forEach(function (a, i) { 
 
     a.forEach(function (b, j) { 
 
      if (i & j & 1) { 
 
       square[i][j] = '#'; 
 
      } 
 
     }); 
 
    }); 
 
} 
 

 
var square = Array.apply(null, { length: 4 }).map(function() { return Array.apply(null, { length: 8 }).map(function() { return '.'; }); }); 
 
drawPieces(); 
 
document.write('<pre>'+square.map(function (a) { return a.join(''); }).join('\n')+'</pre>');

0

だから、私は32個の要素の1次元配列に4×8の私の2D配列を切り替えてしまった、と私はちょうどこの機能を変更:どこはず

function drawPieces() { 

    for(i = 0; i < 32; i++) { 

     var value = square[i]; 
     var x = (i % 4) * 100; //i%4 gets its column, 0-3 
     var y = Math.floor(i/4) * 50; //i/4 gets the row 0-3 

     if((i & 4) != 4) { x += 50; } //offset on even-numbered rows 

     drawChecker(x,y,value); 

     console.log(i + " has coordinates " + x + "," + y); 
    } 
} 
関連する問題