User prompt
make the blocks move a little bit faster
User prompt
make the blocks move a little bit faster
User prompt
dont make the blocks faster when falling
User prompt
make the blocks move a tiny bit fast
User prompt
the blocks should move a little bit slower
User prompt
the explosion and the red block makes the touched blocks dissapear
User prompt
The explosion should be Bigger than the blocks
User prompt
when number reaches 50, show game over screen
User prompt
make the explosion even bigger
User prompt
play evil laugh sound when red block appears
User prompt
add evil laugh sound asset
User prompt
make all blocks fast
User prompt
make all of the blocks a little faster
User prompt
the blocks should move a little slower when another one appears
User prompt
make the explosion even bigger
User prompt
make the rays background bigger
User prompt
add purple sun rays background asset
User prompt
when all of the blocks fill up to 100, use game over screen
User prompt
make the explosion bigger
User prompt
if red block touches any block, they explode
User prompt
make the explosion fade in, zoom in, then zoom out and fade out.
User prompt
add explosion sound asset
User prompt
stop red flash screen when red block touched another block
User prompt
when alarm sound plays, loop red flash screen
User prompt
play alarm sound when red block appears
/**** * 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); }
===================================================================
--- original.js
+++ change.js
@@ -308,9 +308,9 @@
}
// Function to handle block placement
function placeBlock() {
if (currentBlock) {
- gameSpeed += 0.1;
+ gameSpeed += 0.2;
checkForMatchingBlocks();
// Check if the current block is red
if (currentBlock instanceof RedBlock) {
// Destroy all blocks except red blocks
@@ -387,9 +387,9 @@
};
// Update function called every game tick
game.update = function () {
if (currentBlock) {
- currentBlock.y += gameSpeed * 3.5;
+ 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();