0

私はグリッドベースのゲームを持っています。8つの正方形×8つの正方形で、合計64個のピース​​があり、これらのピースは配列に格納されています。特定のグリッドの正方形が2回入力されているという問題が発生しているため、座標が重複していないか配列を確認する必要があります。

以下のコードは、各ピースのx、yグリッド座標(testXとtestY)を示しています。この配列を実行して、重複を削除する方法がわかりません。重複する部分がある場合は、最初に遭遇したものを保持し、後続の重複を削除する必要があります。それが助けになるなら、私はjQueryを使用しています。

function checkGrid() {

    var x;

    for (x = 0; x < grid.length; x++) {

    var testY= grid[x].getY();
    var testX = grid[x].getX();

    }
}
4

1 に答える 1

1

配列の代わりにオブジェクトを使用することを検討できます。

var grid = {};

function setGridValue(x,y, value){
    var key = x + '-' + y;
    grid[key] = value;
}

function getGridValue(x,y){
    var key = x + '-' + y;
    return grid[key];
}

このようなもの。次に、グリッド位置の値を変更する場合、重複をチェックする必要はありません。

編集。

オブジェクトに変更することはできないので、それらを挿入するときに既存のアイテムを見つける必要があります。グリッドにアイテムを追加するコードを投稿していませんが、次のようなことができますか?

function setItem(x, y, value){
   var item;
   // check for existing item in array
   for(var i = 0; i < grid.length; i++){
       if(grid[i].getX() === x && grid[i].getY() === y){
           item = grid[i];
           break;
       }
   }
   // if no existing item, create new one
   if(!item){
      item = new GridItem(x,y,value);  // dont know what is in the grid...
      grid.push(item);
   } else {
      // update existing item here...
   }
}
于 2013-02-14T04:08:57.807 に答える