Вход Регистрация
Файл: Arhmobi_esdcms/games/2048/js/grid.js
Строк: 75
<?php
function Grid(sizepreviousState) {
  
this.size size;
  
this.cells previousState this.fromState(previousState) : this.empty();
}

// Build a grid of the specified size
Grid.prototype.empty = function () {
  var 
cells = [];

  for (var 
0this.sizex++) {
    var 
row cells[x] = [];

    for (var 
0this.sizey++) {
      
row.push(null);
    }
  }

  return 
cells;
};

Grid.prototype.fromState = function (state) {
  var 
cells = [];

  for (var 
0this.sizex++) {
    var 
row cells[x] = [];

    for (var 
0this.sizey++) {
      var 
tile state[x][y];
      
row.push(tile ? new Tile(tile.positiontile.value) : null);
    }
  }

  return 
cells;
};

// Find the first available random position
Grid.prototype.randomAvailableCell = function () {
  var 
cells this.availableCells();

  if (
cells.length) {
    return 
cells[Math.floor(Math.random() * cells.length)];
  }
};

Grid.prototype.availableCells = function () {
  var 
cells = [];

  
this.eachCell(function (xytile) {
    if (!
tile) {
      
cells.push({ xxy});
    }
  });

  return 
cells;
};

// Call callback for every cell
Grid.prototype.eachCell = function (callback) {
  for (var 
0this.sizex++) {
    for (var 
0this.sizey++) {
      
callback(xythis.cells[x][y]);
    }
  }
};

// Check if there are any cells available
Grid.prototype.cellsAvailable = function () {
  return !!
this.availableCells().length;
};

// Check if the specified cell is taken
Grid.prototype.cellAvailable = function (cell) {
  return !
this.cellOccupied(cell);
};

Grid.prototype.cellOccupied = function (cell) {
  return !!
this.cellContent(cell);
};

Grid.prototype.cellContent = function (cell) {
  if (
this.withinBounds(cell)) {
    return 
this.cells[cell.x][cell.y];
  } else {
    return 
null;
  }
};

// Inserts a tile at its position
Grid.prototype.insertTile = function (tile) {
  
this.cells[tile.x][tile.y] = tile;
};

Grid.prototype.removeTile = function (tile) {
  
this.cells[tile.x][tile.y] = null;
};

Grid.prototype.withinBounds = function (position) {
  return 
position.>= && position.this.size &&
         
position.>= && position.this.size;
};

Grid.prototype.serialize = function () {
  var 
cellState = [];

  for (var 
0this.sizex++) {
    var 
row cellState[x] = [];

    for (var 
0this.sizey++) {
      
row.push(this.cells[x][y] ? this.cells[x][y].serialize() : null);
    }
  }

  return {
    
sizethis.size,
    
cellscellState
  
};
};
?>
Онлайн: 0
Реклама