User prompt
you should set and update score when block is aligned perfectly
User prompt
add bck_music asset as looping background music
Code edit (3 edits merged)
Please save this source code
User prompt
block user from dropping a block when a block is already falling
User prompt
user shouldnt be able to drop a block while another block is falling
User prompt
okay good but it doesnt go away after user clicks or drops a block
User prompt
Move tutorial text to center
User prompt
move tutorial text to bottom
User prompt
tutorial text should gone after user clicks or drops a block
User prompt
still not at the center
Code edit (7 edits merged)
Please save this source code
User prompt
i dont think it is because of the color it is the position. please fix it. it should be at the center
User prompt
now text is not visible
User prompt
remove tutorial text after user clicks and show it at the center
User prompt
add a tutorial text that is saying click to drop
Code edit (1 edits merged)
Please save this source code
User prompt
make blocks bigger
/**** * Classes ****/ // Class for the base block var BaseBlock = Container.expand(function () { var self = Container.call(this); var baseBlockGraphics = self.attachAsset('base_block', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); }); // Class for the blocks var Block = Container.expand(function () { var self = Container.call(this); var blockGraphics = self.attachAsset('block', { anchorX: 0.5, anchorY: 0.5, scaleX: 3, scaleY: 3 }); self.falling = false; self.speed = 20; self.update = function () { if (self.falling) { self.y += self.speed; self.x += self.momentum; } }; }); //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Class for the swinging crane var Crane = Container.expand(function () { var self = Container.call(this); var craneGraphics = self.attachAsset('crane', { anchorX: 0.5, anchorY: 0.0 }); self.angle = 0; self.speed = 0.03; self.direction = 1; self.update = function () { self.angle += self.speed * self.direction; if (self.angle > 1.5 || self.angle < -1.5) { self.direction *= -1; } self.rotation = self.angle; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ // Initialize variables var crane = game.addChild(new Crane()); var baseBlock = game.addChild(new BaseBlock()); baseBlock.x = 2048 / 2; baseBlock.y = 2732 - baseBlock.height / 2; crane.x = 2048 / 2; crane.y = 50; // Move the crane up var blocks = []; var currentBlock = null; var towerHeight = 0; var scoreTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Function to drop a block function dropBlock() { if (currentBlock && !currentBlock.falling) { currentBlock.falling = true; // Calculate the horizontal speed based on the crane's angular velocity var horizontalSpeed = Math.sin(crane.rotation) * crane.speed * 10; // Reduced scaling factor currentBlock.momentum = horizontalSpeed; blocks.push(currentBlock); currentBlock = null; } } // Function to check for collisions and update score function checkCollisions() { for (var i = blocks.length - 1; i >= 0; i--) { if (!blocks[i].falling) { continue; } if (blocks[i].intersects(baseBlock)) { blocks[i].falling = false; blocks[i].y = baseBlock.y - baseBlock.height / 2 - blocks[i].height / 2 - towerHeight * 100; towerHeight++; LK.setScore(towerHeight); scoreTxt.setText(LK.getScore()); // Slide base block and the blocks stacked upon it downwards LK.getSound('place').play(); } else { for (var j = 0; j < blocks.length; j++) { if (i !== j && blocks[i].falling && blocks[j].y < 2732 && !blocks[j].falling && blocks[i].intersects(blocks[j])) { if (Math.abs(blocks[i].x - blocks[j].x) > blocks[i].width / 4) { // Check if the block is not aligned correctly blocks[i].falling = true; blocks[i].speed = 10; // Add rotation and change trajectory based on the alignment if (blocks[i].x - blocks[j].x > 0) { blocks[i].rotation = 0.5; // Rotate to the right blocks[i].momentum += 5; // Fall to the right } else { blocks[i].rotation = -0.5; // Rotate to the left blocks[i].momentum -= 5; // Fall to the left } LK.getSound('gameover').play(); LK.setTimeout(function () { LK.showGameOver(); }, 1000); } else { blocks[i].falling = false; blocks[i].y = blocks[j].y - blocks[j].height / 2 - blocks[i].height / 2; LK.getSound('place').play(); // Play sound when block is aligned perfectly baseBlock.y += blocks[i].height; for (var j = 0; j < blocks.length; j++) { if (!blocks[j].falling) { blocks[j].y += blocks[i].height; } } // Update score when block is aligned perfectly towerHeight++; LK.setScore(towerHeight); scoreTxt.setText(LK.getScore()); break; } } } if (blocks[i].falling && blocks[i].y > 2732) { game.removeChild(blocks[i]); blocks.splice(i, 1); console.log("Block lost!"); } } } } // Game update loop game.update = function () { crane.update(); if (!currentBlock) { currentBlock = new Block(); // Position the new block directly attached to the crane's end currentBlock.x = crane.x + Math.sin(crane.rotation) * (crane.width / 2 + currentBlock.width / 2 + 200); // Increase the length of the rope currentBlock.y = crane.y + Math.cos(crane.rotation) * (crane.height / 2 + currentBlock.height / 2 + 200); // Increase the length of the rope game.addChild(currentBlock); } else if (!currentBlock.falling) { // Update the block's position to stay synced with the crane currentBlock.x = crane.x + Math.sin(crane.rotation) * (crane.width / 2 + currentBlock.width / 2 + 200); // Increase the length of the rope currentBlock.y = crane.y + Math.cos(crane.rotation) * (crane.height / 2 + currentBlock.height / 2 + 200); // Increase the length of the rope } if (currentBlock) { currentBlock.update(); } checkCollisions(); }; // Event listener for dropping blocks game.down = function (x, y, obj) { dropBlock(); // Remove tutorial text after user clicks or drops a block LK.gui.center.removeChild(tutorialTxt); }; // Add tutorial text var tutorialTxt = new Text2('Click to drop', { size: 100, fill: 0xFFFFFF }); tutorialTxt.anchor.set(0.5, 0.5); LK.gui.center.addChild(tutorialTxt); // Play background music LK.playMusic('bck_music', { loop: true }); ; ;
===================================================================
--- original.js
+++ change.js
@@ -129,8 +129,12 @@
if (!blocks[j].falling) {
blocks[j].y += blocks[i].height;
}
}
+ // Update score when block is aligned perfectly
+ towerHeight++;
+ LK.setScore(towerHeight);
+ scoreTxt.setText(LK.getScore());
break;
}
}
}