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
@@ -19,8 +19,9 @@
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;
@@ -38,8 +39,9 @@
});
self.angle = 0;
self.speed = 0.03;
self.direction = 1;
+ self.ropeLength = 200; // Define rope length
self.update = function () {
self.angle += self.speed * self.direction;
if (self.angle > 1.5 || self.angle < -1.5) {
self.direction *= -1;
@@ -51,20 +53,23 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x87CEEB // Sky blue background
+ backgroundColor: 0x87CEEB,
+ // Sky blue background
+ width: 2048,
+ height: 2732
});
/****
* 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;
+baseBlock.x = game.width / 2;
+baseBlock.y = game.height - baseBlock.height / 2;
+crane.x = game.width / 2;
crane.y = 50; // Move the crane up
var blocks = [];
var currentBlock = null;
var towerHeight = 0;
@@ -73,14 +78,17 @@
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
+// Camera settings
+var cameraFollowSpeed = 0.05; // Adjust for smoother camera movement
+var cameraOffset = 500; // Offset to keep the player in view
// 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
+ var horizontalSpeed = Math.sin(crane.rotation) * crane.speed * 500; // Adjust scaling factor as needed
currentBlock.momentum = horizontalSpeed;
blocks.push(currentBlock);
currentBlock = null;
}
@@ -92,46 +100,62 @@
continue;
}
if (blocks[i].intersects(baseBlock)) {
blocks[i].falling = false;
- blocks[i].y = baseBlock.y - baseBlock.height / 2 - blocks[i].height / 2 - towerHeight * 100;
+ blocks[i].y = baseBlock.y - baseBlock.height / 2 - blocks[i].height / 2;
towerHeight++;
LK.setScore(towerHeight);
scoreTxt.setText(LK.getScore());
} 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 (i !== j && blocks[i].falling && blocks[j].y < game.height && !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;
break;
}
}
- if (blocks[i].falling && blocks[i].y > 2732) {
+ if (blocks[i].falling && blocks[i].y > game.height) {
game.removeChild(blocks[i]);
blocks.splice(i, 1);
console.log("Block lost!");
}
}
}
}
+// Function to update camera position
+function updateCamera() {
+ var targetY;
+ if (blocks.length > 0) {
+ // Follow the latest placed block, with an offset
+ targetY = blocks[blocks.length - 1].y - cameraOffset;
+ } else {
+ // If no blocks are placed yet, keep the camera centered or at the initial position
+ targetY = game.height / 2; // Or some other initial position if desired
+ }
+ // Smoothly move the camera
+ game.camera.y += (targetY - game.camera.y) * cameraFollowSpeed;
+ // Ensure the camera never goes above the top of the game world
+ game.camera.y = Math.max(game.camera.y, 0);
+}
// Game update loop
game.update = function () {
crane.update();
- if (!currentBlock || currentBlock.falling) {
+ 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
+ currentBlock.x = crane.x + Math.sin(crane.rotation) * crane.ropeLength;
+ currentBlock.y = crane.y + Math.cos(crane.rotation) * crane.ropeLength;
game.addChild(currentBlock);
- } else {
+ } 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
+ currentBlock.x = crane.x + Math.sin(crane.rotation) * crane.ropeLength;
+ currentBlock.y = crane.y + Math.cos(crane.rotation) * crane.ropeLength;
}
if (currentBlock) {
currentBlock.update();
}
checkCollisions();
+ updateCamera(); // Update camera position every frame
};
// Event listener for dropping blocks
game.down = function (x, y, obj) {
dropBlock();