/****
* Classes
****/
//<Assets used in the game will automatically appear here>
// Block class representing each block in the game
var Block = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('block', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var BlueBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('blueBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var BrownBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('brownBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var Explosion = Container.expand(function () {
var self = Container.call(this);
var explosionGraphics = self.attachAsset('explosion', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Explosion specific logic can be added here
};
});
var PinkBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('pinkBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var PurpleBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('purpleBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var RedBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('redStackedBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
for (var i = blocks.length - 1; i >= 0; i--) {
if (self !== blocks[i] && self.intersects(blocks[i])) {
var explosion = new Explosion();
explosion.x = self.x;
explosion.y = self.y;
game.addChild(explosion);
LK.getSound('explosionSound').play();
LK.getSound('evilLaugh').play();
// Animation: fade in, zoom in, then zoom out and fade out
explosion.alpha = 0;
explosion.scale.set(0.5, 0.5);
LK.effects.fadeIn(explosion, 500, function () {
LK.effects.scaleTo(explosion, 10.0, 10.0, 700, function () {
LK.effects.scaleTo(explosion, 0.5, 0.5, 500, function () {
LK.effects.fadeOut(explosion, 500, function () {
explosion.destroy();
});
});
});
});
blocks[i].destroy();
blocks.splice(i, 1);
self.destroy();
blocks.splice(blocks.indexOf(self), 1);
break;
}
}
};
});
var RedStackedBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('redStackedBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var YellowStackedBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('yellowStackedBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x800080 //Init game with purple background
});
/****
* Game Code
****/
var background = LK.getAsset('purpleSunRays', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChild(background);
LK.effects.fadeIn = function (obj, duration, callback) {
var step = 1 / (duration / 16.67); // 16.67ms per frame at 60FPS
var interval = LK.setInterval(function () {
obj.alpha += step;
if (obj.alpha >= 1) {
obj.alpha = 1;
LK.clearInterval(interval);
if (callback) {
callback();
}
}
}, 16.67);
};
LK.effects.fadeOut = function (obj, duration, callback) {
var step = 1 / (duration / 16.67); // 16.67ms per frame at 60FPS
var interval = LK.setInterval(function () {
obj.alpha -= step;
if (obj.alpha <= 0) {
obj.alpha = 0;
LK.clearInterval(interval);
if (callback) {
callback();
}
}
}, 16.67);
};
LK.effects.scaleTo = function (obj, scaleX, scaleY, duration, callback) {
var startX = obj.scale.x;
var startY = obj.scale.y;
var stepX = (scaleX - startX) / (duration / 16.67); // 16.67ms per frame at 60FPS
var stepY = (scaleY - startY) / (duration / 16.67); // 16.67ms per frame at 60FPS
var interval = LK.setInterval(function () {
obj.scale.x += stepX;
obj.scale.y += stepY;
if (stepX > 0 && obj.scale.x >= scaleX || stepX < 0 && obj.scale.x <= scaleX) {
obj.scale.x = scaleX;
obj.scale.y = scaleY;
LK.clearInterval(interval);
if (callback) {
callback();
}
}
}, 16.67);
};
var redFlashInterval = null;
function startRedFlash() {
if (redFlashInterval === null) {
redFlashInterval = LK.setInterval(function () {
LK.effects.flashScreen(0xff0000, 500);
}, 500);
}
}
function stopRedFlash() {
if (redFlashInterval !== null) {
LK.clearInterval(redFlashInterval);
redFlashInterval = null;
}
}
LK.playMusic('epicTechno');
gameSpeed += 0.1;
function checkForMatchingBlocks() {
var blockGroups = {};
// Group blocks by their tint color
blocks.forEach(function (block) {
var color = block.children[0].tint;
if (!blockGroups[color]) {
blockGroups[color] = [];
}
blockGroups[color].push(block);
});
// Check each group for 5 or more touching blocks
for (var color in blockGroups) {
var group = blockGroups[color];
for (var i = 0; i < group.length; i++) {
var block = group[i];
var touchingBlocks = [block];
// Check for touching blocks in the group
for (var j = 0; j < group.length; j++) {
if (i !== j && block.intersects(group[j])) {
touchingBlocks.push(group[j]);
}
}
// If 5 or more blocks are touching, remove them
if (touchingBlocks.length >= 5) {
touchingBlocks.forEach(function (touchingBlock) {
var explosion = new Explosion();
explosion.x = touchingBlock.x;
explosion.y = touchingBlock.y;
game.addChild(explosion);
LK.getSound('explosionSound').play();
LK.getSound('evilLaugh').play();
// Animation: fade in, zoom in, then zoom out and fade out
explosion.alpha = 0;
explosion.scale.set(0.5, 0.5);
LK.effects.fadeIn(explosion, 500, function () {
LK.effects.scaleTo(explosion, 10.0, 10.0, 700, function () {
LK.effects.scaleTo(explosion, 0.5, 0.5, 500, function () {
LK.effects.fadeOut(explosion, 500, function () {
explosion.destroy();
});
});
});
});
touchingBlock.destroy();
blocks = blocks.filter(function (b) {
return b !== touchingBlock;
});
});
}
}
}
}
// Initialize variables
var blocks = [];
var currentBlock = null;
var stackHeight = 0;
var gameSpeed = 2.0;
var score = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
// Event listeners for WASD keys
game.keydown = function (event) {
if (currentBlock) {
if (event.key === 'ArrowLeft' || event.key === 'a') {
currentBlock.x -= 50;
} else if (event.key === 'ArrowRight' || event.key === 'd') {
currentBlock.x += 50;
} else if (event.key === 'ArrowUp' || event.key === 'w') {
currentBlock.y -= 50;
} else if (event.key === 'ArrowDown' || event.key === 's') {
currentBlock.y += 50;
}
}
};
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Function to create a new block
function createBlock() {
var block;
var randomValue = Math.random();
if (randomValue < 0.15) {
block = new Block();
block.children[0].tint = getRandomColor();
} else if (randomValue < 0.3) {
block = new BlueBlock();
} else if (randomValue < 0.45) {
block = new YellowStackedBlock();
} else if (randomValue < 0.6) {
block = new PurpleBlock();
} else if (randomValue < 0.75) {
block = new PinkBlock();
} else if (randomValue < 0.9) {
block = new BrownBlock();
} else {
block = new RedBlock();
LK.getSound('alarm').play();
LK.getSound('evilLaugh').play();
startRedFlash();
}
block.x = 2048 / 2;
block.y = 100;
blocks.push(block);
game.addChild(block);
currentBlock = block;
}
// Function to handle block placement
function placeBlock() {
if (currentBlock) {
gameSpeed += 0.2;
checkForMatchingBlocks();
// Check if the current block is red
if (currentBlock instanceof RedBlock) {
// Destroy all blocks except red blocks
for (var i = blocks.length - 1; i >= 0; i--) {
if (!(blocks[i] instanceof RedBlock)) {
var blockToDestroy = blocks[i];
blockToDestroy.destroy();
blocks.splice(i, 1);
}
}
// Stop red flash screen when red block touches another block
stopRedFlash();
}
if (blocks.length === 0) {
LK.stopMusic();
LK.effects.flashScreen(0x00ff00, 1000); // Flash screen green for 1 second
LK.showGameWin();
return;
}
if (blocks.length === 0) {
LK.stopMusic();
LK.effects.flashScreen(0x00ff00, 1000); // Flash screen green for 1 second
LK.showYouWin();
LK.stopMusic();
return;
}
if (score >= 50) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
stopRedFlash();
LK.showGameOver();
return;
}
if (blocks.length >= 100) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
stopRedFlash();
stopRedFlash();
LK.showGameOver();
return;
}
currentBlock.y = 2732 - (stackHeight + 1) * currentBlock.height + currentBlock.height / 2;
LK.getSound('bellDing').play();
currentBlock = null;
blocks = blocks.filter(function (block) {
return block !== currentBlock;
});
currentBlock = null;
stackHeight++;
score++;
scoreTxt.setText(score);
createBlock();
// gameSpeed increment removed
}
}
// Initialize the first block with a random color
createBlock();
LK.getSound('alarm').play();
// Event listener for touch down
game.down = function (x, y, obj) {
if (currentBlock) {
currentBlock.startX = currentBlock.x;
currentBlock.startY = currentBlock.y;
currentBlock.startTouchX = x;
currentBlock.startTouchY = y;
}
};
// Event listener for touch move
game.move = function (x, y, obj) {
if (currentBlock) {
var deltaX = x - currentBlock.startTouchX;
currentBlock.x = currentBlock.startX + deltaX;
}
};
// Update function called every game tick
game.update = function () {
if (currentBlock) {
currentBlock.y += gameSpeed * 4.0;
for (var i = blocks.length - 1; i >= 0; i--) {
if (currentBlock !== blocks[i] && currentBlock.intersects(blocks[i])) {
if (currentBlock instanceof RedBlock) {
stopRedFlash();
var explosion = new Explosion();
explosion.x = currentBlock.x;
explosion.y = currentBlock.y;
game.addChild(explosion);
LK.getSound('explosionSound').play();
// Animation: fade in, zoom in, then zoom out and fade out
explosion.alpha = 0;
explosion.scale.set(0.5, 0.5);
LK.effects.fadeIn(explosion, 500, function () {
LK.effects.scaleTo(explosion, 10.0, 10.0, 700, function () {
LK.effects.scaleTo(explosion, 0.5, 0.5, 500, function () {
LK.effects.fadeOut(explosion, 500, function () {
explosion.destroy();
});
});
});
});
blocks[i].destroy();
blocks.splice(i, 1);
currentBlock.destroy();
blocks.splice(blocks.indexOf(currentBlock), 1);
} else {
blocks = blocks.filter(function (block) {
return block !== currentBlock;
});
LK.getSound('bellDing').play();
placeBlock();
}
break;
}
}
if (currentBlock.y > 2732) {
if (score >= 50) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
LK.showGameOver();
return;
}
if (blocks.length >= 100) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
LK.showGameOver();
return;
}
currentBlock.y = 2732 - (stackHeight + 1) * currentBlock.height + currentBlock.height / 2;
stackHeight++;
score++;
scoreTxt.setText(score);
currentBlock = null;
blocks = blocks.filter(function (block) {
return block !== currentBlock;
});
createBlock();
// gameSpeed increment removed
}
}
};
// Function to generate a random color
function getRandomColor() {
return Math.floor(Math.random() * 16777215);
} /****
* Classes
****/
//<Assets used in the game will automatically appear here>
// Block class representing each block in the game
var Block = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('block', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var BlueBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('blueBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var BrownBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('brownBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var Explosion = Container.expand(function () {
var self = Container.call(this);
var explosionGraphics = self.attachAsset('explosion', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Explosion specific logic can be added here
};
});
var PinkBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('pinkBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var PurpleBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('purpleBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var RedBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('redStackedBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
for (var i = blocks.length - 1; i >= 0; i--) {
if (self !== blocks[i] && self.intersects(blocks[i])) {
var explosion = new Explosion();
explosion.x = self.x;
explosion.y = self.y;
game.addChild(explosion);
LK.getSound('explosionSound').play();
LK.getSound('evilLaugh').play();
// Animation: fade in, zoom in, then zoom out and fade out
explosion.alpha = 0;
explosion.scale.set(0.5, 0.5);
LK.effects.fadeIn(explosion, 500, function () {
LK.effects.scaleTo(explosion, 10.0, 10.0, 700, function () {
LK.effects.scaleTo(explosion, 0.5, 0.5, 500, function () {
LK.effects.fadeOut(explosion, 500, function () {
explosion.destroy();
});
});
});
});
blocks[i].destroy();
blocks.splice(i, 1);
self.destroy();
blocks.splice(blocks.indexOf(self), 1);
break;
}
}
};
});
var RedStackedBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('redStackedBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
var YellowStackedBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('yellowStackedBlock', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Blocks do not have any specific update logic for now
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x800080 //Init game with purple background
});
/****
* Game Code
****/
var background = LK.getAsset('purpleSunRays', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChild(background);
LK.effects.fadeIn = function (obj, duration, callback) {
var step = 1 / (duration / 16.67); // 16.67ms per frame at 60FPS
var interval = LK.setInterval(function () {
obj.alpha += step;
if (obj.alpha >= 1) {
obj.alpha = 1;
LK.clearInterval(interval);
if (callback) {
callback();
}
}
}, 16.67);
};
LK.effects.fadeOut = function (obj, duration, callback) {
var step = 1 / (duration / 16.67); // 16.67ms per frame at 60FPS
var interval = LK.setInterval(function () {
obj.alpha -= step;
if (obj.alpha <= 0) {
obj.alpha = 0;
LK.clearInterval(interval);
if (callback) {
callback();
}
}
}, 16.67);
};
LK.effects.scaleTo = function (obj, scaleX, scaleY, duration, callback) {
var startX = obj.scale.x;
var startY = obj.scale.y;
var stepX = (scaleX - startX) / (duration / 16.67); // 16.67ms per frame at 60FPS
var stepY = (scaleY - startY) / (duration / 16.67); // 16.67ms per frame at 60FPS
var interval = LK.setInterval(function () {
obj.scale.x += stepX;
obj.scale.y += stepY;
if (stepX > 0 && obj.scale.x >= scaleX || stepX < 0 && obj.scale.x <= scaleX) {
obj.scale.x = scaleX;
obj.scale.y = scaleY;
LK.clearInterval(interval);
if (callback) {
callback();
}
}
}, 16.67);
};
var redFlashInterval = null;
function startRedFlash() {
if (redFlashInterval === null) {
redFlashInterval = LK.setInterval(function () {
LK.effects.flashScreen(0xff0000, 500);
}, 500);
}
}
function stopRedFlash() {
if (redFlashInterval !== null) {
LK.clearInterval(redFlashInterval);
redFlashInterval = null;
}
}
LK.playMusic('epicTechno');
gameSpeed += 0.1;
function checkForMatchingBlocks() {
var blockGroups = {};
// Group blocks by their tint color
blocks.forEach(function (block) {
var color = block.children[0].tint;
if (!blockGroups[color]) {
blockGroups[color] = [];
}
blockGroups[color].push(block);
});
// Check each group for 5 or more touching blocks
for (var color in blockGroups) {
var group = blockGroups[color];
for (var i = 0; i < group.length; i++) {
var block = group[i];
var touchingBlocks = [block];
// Check for touching blocks in the group
for (var j = 0; j < group.length; j++) {
if (i !== j && block.intersects(group[j])) {
touchingBlocks.push(group[j]);
}
}
// If 5 or more blocks are touching, remove them
if (touchingBlocks.length >= 5) {
touchingBlocks.forEach(function (touchingBlock) {
var explosion = new Explosion();
explosion.x = touchingBlock.x;
explosion.y = touchingBlock.y;
game.addChild(explosion);
LK.getSound('explosionSound').play();
LK.getSound('evilLaugh').play();
// Animation: fade in, zoom in, then zoom out and fade out
explosion.alpha = 0;
explosion.scale.set(0.5, 0.5);
LK.effects.fadeIn(explosion, 500, function () {
LK.effects.scaleTo(explosion, 10.0, 10.0, 700, function () {
LK.effects.scaleTo(explosion, 0.5, 0.5, 500, function () {
LK.effects.fadeOut(explosion, 500, function () {
explosion.destroy();
});
});
});
});
touchingBlock.destroy();
blocks = blocks.filter(function (b) {
return b !== touchingBlock;
});
});
}
}
}
}
// Initialize variables
var blocks = [];
var currentBlock = null;
var stackHeight = 0;
var gameSpeed = 2.0;
var score = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
// Event listeners for WASD keys
game.keydown = function (event) {
if (currentBlock) {
if (event.key === 'ArrowLeft' || event.key === 'a') {
currentBlock.x -= 50;
} else if (event.key === 'ArrowRight' || event.key === 'd') {
currentBlock.x += 50;
} else if (event.key === 'ArrowUp' || event.key === 'w') {
currentBlock.y -= 50;
} else if (event.key === 'ArrowDown' || event.key === 's') {
currentBlock.y += 50;
}
}
};
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Function to create a new block
function createBlock() {
var block;
var randomValue = Math.random();
if (randomValue < 0.15) {
block = new Block();
block.children[0].tint = getRandomColor();
} else if (randomValue < 0.3) {
block = new BlueBlock();
} else if (randomValue < 0.45) {
block = new YellowStackedBlock();
} else if (randomValue < 0.6) {
block = new PurpleBlock();
} else if (randomValue < 0.75) {
block = new PinkBlock();
} else if (randomValue < 0.9) {
block = new BrownBlock();
} else {
block = new RedBlock();
LK.getSound('alarm').play();
LK.getSound('evilLaugh').play();
startRedFlash();
}
block.x = 2048 / 2;
block.y = 100;
blocks.push(block);
game.addChild(block);
currentBlock = block;
}
// Function to handle block placement
function placeBlock() {
if (currentBlock) {
gameSpeed += 0.2;
checkForMatchingBlocks();
// Check if the current block is red
if (currentBlock instanceof RedBlock) {
// Destroy all blocks except red blocks
for (var i = blocks.length - 1; i >= 0; i--) {
if (!(blocks[i] instanceof RedBlock)) {
var blockToDestroy = blocks[i];
blockToDestroy.destroy();
blocks.splice(i, 1);
}
}
// Stop red flash screen when red block touches another block
stopRedFlash();
}
if (blocks.length === 0) {
LK.stopMusic();
LK.effects.flashScreen(0x00ff00, 1000); // Flash screen green for 1 second
LK.showGameWin();
return;
}
if (blocks.length === 0) {
LK.stopMusic();
LK.effects.flashScreen(0x00ff00, 1000); // Flash screen green for 1 second
LK.showYouWin();
LK.stopMusic();
return;
}
if (score >= 50) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
stopRedFlash();
LK.showGameOver();
return;
}
if (blocks.length >= 100) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
stopRedFlash();
stopRedFlash();
LK.showGameOver();
return;
}
currentBlock.y = 2732 - (stackHeight + 1) * currentBlock.height + currentBlock.height / 2;
LK.getSound('bellDing').play();
currentBlock = null;
blocks = blocks.filter(function (block) {
return block !== currentBlock;
});
currentBlock = null;
stackHeight++;
score++;
scoreTxt.setText(score);
createBlock();
// gameSpeed increment removed
}
}
// Initialize the first block with a random color
createBlock();
LK.getSound('alarm').play();
// Event listener for touch down
game.down = function (x, y, obj) {
if (currentBlock) {
currentBlock.startX = currentBlock.x;
currentBlock.startY = currentBlock.y;
currentBlock.startTouchX = x;
currentBlock.startTouchY = y;
}
};
// Event listener for touch move
game.move = function (x, y, obj) {
if (currentBlock) {
var deltaX = x - currentBlock.startTouchX;
currentBlock.x = currentBlock.startX + deltaX;
}
};
// Update function called every game tick
game.update = function () {
if (currentBlock) {
currentBlock.y += gameSpeed * 4.0;
for (var i = blocks.length - 1; i >= 0; i--) {
if (currentBlock !== blocks[i] && currentBlock.intersects(blocks[i])) {
if (currentBlock instanceof RedBlock) {
stopRedFlash();
var explosion = new Explosion();
explosion.x = currentBlock.x;
explosion.y = currentBlock.y;
game.addChild(explosion);
LK.getSound('explosionSound').play();
// Animation: fade in, zoom in, then zoom out and fade out
explosion.alpha = 0;
explosion.scale.set(0.5, 0.5);
LK.effects.fadeIn(explosion, 500, function () {
LK.effects.scaleTo(explosion, 10.0, 10.0, 700, function () {
LK.effects.scaleTo(explosion, 0.5, 0.5, 500, function () {
LK.effects.fadeOut(explosion, 500, function () {
explosion.destroy();
});
});
});
});
blocks[i].destroy();
blocks.splice(i, 1);
currentBlock.destroy();
blocks.splice(blocks.indexOf(currentBlock), 1);
} else {
blocks = blocks.filter(function (block) {
return block !== currentBlock;
});
LK.getSound('bellDing').play();
placeBlock();
}
break;
}
}
if (currentBlock.y > 2732) {
if (score >= 50) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
LK.showGameOver();
return;
}
if (blocks.length >= 100) {
LK.getSound('gameOverBuzzer').play();
LK.getSound('alarm').stop();
LK.showGameOver();
return;
}
currentBlock.y = 2732 - (stackHeight + 1) * currentBlock.height + currentBlock.height / 2;
stackHeight++;
score++;
scoreTxt.setText(score);
currentBlock = null;
blocks = blocks.filter(function (block) {
return block !== currentBlock;
});
createBlock();
// gameSpeed increment removed
}
}
};
// Function to generate a random color
function getRandomColor() {
return Math.floor(Math.random() * 16777215);
}