User prompt
Move down grid background by 20px
User prompt
Move down board by 140px
User prompt
Move down board by 200px
User prompt
Assume cells are 210 in size
User prompt
Assume cells are 220 in size rather than 180
User prompt
Assume cells are 200px everywhere you currently use 170
User prompt
Set scale on snowflake when the snowflake is crated rather than rick
User prompt
In snowflake divide scale by 2
User prompt
Attach to snowflake is scale is larger than 3
User prompt
When creating snowflakes if the snowflake scale is larger than .9 attach it to self rather than the container
User prompt
Attach snowflake to self if scale is larger than .97
User prompt
When creating snowflakes if the snowflake scale is larger than .9 attach it to self rather than the container
User prompt
Set total cell types to 8 on startup
User prompt
Set the fixed particle color with offset 1 to 5ecde9
User prompt
Also spawn particles when removing hearts
User prompt
When calling resetBoard at the top add two lives, with a max of 10
User prompt
Decrease particle speed to 10
User prompt
increase initial particle speed by 50%
User prompt
7x the gravity on particels
Code edit (1 edits merged)
Please save this source code
User prompt
Add gravity to particles
User prompt
decrease particle alpha by .02
User prompt
Update particle color offset 1 to 4481fe
User prompt
Update fixed particle color offset 1 to 274ca2
User prompt
Update the first fixed color value to fixedColors
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 particles = []; var Particle = Container.expand(function (color) { var self = Container.call(this); self.graphics = self.createAsset('particle', 'Particle', 0.5, 0.5); self.graphics.tint = color; self.speedX = (Math.random() - 0.5) * 10; self.speedY = (Math.random() - 0.5) * 10; self.scaleX = self.scaleY = Math.random() * 0.5 + 0.5; self.alpha = 1; self.tick = function () { self.x += self.speedX; self.speedY += 0.7; self.y += self.speedY; self.alpha -= 0.02; if (self.alpha <= 0) { var index = particles.indexOf(self); if (index > -1) { particles.splice(index, 1); } self.destroy(); } }; }); var Heart = Container.expand(function () { var self = Container.call(this); var heartBackground = self.createAsset('heartBackground', 'Heart Background', 0.5, 0.5); heartBackground.blendMode = 1; var heartGraphics = self.createAsset('heart', 'Life Heart', 0.5, 0.5); }); var LifeIndicator = Container.expand(function (initialLives) { var self = Container.call(this); self.lives = initialLives; self.hearts = []; var heartWidth = 110; var totalWidth = (self.lives - 1) * (heartWidth + 10); var startX = -totalWidth / 2; for (var i = 0; i < self.lives; i++) { var heart = new Heart(); heart.x = startX + i * (heartWidth + 10); self.hearts.push(heart); self.addChild(heart); } self.updateLives = function (lives) { lives = Math.max(0, lives); while (self.hearts.length > lives) { var heart = self.hearts.pop(); if (heart) { heart.destroy(); } } while (self.hearts.length < lives) { var newHeart = new Heart(); var heartWidth = 200; newHeart.x = startX + self.hearts.length * (heartWidth + 10); self.hearts.push(newHeart); self.addChild(newHeart); } self.lives = lives; }; }); var Snowflake = Container.expand(function () { var self = Container.call(this); self.rotation = Math.random() * Math.PI * 2; self.rotationSpeed = Math.random() * 0.05 - 0.025; var flakeGraphics = self.createAsset('snowflake', 'Snowflake', 0.5, 0.5); self.speed = Math.random() * 1.5 + 1; self.direction = Math.random() * Math.PI * 2; self.xSpeed = Math.cos(self.direction) * Math.abs(Math.random() * 1 + 0.5); self.ySpeed = Math.abs(Math.sin(self.direction)) * self.speed; self.tick = function () { self.x += self.xSpeed; self.y += self.ySpeed; self.scale.x = self.scale.y = 0.5 + self.ySpeed / 6; self.rotation += self.rotationSpeed; if (self.x > 2048 || self.x < 0 || self.y > 2732) { self.x = Math.random() * 2048; self.y = -50; } }; }); var Cell = Container.expand(function (type, totalTypes) { var self = Container.call(this); self.targetX = 0; self.targetY = 0; self.isMoving = false; self.totalTypes = totalTypes; self.type = typeof type === 'undefined' ? Math.floor(Math.random() * self.totalTypes) : type; var assetName = 'cellType' + self.type; var cellBackground = self.createAsset('cellBackground', 'Cell Background', .5, .5); cellBackground.alpha = 0; var cellGraphics = self.createAsset(assetName, 'Grid Cell Type ' + self.type, .5, .5); 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 = 2; 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; } }; }); var Game = Container.expand(function () { var self = Container.call(this); Game.prototype.createParticleEffect = function (x, y, type) { var fixedColors = [0x82d756, 0x5ecde9, 0xffb5b5, 0xd7402f, 0x96eb61, 0xfdc143, 0xf9ffff, 0xc76d49]; var color = fixedColors[type % fixedColors.length]; for (var i = 0; i < 10; i++) { var particle = new Particle(color); particle.x = x + gridContainer.x; particle.y = y + gridContainer.y; particles.push(particle); this.addChild(particle); } }; self.totalCellTypes = 2; var score = 0; Game.prototype.hasPossibleMoves = function () { for (var col = 0; col < gridWidth; col++) { for (var row = 0; row < gridHeight; row++) { var cell = grid[col][row]; if (cell) { var neighbors = [{ x: col - 1, y: row }, { x: col + 1, y: row }, { x: col, y: row - 1 }, { x: col, y: row + 1 }]; for (var i = 0; i < neighbors.length; i++) { var pos = neighbors[i]; if (pos.x >= 0 && pos.x < gridWidth && pos.y >= 0 && pos.y < gridHeight) { var neighborCell = grid[pos.x][pos.y]; if (neighborCell && neighborCell.type === cell.type) { return true; } } } } } } return false; }; self.resetBoard = function () { grid.forEach(function (column, colIndex) { column.forEach(function (cell, rowIndex) { if (cell) { self.deleteCell(cell); } var newCell = new Cell(undefined, self.totalCellTypes); var targetPos = self.calculateTargetPosition(colIndex, rowIndex); newCell.move(targetPos.x, targetPos.y, true); self.attachCellListeners(newCell); newCell.y = -100; grid[colIndex][rowIndex] = newCell; gridContainer.addChild(newCell); }); }); }; var background = self.createAsset('background', 'Game Background', 0.5, 0.5); background.x = 2048 / 2; background.y = 2732 / 2; self.addChild(background); var gridWidth = 8; var gridHeight = 8; var gridSpacing = 8; var cellWidth = 200; var cellHeight = 200; var gridContainer = new Container(); var boardBackground = self.createAsset('boardBackground', 'Board Background', 0.5, 0.5); boardBackground.alpha = 0.7; gridContainer.addChildAt(boardBackground, 0); 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; boardBackground.x = totalGridWidth / 2 - cellWidth / 2; boardBackground.y = 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; self.createParticleEffect(cell.x, cell.y, cell.type); cell.destroy(); } }; self.attachCellListeners = function (cell) { cell.on('down', function (obj) { var connectedNeighbors = self.findConnectedNeighbors(cell); if (connectedNeighbors.length > 0) { score += 10 * connectedNeighbors.length + (connectedNeighbors.length - 2) * 5; scoreText.setText(score.toString()); var cellsToDestroy = [cell].concat(connectedNeighbors); 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 = []; var scoreText = new Text2(score.toString(), { size: 150, fill: "#ffffff", weight: '800', dropShadow: true, dropShadowColor: '#000000', dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6 }); scoreText.anchor.set(.5, 0); LK.gui.topCenter.addChild(scoreText); var lifeIndicator = new LifeIndicator(10); lifeIndicator.y = 250; LK.gui.topCenter.addChild(lifeIndicator); for (var i = 0; i < gridWidth; i++) { grid[i] = []; for (var j = 0; j < gridHeight; j++) { var cell = new Cell(undefined, self.totalCellTypes); 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 (direction, rowMode) { var moved; do { moved = false; var dx = direction === 'left' ? 1 : direction === 'right' ? -1 : 0; var dy = direction === 'up' ? 1 : direction === 'down' ? -1 : 0; for (var col = 0; col < gridWidth; col++) { for (var row = 0; row < gridHeight; row++) { if (!grid[col][row]) { var isRowOrColumnEmpty = true; if (rowMode) { for (var checkIndex = 0; checkIndex < (direction === 'left' || direction === 'right' ? gridHeight : gridWidth); checkIndex++) { isRowOrColumnEmpty = isRowOrColumnEmpty && !grid[direction === 'left' || direction === 'right' ? col : checkIndex][direction === 'up' || direction === 'down' ? row : checkIndex]; } } if (isRowOrColumnEmpty) { if (rowMode) { for (var checkIndex = 0; checkIndex < (direction === 'left' || direction === 'right' ? gridHeight : gridWidth); checkIndex++) { var targetCol = direction === 'left' || direction === 'right' ? col : checkIndex; var targetRow = direction === 'up' || direction === 'down' ? row : checkIndex; if (targetCol + dx >= 0 && targetCol + dx < gridWidth && targetRow + dy >= 0 && targetRow + dy < gridHeight && grid[targetCol + dx][targetRow + dy]) { var targetCell = grid[targetCol + dx][targetRow + dy]; var targetPos = self.calculateTargetPosition(targetCol, targetRow); targetCell.move(targetPos.x, targetPos.y); grid[targetCol][targetRow] = targetCell; grid[targetCol + dx][targetRow + dy] = null; moved = true; } } } else { var targetCol = col + dx; var targetRow = row + dy; if (targetCol >= 0 && targetCol < gridWidth && targetRow >= 0 && targetRow < gridHeight && grid[targetCol][targetRow]) { var targetCell = grid[targetCol][targetRow]; var targetPos = self.calculateTargetPosition(col, row); targetCell.move(targetPos.x, targetPos.y); grid[col][row] = targetCell; grid[targetCol][targetRow] = null; moved = true; } } } } } } } while (moved); }; var maxSnowflakes = 100; var snowflakeContainer = new Container(); self.addChildAt(snowflakeContainer, 1); var snowflakes = []; for (var i = 0; i < maxSnowflakes; i++) { var flake = new Snowflake(); flake.x = Math.random() * 2048; flake.y = Math.random() * 2732; snowflakeContainer.addChild(flake); snowflakes.push(flake); } 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(); } } for (var i = 0; i < particles.length; i++) { particles[i].tick(); } for (var i = 0; i < snowflakes.length; i++) { snowflakes[i].tick(); } var cellsAreMoving = grid.some(function (column) { return column.some(function (cell) { return cell && cell.isMoving; }); }); if (!cellsAreMoving && !self.hasPossibleMoves()) { self.totalCellTypes = Math.min(8, 3 + Math.floor(score / 2000)); var tilesLeft = grid.reduce(function (acc, column) { return acc + column.filter(function (cell) { return cell !== null; }).length; }, 0); lifeIndicator.updateLives(lifeIndicator.lives - tilesLeft); if (lifeIndicator.lives <= 0) { LK.showGameOver(); } else { self.resetBoard(); } } }); });
===================================================================
--- original.js
+++ change.js
@@ -53,9 +53,9 @@
}
}
while (self.hearts.length < lives) {
var newHeart = new Heart();
- var heartWidth = 100;
+ var heartWidth = 200;
newHeart.x = startX + self.hearts.length * (heartWidth + 10);
self.hearts.push(newHeart);
self.addChild(newHeart);
}
@@ -64,9 +64,8 @@
});
var Snowflake = Container.expand(function () {
var self = Container.call(this);
self.rotation = Math.random() * Math.PI * 2;
- self.scale.x = self.scale.y = 0.5 + Math.random() * 0.5;
self.rotationSpeed = Math.random() * 0.05 - 0.025;
var flakeGraphics = self.createAsset('snowflake', 'Snowflake', 0.5, 0.5);
self.speed = Math.random() * 1.5 + 1;
self.direction = Math.random() * Math.PI * 2;
@@ -74,8 +73,9 @@
self.ySpeed = Math.abs(Math.sin(self.direction)) * self.speed;
self.tick = function () {
self.x += self.xSpeed;
self.y += self.ySpeed;
+ self.scale.x = self.scale.y = 0.5 + self.ySpeed / 6;
self.rotation += self.rotationSpeed;
if (self.x > 2048 || self.x < 0 || self.y > 2732) {
self.x = Math.random() * 2048;
self.y = -50;
@@ -206,10 +206,10 @@
self.addChild(background);
var gridWidth = 8;
var gridHeight = 8;
var gridSpacing = 8;
- var cellWidth = 180;
- var cellHeight = 180;
+ var cellWidth = 200;
+ var cellHeight = 200;
var gridContainer = new Container();
var boardBackground = self.createAsset('boardBackground', 'Board Background', 0.5, 0.5);
boardBackground.alpha = 0.7;
gridContainer.addChildAt(boardBackground, 0);
@@ -366,13 +366,9 @@
for (var i = 0; i < maxSnowflakes; i++) {
var flake = new Snowflake();
flake.x = Math.random() * 2048;
flake.y = Math.random() * 2732;
- if (flake.scale.x > 0.9) {
- self.addChild(flake);
- } else {
- snowflakeContainer.addChild(flake);
- }
+ snowflakeContainer.addChild(flake);
snowflakes.push(flake);
}
LK.on('tick', function () {
for (var i = 0; i < gridWidth; i++) {
Cartoon Christmas decoration Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas candy cane Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas stocking Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas yellow starr Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas ornament Blue Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas snow flake. Blue Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas outdoor scene. Forest, northern lights. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
White square. Narrow round corners. Background element. Flat. Vector. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas heart Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Simple Cartoon Christmas particle. White. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas ornament yellow and purple Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon Christmas snow man head. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Simple Cartoon Christmas wreath. Purple Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.