User prompt
newcell should happen half a second after destroy event
User prompt
after newcell have been created check move to empty space again
User prompt
Fix Bug: 'Timeout.tick error: Cannot set properties of undefined (setting '0')' in this line: 'grid[col][0] = newCell;' Line Number: 173
User prompt
Fix Bug: 'Timeout.tick error: Cannot set properties of undefined (setting '0')' in this line: 'grid[col][0] = newCell;' Line Number: 172
User prompt
Fix Bug: 'Timeout.tick error: Cannot set properties of undefined (setting '0')' in this line: 'grid[col][0] = newCell;' Line Number: 172
User prompt
new cell should spawn half a second later
User prompt
Fix Bug: 'Timeout.tick error: Cannot set properties of undefined (setting '0')' in this line: 'grid[col][0] = newCell;' Line Number: 172
User prompt
Fix Bug: 'Timeout.tick error: Cannot set properties of undefined (setting '0')' in this line: 'grid[col][0] = newCell;' Line Number: 172
User prompt
delay newCell appearance for half a second
User prompt
newCell should appear 200 pixel above from current definition.
User prompt
new cell should appear from the top of the position its goint to cover
Code edit (1 edits merged)
Please save this source code
User prompt
new created cells after move to empty space should spawn from the top of the screen
User prompt
grid should always have cell in every space. after move to empty space happens, then create random cells and have them drop from the top.
User prompt
make move to empty space only move downwards
User prompt
make grid 4 by 4
User prompt
change effect that creates the grid from t he upper lefft corner to appear all from the top
User prompt
when there are empty space, inmediatelly add new cells coming from the top
User prompt
add touch and drag feature
User prompt
after destroy event, only move cells downwards in grid
User prompt
do not move cells when other are destoryed
User prompt
make new cells drop frob above when there are empty spaces
User prompt
Fix Bug: 'TypeError: Cannot set properties of undefined (setting 'alpha')' in this line: 'cell.graphics.alpha = 0.5;' Line Number: 262
User prompt
Fix Bug: 'TypeError: Cannot set properties of undefined (setting 'alpha')' in this line: 'cell.graphics.alpha = 0.5;' Line Number: 280
User prompt
Fix Bug: 'TypeError: Cannot set properties of undefined (setting 'alpha')' in this line: 'cell.graphics.alpha = 0.5;' Line Number: 280
var Cell = Container.expand(function (type) { var self = Container.call(this); var cellGraphics = self.createAsset('cell', 'Grid Cell', .5, .5); self.targetX = 0; self.targetY = 0; self.isMoving = false; self.totalTypes = 5; self.type = type || Math.floor(Math.random() * self.totalTypes); var hue = self.type / self.totalTypes; var color = hsvToRgb(hue, 1, 1); cellGraphics.tint = color; self.move = function (x, y, instant) { self.targetX = x; self.targetY = y; if (instant) { self.x = x; self.y = y; } }; self.tick = function () { var acceleration = 1; self.speedX = self.speedX || 0; self.speedY = self.speedY || 0; var threshold = 1; var dx = self.targetX - self.x; var dy = self.targetY - self.y; if (Math.abs(dx) < threshold && Math.abs(dy) < threshold) { self.x = self.targetX; self.y = self.targetY; self.isMoving = false; self.speedX = 0; self.speedY = 0; } else { if (dx !== 0) { self.speedX += dx > 0 ? acceleration : -acceleration; } if (dy !== 0) { self.speedY += dy > 0 ? acceleration : -acceleration; } var nextX = self.x + self.speedX; var nextY = self.y + self.speedY; if (self.speedX > 0 && nextX > self.targetX || self.speedX < 0 && nextX < self.targetX) { nextX = self.targetX; self.speedX = 0; } if (self.speedY > 0 && nextY > self.targetY || self.speedY < 0 && nextY < self.targetY) { nextY = self.targetY; self.speedY = 0; } self.x = nextX; self.y = nextY; self.isMoving = self.x !== self.targetX || self.y !== self.targetY; } }; }); function hsvToRgb(h, s, v) { var i = Math.floor(h * 6), f = h * 6 - i, p = v * (1 - s), q = v * (1 - f * s), t = v * (1 - (1 - f) * s), mod = i % 6, r = [v, q, p, p, t, v][mod], g = [t, v, v, q, p, p][mod], b = [p, p, t, v, v, q][mod]; return (r * 255 << 16) + (g * 255 << 8) + b * 255; } var Game = Container.expand(function () { var self = Container.call(this); var gridWidth = 4; var gridHeight = 4; var gridSpacing = 8; var tempCell = new Cell(); var cellWidth = tempCell.width; var cellHeight = tempCell.height; tempCell.destroy(); var gridContainer = new Container(); self.addChild(gridContainer); var totalGridWidth = gridWidth * (cellWidth + gridSpacing) - gridSpacing; var totalGridHeight = gridHeight * (cellHeight + gridSpacing) - gridSpacing; gridContainer.x = (2048 - totalGridWidth) / 2 + cellWidth / 2; gridContainer.y = (2732 - totalGridHeight) / 2 + cellHeight / 2; self.calculateTargetPosition = function (col, row) { return { x: col * (cellWidth + gridSpacing), y: row * (cellHeight + gridSpacing) }; }; self.findConnectedNeighbors = function (cell, connectedNeighbors) { connectedNeighbors = connectedNeighbors || []; if (!cell) return []; var cellType = cell.type; var cellColRow = self.findCellColRow(cell); if (cellColRow) { var directions = [[-1, 0], [1, 0], [0, -1], [0, 1]]; directions.forEach(function (dir) { var newRow = cellColRow.row + dir[0]; var newCol = cellColRow.col + dir[1]; if (newRow >= 0 && newRow < gridHeight && newCol >= 0 && newCol < gridWidth) { var neighborCell = grid[newCol][newRow]; if (neighborCell && neighborCell.type === cellType && connectedNeighbors.indexOf(neighborCell) === -1) { connectedNeighbors.push(neighborCell); self.findConnectedNeighbors(neighborCell, connectedNeighbors); } } }); } return connectedNeighbors; }; self.findCellColRow = function (cell) { for (var col = 0; col < gridWidth; col++) { for (var row = 0; row < gridHeight; row++) { if (grid[col][row] === cell) { return { col: col, row: row }; } } } return null; }; self.deleteCell = function (cell) { var colRow = self.findCellColRow(cell); if (colRow) { grid[colRow.col][colRow.row] = null; cell.destroy(); } }; self.attachCellListeners = function (cell) { cell.on('down', function (obj) { var cellsToDestroy = [cell].concat(self.findConnectedNeighbors(cell)); cellsToDestroy.forEach(function (cell) { self.deleteCell(cell); }); self.moveToEmptySpace('down', false); self.moveToEmptySpace('left', true); }); cell.on('up', function (obj) {}); cell.on('move', function (obj) {}); }; var grid = []; for (var i = 0; i < gridWidth; i++) { grid[i] = []; for (var j = 0; j < gridHeight; j++) { var cell = new Cell(); var targetPos = self.calculateTargetPosition(i, j); cell.move(targetPos.x, targetPos.y, true); self.attachCellListeners(cell); grid[i][j] = cell; gridContainer.addChild(cell); } } self.moveToEmptySpace = function () { var moved; do { moved = false; for (var col = 0; col < gridWidth; col++) { for (var row = gridHeight - 2; row >= 0; row--) { if (grid[col][row] && !grid[col][row + 1]) { var targetCell = grid[col][row]; var targetPos = self.calculateTargetPosition(col, row + 1); targetCell.move(targetPos.x, targetPos.y); grid[col][row + 1] = targetCell; grid[col][row] = null; moved = true; } } } } while (moved); for (var col = 0; col < gridWidth; col++) { if (grid[col] && !grid[col][0]) { var newCell = new Cell(); var targetPos = self.calculateTargetPosition(col, 0); newCell.x = targetPos.x; newCell.y = targetPos.y - cellHeight - 200; LK.setTimeout(function () { newCell.move(targetPos.x, targetPos.y); self.attachCellListeners(newCell); grid[col][0] = newCell; gridContainer.addChild(newCell); }, 500); } } }; LK.on('tick', function () { for (var i = 0; i < gridWidth; i++) { for (var j = 0; j < gridHeight; j++) { if (grid[i][j]) grid[i][j].tick(); } } }); });
===================================================================
--- original.js
+++ change.js
@@ -160,9 +160,9 @@
}
}
} while (moved);
for (var col = 0; col < gridWidth; col++) {
- if (!grid[col][0]) {
+ if (grid[col] && !grid[col][0]) {
var newCell = new Cell();
var targetPos = self.calculateTargetPosition(col, 0);
newCell.x = targetPos.x;
newCell.y = targetPos.y - cellHeight - 200;