Code edit (3 edits merged)
Please save this source code
User prompt
for the effect of continuity remove 1 block from bottom of the stack when stacked blocks exceed 5. when you remove the block remove it witha slide animation. āŖš” Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
stacked blocks are going up instead of going down.
Code edit (3 edits merged)
Please save this source code
User prompt
Please fix the bug: 'LK.Container is not a constructor' in or related to this line: 'var gameContainer = new LK.Container(); // Container to hold all game elements that move' Line Number: 71
User prompt
Please fix the bug: 'LK.Container is not a constructor' in or related to this line: 'var gameContainer = new LK.Container(); // Container to hold all game elements that move' Line Number: 71
User prompt
Please fix the bug: 'LK.Game.Container is not a constructor' in or related to this line: 'var gameContainer = new LK.Game.Container(); // Container to hold all game elements that move' Line Number: 71
User prompt
Please fix the bug: 'LK.Container is not a constructor' in or related to this line: 'var gameContainer = new LK.Container(); // Container to hold all game elements that move' Line Number: 71
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: rope is undefined' in or related to this line: 'rope.scaleY = Math.sqrt(Math.pow(currentBlock.x - crane.x, 2) + Math.pow(currentBlock.y - crane.y, 2)) / 100;' Line Number: 148
User prompt
Please fix the bug: 'TypeError: rope is undefined' in or related to this line: 'rope.scaleY = Math.sqrt(Math.pow(currentBlock.x - crane.x, 2) + Math.pow(currentBlock.y - crane.y, 2)) / 100;' Line Number: 147
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: rope is undefined' in or related to this line: 'rope.scaleY = Math.sqrt(Math.pow(currentBlock.x - crane.x, 2) + Math.pow(currentBlock.y - crane.y, 2)) / 100;' Line Number: 148
User prompt
Please fix the bug: 'TypeError: rope is undefined' in or related to this line: 'rope.scaleY = Math.sqrt(Math.pow(currentBlock.x - crane.x, 2) + Math.pow(currentBlock.y - crane.y, 2)) / 100;' Line Number: 147
User prompt
there should be only 1 rope but there are too many ropes and rope is not connected to the block. fix that please
User prompt
rope between the block and crane is not visible. can you add something visual for that? i added asset image named rope
User prompt
i created asset named rope. now implement it please
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: game.camera is undefined' in or related to this line: 'game.camera.y += (targetY - game.camera.y) * cameraFollowSpeed;' Line Number: 141
Code edit (2 edits merged)
Please save this source code
User prompt
then just make infinite
User prompt
okay so red block for crane shouldnt on the screen visible so put it way back on top and make rope longer
User prompt
make swinging slower and increase the range
Code edit (2 edits merged)
Please save this source code
===================================================================
--- original.js
+++ change.js
@@ -1,8 +1,12 @@
/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
* Classes
****/
-// Changed to rectangle for easier scaling
// Class for the base block
var BaseBlock = Container.expand(function () {
var self = Container.call(this);
var baseBlockGraphics = self.attachAsset('block', {
@@ -20,9 +24,8 @@
scaleY: 2
});
self.falling = false;
self.speed = 5;
- self.momentum = 0; // Initialize momentum
self.update = function () {
if (self.falling) {
self.y += self.speed;
self.x += self.momentum;
@@ -35,9 +38,9 @@
var Crane = Container.expand(function () {
var self = Container.call(this);
var craneGraphics = self.attachAsset('crane', {
anchorX: 0.5,
- anchorY: 0.0 // Anchor at the top for rotation
+ anchorY: 0.0
});
self.angle = 0;
self.speed = 0.03;
self.direction = 1;
@@ -63,9 +66,9 @@
// Initialize variables
var crane = game.addChild(new Crane());
var baseBlock = game.addChild(new BaseBlock());
baseBlock.x = 2048 / 2;
-baseBlock.y = 2732 - baseBlock.height / 2; // Keep base at the bottom
+baseBlock.y = 2732 - baseBlock.height / 2;
crane.x = 2048 / 2;
crane.y = 50; // Move the crane up
var blocks = [];
var currentBlock = null;
@@ -75,25 +78,16 @@
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
-var rope = null; // Define rope in the global scope
-// NEW: Target Y for smooth upward visual effect (tower moving down)
-var towerTargetY = baseBlock.y;
-var towerMoveSpeed = 0.1; // Adjust for desired smoothness
// 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 * 100;
+ var horizontalSpeed = Math.sin(crane.rotation) * crane.speed * 10; // Reduced scaling factor
currentBlock.momentum = horizontalSpeed;
blocks.push(currentBlock);
- // Remove the rope when the block is dropped
- if (rope) {
- game.removeChild(rope);
- rope = null;
- }
currentBlock = null;
}
}
// Function to check for collisions and update score
@@ -103,24 +97,36 @@
continue;
}
if (blocks[i].intersects(baseBlock)) {
blocks[i].falling = false;
- blocks[i].y = baseBlock.y - baseBlock.height / 2 - blocks[i].height / 2 - towerHeight * 100; // Position relative to the growing tower
- // NEW: Trigger downward movement of the tower (visual effect)
+ blocks[i].y = baseBlock.y - baseBlock.height / 2 - blocks[i].height / 2 - towerHeight * 100;
towerHeight++;
LK.setScore(towerHeight);
scoreTxt.setText(LK.getScore());
- towerTargetY -= 100; // Move the target DOWN, making the tower appear to grow up
+ // Check if the stack exceeds 5 blocks
+ if (towerHeight > 5) {
+ // Remove the bottom block with a slide animation
+ var bottomBlock = blocks.shift();
+ tween(bottomBlock, {
+ x: 2048
+ }, {
+ duration: 1000,
+ onFinish: function onFinish() {
+ game.removeChild(bottomBlock);
+ }
+ });
+ // Adjust the y position of the remaining blocks
+ for (var j = 0; j < blocks.length; j++) {
+ blocks[j].y += 100;
+ }
+ // Decrease the tower height
+ towerHeight--;
+ }
} 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])) {
blocks[i].falling = false;
blocks[i].y = blocks[j].y - blocks[j].height / 2 - blocks[i].height / 2;
- // NEW: Trigger downward movement of the tower (visual effect)
- towerHeight++;
- LK.setScore(towerHeight);
- scoreTxt.setText(LK.getScore());
- towerTargetY -= 100; // Move the target DOWN
break;
}
}
if (blocks[i].falling && blocks[i].y > 2732) {
@@ -135,60 +141,21 @@
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);
- // Position the new block at the top, ready to fall
- currentBlock.x = crane.x;
- currentBlock.y = crane.y + 200; // Position above the crane initially
- // Add rope between the block and crane
- rope = new Container();
- var ropeGraphics = rope.attachAsset('rope', {
- anchorX: 0.5,
- anchorY: 0.0,
- height: 200 // Initial height
- });
- rope.x = crane.x;
- rope.y = crane.y;
- rope.rotation = crane.rotation;
- game.addChild(rope);
- // Position the new block at the end of the rope
- var ropeLength = 200;
- currentBlock.x = crane.x + Math.sin(crane.rotation) * ropeLength;
- currentBlock.y = crane.y + Math.cos(crane.rotation) * ropeLength;
} else if (!currentBlock.falling) {
// Update the block's position to stay synced with the crane
- var ropeLength = 200;
- currentBlock.x = crane.x + Math.sin(crane.rotation) * ropeLength;
- currentBlock.y = crane.y + Math.cos(crane.rotation) * ropeLength;
- // Update the rope's position and rotation
- if (rope) {
- rope.x = crane.x;
- rope.y = crane.y;
- rope.rotation = crane.rotation;
- rope.children[0].height = ropeLength; // Update the height of the rope graphic
- // Adjust rope's position to connect to the block
- rope.pivot.y = 0; // Pivot at the top
- rope.scaleY = ropeLength / 100; // Scale the rope height
- rope.rotation = Math.atan2(currentBlock.y - crane.y, currentBlock.x - crane.x);
- }
+ 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();
- // NEW: Smoothly move the tower downwards (visual effect)
- if (baseBlock.y > towerTargetY) {
- // Check if the current position is above the target
- var dy = (towerTargetY - baseBlock.y) * towerMoveSpeed;
- baseBlock.y += dy;
- blocks.forEach(function (block) {
- block.y += dy;
- });
- if (rope) {
- rope.y += dy; // Move the rope down as well
- }
- }
};
// Event listener for dropping blocks
game.down = function (x, y, obj) {
dropBlock();