User prompt
fix the spelling error here empty.alpa = .8;
Code edit (8 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'filled.alpha = .8;' Line Number: 268
User prompt
In Cell set alpha on the filled asset to .8
User prompt
In Cell set alpha on the filled asset to .8
User prompt
Migrate to the latest version of LK
User prompt
Make particleGraphics haver random rotation
User prompt
make Particle vx, vy a random variable between -2 and 2.
User prompt
make Particle vx, vy a variable between -2 and 2
User prompt
make sure tint is also passed on colFilled
User prompt
when spawning a particle, pass along the color of the tint removed
User prompt
expose the current tint on cell
User prompt
call board tick in LK tick handler
User prompt
make sure new particles are attached to the particles array. Also add a tick method on board that ticks particels
User prompt
In Board class create a new array to keep track of particles
User prompt
Add particles to the game that spawns from each cell that fill is set to false on in checkLines
Code edit (1 edits merged)
Please save this source code
===================================================================
--- original.js
+++ change.js
@@ -1,68 +1,34 @@
-var Particle = Container.expand(function (tint) {
- var self = Container.call(this);
- self.tint = tint;
- var particleGraphics = self.createAsset('particle', 'Particle Graphics', 0.5, 0.5);
- particleGraphics.rotation = Math.random() * Math.PI * 2;
- particleGraphics.tint = self.tint;
- self.vx = Math.random() * 4 - 2;
- self.vy = Math.random() * 4 - 2;
- self.alpha = 1;
- self.lifetime = 60;
- self.tick = function () {
- self.x += self.vx;
- self.y += self.vy;
- self.alpha -= 1 / self.lifetime;
- if (self.alpha <= 0) self.destroy();
- };
-});
-var Cell = Container.expand(function () {
- var self = Container.call(this);
- self.filled = false;
- var empty = self.createAsset('cell', 'Filled with a cell (empty)', .5, .5);
- empty.alpa = .8;
- var filled = self.createAsset('block', 'Filled with a block', .5, .5);
- empty.y = 2;
- self.setFill = function (isFilled) {
- self.filled = isFilled;
- empty.visible = !self.filled;
- filled.visible = self.filled;
- };
- self.getTint = function () {
- return filled.tint;
- };
- self.setTint = function (tint) {
- empty.tint = filled.tint = tint;
- };
- self.setFill(false);
-});
+/****
+* Classes
+****/
var Block = Container.expand(function (board) {
var self = Container.call(this);
- var hsvToRgb = function (h, s, v) {
+ var hsvToRgb = function hsvToRgb(h, s, v) {
var r, g, b;
var i = Math.floor(h * 6);
var f = h * 6 - i;
var p = v * (1 - s);
var q = v * (1 - f * s);
var t = v * (1 - (1 - f) * s);
switch (i % 6) {
case 0:
- (r = v, g = t, b = p);
+ r = v, g = t, b = p;
break;
case 1:
- (r = q, g = v, b = p);
+ r = q, g = v, b = p;
break;
case 2:
- (r = p, g = v, b = t);
+ r = p, g = v, b = t;
break;
case 3:
- (r = p, g = q, b = v);
+ r = p, g = q, b = v;
break;
case 4:
- (r = t, g = p, b = v);
+ r = t, g = p, b = v;
break;
case 5:
- (r = v, g = p, b = q);
+ r = v, g = p, b = q;
break;
}
return (Math.round(r * 255) << 16) + (Math.round(g * 255) << 8) + Math.round(b * 255);
};
@@ -81,14 +47,21 @@
self.color = hsvToRgb(hue, 0.6, 1);
self.rotateShapeRandomly = function () {
var rotations = Math.floor(Math.random() * 4);
for (var r = 0; r < rotations; r++) {
- self.shape = self.shape[0].map((val, index) => self.shape.map(row => row[index]).reverse());
+ self.shape = self.shape[0].map(function (val, index) {
+ return self.shape.map(function (row) {
+ return row[index];
+ }).reverse();
+ });
}
};
self.rotateShapeRandomly();
self.blocks = [];
- var background = self.createAsset('background', 'Background Graphics', .5, .5);
+ var background = self.attachAsset('background', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
background.alpha = 0;
var blockSize = 160;
background.width = 4 * blockSize;
background.height = 4 * blockSize;
@@ -99,9 +72,12 @@
var blockOffsetY = (background.height / 2 - self.shape.length * blockSize) / 2 - blockSize / 2;
for (var i = 0; i < self.shape.length; i++) {
for (var j = 0; j < self.shape[i].length; j++) {
if (self.shape[i][j] === 1) {
- var block = self.createAsset('block', 'Block Graphics', .5, .5);
+ var block = self.attachAsset('block', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
block.tint = self.color;
block.width = blockSize;
block.height = blockSize;
block.x = j * blockSize + blockOffsetX;
@@ -134,9 +110,9 @@
this.targetY += oy / 5;
this.x = currentX - this.targetX;
this.y = currentY - this.targetY;
};
- self.move = function (x, y) {
+ self._move_migrated = function (x, y) {
currentX = x;
currentY = y;
self.x = x - this.targetX;
self.y = y - this.targetY;
@@ -178,9 +154,13 @@
};
self.rotateShapeRandomly = function () {
var rotations = Math.floor(Math.random() * 4);
for (var r = 0; r < rotations; r++) {
- self.shape = self.shape[0].map((val, index) => self.shape.map(row => row[index]).reverse());
+ self.shape = self.shape[0].map(function (val, index) {
+ return self.shape.map(function (row) {
+ return row[index];
+ }).reverse();
+ });
}
};
});
var Board = Container.expand(function () {
@@ -194,13 +174,18 @@
this.particles.push(particle);
this.addChild(particle);
}
};
- var background = self.createAsset('background', 'Board outline', .5, .5);
+ var background = self.attachAsset('background', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
background.y = -20;
background.alpha = .4;
background.blendMode = 1;
- self.grid = new Array(10).fill(null).map(() => new Array(10).fill(null));
+ self.grid = new Array(10).fill(null).map(function () {
+ return new Array(10).fill(null);
+ });
var size = 158;
var totalWidth = 10 * size;
var totalHeight = 10 * size;
for (var i = 0; i < 10; i++) {
@@ -226,10 +211,14 @@
for (var i = 0; i < 10; i++) {
var rowFilled = true;
var colFilled = true;
for (var j = 0; j < 10; j++) {
- if (!self.grid[i][j].filled) rowFilled = false;
- if (!self.grid[j][i].filled) colFilled = false;
+ if (!self.grid[i][j].filled) {
+ rowFilled = false;
+ }
+ if (!self.grid[j][i].filled) {
+ colFilled = false;
+ }
}
if (rowFilled || colFilled) {
rowsRemoved += (rowFilled ? 1 : 0) + (colFilled ? 1 : 0);
for (var j = 0; j < 10; j++) {
@@ -258,127 +247,197 @@
}
};
self.placeBlock = function () {};
});
-var Game = Container.expand(function () {
+var Cell = Container.expand(function () {
var self = Container.call(this);
- var gameBackground = self.createAsset('gameBackground', 'Background Graphics', .5, .5);
- gameBackground.x = 2048 / 2;
- gameBackground.y = 2732 / 2;
- var tilesBackground = self.createAsset('tileBackground', 'Board outline', .5, .5);
- tilesBackground.y = -20;
- tilesBackground.alpha = .4;
- tilesBackground.blendMode = 1;
- var blocks = [];
- var dragTarget;
- var board = self.addChild(new Board());
- board.x = 2048 / 2;
- board.y = 2732 / 2 - 250 + 30;
- tilesBackground.x = 2048 / 2;
- tilesBackground.y = 2732 - 300;
- var targetOffset;
- self.createBlock = function (index) {
- var block = new Block(board);
- block.x = 2048 / 2 + (index - 1) * (block.width + 30);
- block.y = 2732 + block.height;
- block.setStartPosition(block.x, 2732 - block.height / 2 - 30);
- blocks.push(block);
- self.addChild(block);
- block.on('down', function (obj) {
- dragTarget = this;
- var pos = obj.event.getLocalPosition(this);
- var targetPos = obj.event.getLocalPosition(self);
- this.targetX = pos.x;
- this.targetY = pos.y;
- dragTarget.move(targetPos.x, targetPos.y);
- });
+ self.filled = false;
+ var empty = self.attachAsset('cell', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ empty.alpa = .8;
+ var filled = self.attachAsset('block', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ empty.y = 2;
+ self.setFill = function (isFilled) {
+ self.filled = isFilled;
+ empty.visible = !self.filled;
+ filled.visible = self.filled;
};
- stage.on('move', function (obj) {
- if (dragTarget) {
- board.removeTint();
- var pos = obj.event.getLocalPosition(self);
- dragTarget.move(pos.x, pos.y);
- dragTarget.showOverlap();
- }
+ self.getTint = function () {
+ return filled.tint;
+ };
+ self.setTint = function (tint) {
+ empty.tint = filled.tint = tint;
+ };
+ self.setFill(false);
+});
+var Particle = Container.expand(function (tint) {
+ var self = Container.call(this);
+ self.tint = tint;
+ var particleGraphics = self.attachAsset('particle', {
+ anchorX: 0.5,
+ anchorY: 0.5
});
- stage.on('up', function (obj) {
- if (dragTarget) {
- var cells = dragTarget.getOverlappingCells();
- if (cells) {
- for (var a = 0; a < cells.length; a++) {
- cells[a].setFill(true);
- cells[a].setTint(dragTarget.color);
- }
- blocks[blocks.indexOf(dragTarget)] = undefined;
- dragTarget.destroy();
- if (!blocks.some(block => block)) {
- self.createBlocks();
- }
- var pointsToAdd = board.checkLines();
- if (pointsToAdd) {
- score += Math.pow(pointsToAdd, 2) * 10;
- scoreTxt.setText(score);
- }
- }
- board.removeTint();
- dragTarget = undefined;
+ particleGraphics.rotation = Math.random() * Math.PI * 2;
+ particleGraphics.tint = self.tint;
+ self.vx = Math.random() * 4 - 2;
+ self.vy = Math.random() * 4 - 2;
+ self.alpha = 1;
+ self.lifetime = 60;
+ self.tick = function () {
+ self.x += self.vx;
+ self.y += self.vy;
+ self.alpha -= 1 / self.lifetime;
+ if (self.alpha <= 0) {
+ self.destroy();
}
- });
- self.createBlocks = function () {
- for (var i = 0; i < 3; i++) {
- self.createBlock(i);
- }
};
- var score = 0;
- self.createBlocks();
- var scoreTxt = new Text2('0', {
- size: 150,
- fill: "#ffffff",
- font: 'Impact',
- dropShadow: true,
- dropShadowColor: '#2a636e'
+});
+
+/****
+* Initialize Game
+****/
+var game = new LK.Game({
+ backgroundColor: 0x000000
+});
+
+/****
+* Game Code
+****/
+var gameBackground = game.attachAsset('gameBackground', {
+ anchorX: 0.5,
+ anchorY: 0.5
+});
+gameBackground.x = 2048 / 2;
+gameBackground.y = 2732 / 2;
+var tilesBackground = game.attachAsset('tileBackground', {
+ anchorX: 0.5,
+ anchorY: 0.5
+});
+tilesBackground.y = -20;
+tilesBackground.alpha = .4;
+tilesBackground.blendMode = 1;
+var blocks = [];
+var dragTarget;
+var board = game.addChild(new Board());
+board.x = 2048 / 2;
+board.y = 2732 / 2 - 250 + 30;
+tilesBackground.x = 2048 / 2;
+tilesBackground.y = 2732 - 300;
+var targetOffset;
+game.createBlock = function (index) {
+ var block = new Block(board);
+ block.x = 2048 / 2 + (index - 1) * (block.width + 30);
+ block.y = 2732 + block.height;
+ block.setStartPosition(block.x, 2732 - block.height / 2 - 30);
+ blocks.push(block);
+ game.addChild(block);
+ block.on('down', function (x, y, obj) {
+ dragTarget = this;
+ var pos = this.toLocal(obj.global);
+ var targetPos = game.toLocal(obj.global);
+ this.targetX = pos.x;
+ this.targetY = pos.y;
+ dragTarget._move_migrated(targetPos.x, targetPos.y);
});
- scoreTxt.anchor.set(.5, 0);
- LK.gui.topCenter.addChild(scoreTxt);
- self.isMovePossible = function () {
- for (var a = 0; a < blocks.length; a++) {
- if (blocks[a]) {
- for (var i = 0; i < 10; i++) {
- for (var j = 0; j < 10; j++) {
- if (board.grid[i][j].filled) continue;
- var canPlace = true;
- for (var k = 0; k < blocks[a].shape.length; k++) {
- for (var l = 0; l < blocks[a].shape[k].length; l++) {
- if (blocks[a].shape[k][l] === 1) {
- if (i + k < 0 || i + k >= 10 || j + l < 0 || j + l >= 10 || board.grid[i + k][j + l].filled) {
- canPlace = false;
- break;
- }
+};
+game.on('move', function (x, y, obj) {
+ if (dragTarget) {
+ board.removeTint();
+ var pos = game.toLocal(obj.global);
+ dragTarget._move_migrated(pos.x, pos.y);
+ dragTarget.showOverlap();
+ }
+});
+game.on('up', function (x, y, obj) {
+ if (dragTarget) {
+ var cells = dragTarget.getOverlappingCells();
+ if (cells) {
+ for (var a = 0; a < cells.length; a++) {
+ cells[a].setFill(true);
+ cells[a].setTint(dragTarget.color);
+ }
+ blocks[blocks.indexOf(dragTarget)] = undefined;
+ dragTarget.destroy();
+ if (!blocks.some(function (block) {
+ return block;
+ })) {
+ game.createBlocks();
+ }
+ var pointsToAdd = board.checkLines();
+ if (pointsToAdd) {
+ score += Math.pow(pointsToAdd, 2) * 10;
+ scoreTxt.setText(score);
+ }
+ }
+ board.removeTint();
+ dragTarget = undefined;
+ }
+});
+game.createBlocks = function () {
+ for (var i = 0; i < 3; i++) {
+ game.createBlock(i);
+ }
+};
+var score = 0;
+game.createBlocks();
+var scoreTxt = new Text2('0', {
+ size: 150,
+ fill: "#ffffff",
+ font: 'Impact',
+ dropShadow: true,
+ dropShadowColor: '#2a636e'
+});
+scoreTxt.anchor.set(.5, 0);
+LK.gui.top.addChild(scoreTxt);
+game.isMovePossible = function () {
+ for (var a = 0; a < blocks.length; a++) {
+ if (blocks[a]) {
+ for (var i = 0; i < 10; i++) {
+ for (var j = 0; j < 10; j++) {
+ if (board.grid[i][j].filled) {
+ continue;
+ }
+ var canPlace = true;
+ for (var k = 0; k < blocks[a].shape.length; k++) {
+ for (var l = 0; l < blocks[a].shape[k].length; l++) {
+ if (blocks[a].shape[k][l] === 1) {
+ if (i + k < 0 || i + k >= 10 || j + l < 0 || j + l >= 10 || board.grid[i + k][j + l].filled) {
+ canPlace = false;
+ break;
}
}
- if (!canPlace) break;
}
- if (canPlace) return true;
+ if (!canPlace) {
+ break;
+ }
}
+ if (canPlace) {
+ return true;
+ }
}
}
}
- return false;
- };
- var isGameOver = false;
- LK.on('tick', function () {
- board.tick();
- if (isGameOver || !self.isMovePossible()) {
- LK.effects.flashScreen(0xffffff, 1000);
- LK.showGameOver();
- }
- for (var a = blocks.length - 1; a >= 0; a--) {
- if (blocks[a]) {
- if (blocks[a] != dragTarget) {
- blocks[a].moveTowardsHomePosition();
- } else {
- blocks[a].moveToDragTarget();
- }
+ }
+ return false;
+};
+var isGameOver = false;
+LK.on('tick', function () {
+ board.tick();
+ if (isGameOver || !game.isMovePossible()) {
+ LK.effects.flashScreen(0xffffff, 1000);
+ LK.showGameOver();
+ }
+ for (var a = blocks.length - 1; a >= 0; a--) {
+ if (blocks[a]) {
+ if (blocks[a] != dragTarget) {
+ blocks[a].moveTowardsHomePosition();
+ } else {
+ blocks[a].moveToDragTarget();
}
}
- });
-});
+ }
+});
\ No newline at end of file
White square with round corners, flat shaded, hyper casual game. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
White square with tight round corners, flat shaded, hyper casual game. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Background for relaxing puzzle game. Pastel colors, flat shaded, vector art. Flowers. Blocks. Relaxing. Clouds Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
White particle cloud. Cartoon. Bright outline. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.