User prompt
Fix Bug: 'Uncaught ReferenceError: Pole is not defined' in or related to this line: 'var pole = game.addChild(new Pole());' Line Number: 121
User prompt
when colliding with cubes, the hero must move horizontally in sync with the cubes
User prompt
the left side of the pillar is an obstacle for the hero; upon meeting an obstacle, the hero moves horizontally synchronously with the pillars
User prompt
the left side of the cube is an obstacle for the hero; when meeting an obstacle, the hero moves horizontally along with the cubes
User prompt
the left side of the cube is an obstacle for the hero; when meeting an obstacle, the hero moves horizontally along with the cubes
User prompt
the left side of the cube is an obstacle for the hero; when meeting an obstacle, the hero moves horizontally along with the cubes
User prompt
the left side of the cube is an obstacle for the hero
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars; the obstacle and collision is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars; the obstacle and collision is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars; the obstacle and collision is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars; the obstacle and collision is the left side of the cube
User prompt
cancel auto-jump when encountering an obstacle the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
cancel auto-jump when encountering an obstacle the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
User prompt
increase the speed of falling cubes by 5 times
User prompt
double the speed at which cubes fall
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the pillar
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the pillar
User prompt
clarify the collision between the hero and the pillars
User prompt
Having encountered an obstacle, the hero must move horizontally along with the pillars, the obstacle is the left side of the cube
/****
* Classes
****/
// Class for individual cubes that can fall
var Cube = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('cube', {
anchorX: 0.5,
anchorY: 0.5
});
self.isFalling = false;
self.velocityY = 0; // Initial vertical velocity for falling cubes
self.update = function () {
if (self.isFalling) {
self.velocityY += 0.75; // Acceleration due to gravity increased by 50%
self.y += self.velocityY; // Fall speed with acceleration
}
};
});
// Class for the poles consisting of cubes
var Pole = Container.expand(function () {
var self = Container.call(this);
self.cubes = [];
self.addCube = function () {
var cube = new Cube();
cube.y = -(self.cubes.length * 100) - (self.cubes.length - 1) * 2;
self.addChild(cube);
self.cubes.push(cube);
};
self.makeCubesFall = function () {
for (var i = self.cubes.length - 1; i >= 0; i--) {
(function (index) {
LK.setTimeout(function () {
self.cubes[index].isFalling = true;
}, index * 250); // Delay between each cube falling
})(i);
}
};
self.isSliding = false;
self.slideDownUp = function () {
if (!self.isSliding) {
self.isSliding = true;
var initialY = self.y;
var step = 1;
var distance = 10;
var duration = 200;
var steps = duration / (1000 / 60);
var stepSize = distance / steps;
var currentStep = 0;
var slideInterval = LK.setInterval(function () {
if (currentStep < steps) {
self.y += stepSize;
currentStep++;
} else {
LK.clearInterval(slideInterval);
self.y = initialY;
self.isSliding = false;
}
}, 1000 / 60);
}
};
self.getHeight = function () {
return self.cubes.length * 100 + (self.cubes.length - 1) * 2;
};
});
// Class for the player's hero
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.isOnGround = false;
self.velocityY = 0;
self.jump = function () {
if (self.isOnGround) {
self.velocityY = -15;
self.isOnGround = false;
}
};
self.update = function () {
self.y += self.velocityY;
self.velocityY += 0.5; // Gravity effect
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
// Initialize assets used in the game.
// Initialize important asset arrays
var poles = [];
var hero;
// Create the hero
hero = game.addChild(new Hero());
hero.x = 2048 / 2;
hero.y = 2732 - 150; // Start above the bottom of the screen
// Create initial poles
function createInitialPoles() {
var poleSpacing = 2;
var poleWidth = 100 + poleSpacing;
var numPoles = Math.ceil(2048 / poleWidth);
for (var i = 0; i < numPoles; i++) {
var pole = game.addChild(new Pole());
pole.x = i * poleWidth;
pole.y = 2732 - 50; // Align base of pole with bottom of the screen and raise by 50 pixels
for (var j = 0; j < 10; j++) {
// Add 10 cubes to each pole to make them higher
pole.addCube();
}
poles.push(pole);
}
}
createInitialPoles();
// Event listener for jump action
game.on('down', function (obj) {
hero.jump();
});
// Game tick update
LK.on('tick', function () {
hero.update();
// Collision detection with poles
for (var i = 0; i < poles.length; i++) {
var pole = poles[i];
if (hero.intersects(pole) && hero.velocityY > 0) {
if (hero.x < pole.x) {
hero.x = pole.x - hero.width / 2;
} else if (hero.y + hero.height / 2 < pole.y) {
hero.y = pole.y - pole.getHeight() - hero.height / 2;
hero.isOnGround = true;
hero.velocityY = 0;
}
pole.slideDownUp();
}
}
// Remove off-screen poles and create new ones
var poleSpacing = 2;
var poleWidth = 100 + poleSpacing;
if (poles.length > 0 && poles[0].x + poleWidth / 2 < 0) {
poles[0].destroy();
poles.shift();
var newPole = game.addChild(new Pole());
newPole.x = poles[poles.length - 1].x + poleWidth;
newPole.y = 2732 - 50;
var cubesCount = Math.floor(Math.random() * 9) + 6; // Random number of cubes between 6 and 14 to make poles higher
for (var j = 0; j < cubesCount; j++) {
newPole.addCube();
}
poles.push(newPole);
}
// Move poles to the left to simulate hero running and make cubes fall after passing the middle
for (var i = 0; i < poles.length; i++) {
poles[i].x -= 5;
if (poles[i].x < 2048 / 2 && !poles[i].hasMadeCubesFall) {
poles[i].makeCubesFall();
poles[i].hasMadeCubesFall = true;
}
// Update each cube in the pole
for (var j = 0; j < poles[i].cubes.length; j++) {
poles[i].cubes[j].update();
}
}
});
girl sitting on Wrecking Ball, cartoon style.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
construction cranes on the sides of the frame, depth of field blur, cartoon style, black and white. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
"ALARM" text bubble, comic style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
the surface is gray, concrete with a black square in the center. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Wrecking Ball with eyes, cartoon style.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
the surface is red, concrete with a black square in the center.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
"ALARM" text bubble yellow, comic book style.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
the surface is yellow, concrete with a black square in the center. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.