Code edit (2 edits merged)
Please save this source code
User prompt
Move level text to the top right corner
User prompt
Change it to the right and make it bigger
User prompt
Add level text top left with orange color
User prompt
Make the walls respawn only inside screen boundaries.
User prompt
Increase walls in level1 and speed.
User prompt
Make random respawning of wall1
User prompt
Fit the background image to all the screen
User prompt
Make the background fit to screen 800x800
User prompt
Add level 1 with background1 and 2 wall1 moving horizontally from right to left and from left to right.
Code edit (1 edits merged)
Please save this source code
User prompt
Respawn wall1 in level1 only
User prompt
Please fix the bug: 'ReferenceError: Wall5 is not defined' in or related to this line: 'if (level === 5 && game.children[i] instanceof Wall5 && player.intersects(game.children[i]) && game.children[i].visible) {' Line Number: 1243
User prompt
Remove wall1 from respawning in level2
User prompt
Remove Ensure function Wall1 objects are not respawning in level 2
User prompt
Remove vertical wall5
User prompt
Make only horizontal wall5 from left to right and another one left to right
User prompt
Don't respawn wall1 in level2
User prompt
Stop respawning wall1 in other level then level1
User prompt
Mall wall1 have same speed
User prompt
Increase speed
User prompt
Make the small wall1 big a bit
User prompt
Make the background1 behind all walls
User prompt
Reduce walls in level1
User prompt
Add collision to wall1
/**** * Classes ****/ // Create a DodgingObject class for objects in level 10 var DodgingObject = Container.expand(function () { var self = Container.call(this); // Attach a random shape asset to represent the dodging object var dodgingGraphics = self.attachAsset('shape' + Math.floor(Math.random() * 10), { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 100 + 50, // Random width between 50 and 150 height: Math.random() * 100 + 50 // Random height between 50 and 150 }); // Set dodging object speed self.speed = 4; // This is automatically called every game tick, if the dodging object is attached! self.update = function () { self.y += self.speed; // Move downwards if (self.y > game.height) { self.y = 0; // Reset position to the top self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } }; }); // Create a Gate class for level 1 var Gate = Container.expand(function () { var self = Container.call(this); // Attach a gate asset to represent the gate var gateGraphics = self.attachAsset('Gate', { anchorX: 0.5, anchorY: 0.5 }); // Set gate position self.x = game.width / 2; self.y = gateGraphics.height / 2; // Position the gate at the top of the screen // Add continuous rotation to the gate self.update = function () { gateGraphics.rotation += 0.05; // Rotate the gate by 0.05 radians per frame }; }); // Create a Player class var Player = Container.expand(function () { var self = Container.call(this); // Attach a shape asset to represent the player var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); // Set player speed self.speed = level >= 2 && level <= 10 ? 12 : 10; // This is automatically called every game tick, if the player is attached! self.update = function () { // Implement non-continuous movement self.moveTo = function (x, y) { var directionX = x - self.x; var directionY = y - self.y; var distance = Math.sqrt(directionX * directionX + directionY * directionY); if (distance > self.speed) { self.x += directionX / distance * self.speed; self.y += directionY / distance * self.speed; } else { self.x = x; self.y = y; } self.x = Math.max(self.width / 2, Math.min(game.width - self.width / 2, self.x)); self.y = Math.max(self.height / 2, Math.min(game.height - self.height / 2, self.y)); }; playerGraphics.rotation += 0.1; // Rotate the player by 0.1 radians per frame }; }); // Create a RandomShape class for shapes spawning from top and left var RandomShape = Container.expand(function () { var self = Container.call(this); // Attach a random shape asset to represent the shape var shapeGraphics = self.attachAsset('shape' + Math.floor(Math.random() * 10), { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200, // Random width between 0 and 200 height: Math.random() * 200 // Random height between 0 and 200 }); // Set shape speed self.speed = 2; // This is automatically called every game tick, if the shape is attached! self.update = function () { // Randomly decide the direction of the shape if (Math.random() < 0.5) { self.y += self.speed; } else { self.x += self.speed; } }; }); // Create a Wall class for walls with configurable movement and dimensions var Wall = Container.expand(function (options) { var self = Container.call(this); var wallGraphics = self.attachAsset(options.assetId, { anchorX: 0.5, anchorY: 0.5, width: options.width || Math.random() * 100 + 50, height: options.height || Math.random() * 600 + 300 }); self.speed = options.speed || 4; self.update = function () { if (options.direction === 'vertical') { self.y += self.speed; if (self.y > game.height) { self.y = Math.random() * (game.height - player.height - levelText.height) + levelText.height; // Respawn below level text and above player self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } } else if (options.direction === 'horizontal') { self.x += self.speed; if (self.x > game.width) { self.x = -self.width; // Increase distance by starting left of the screen self.y = Math.random() * (game.height - gate.height - player.height - player.height) + gate.height + player.height / 2; // Avoid respawning on the side of player or gate } } }; }); var Wall1 = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall1', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 250 + 150, height: Math.random() * 150 + 100 }); self.speed = 7; // Set a consistent speed for all Wall1 instances self.update = function () { self.x += self.speed; // Move rightwards if (self.x > game.width) { self.x = -self.width; // Reset position to the left self.y = Math.random() * (game.height - self.height) + self.height / 2; // Randomize vertical position } }; }); var Wall10 = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall10', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 400 + 200 }); self.speed = 8; self.update = function () { self.y += self.speed; if (self.y > game.height) { self.y = 0; self.x = Math.random() * (game.width - self.width) + self.width / 2; } }; }); var Wall1Left = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall1', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 100 + 50 }); self.speed = Math.random() * 3 + 6; // Random speed between 6 and 9 self.update = function () { self.x -= self.speed; // Move leftwards if (self.x < -self.width) { self.x = game.width; // Reset position to the right self.y = Math.random() * (game.height - self.height) + self.height / 2; // Randomize vertical position } }; }); // Create a Wall2 class for walls in level 2 var Wall2 = Container.expand(function () { var self = Container.call(this); // Attach a wall2 asset to represent the wall var wallGraphics = self.attachAsset('wall2', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 300 + 200, height: Math.random() * 1200 + 800 }); // Set wall speed self.speed = 8; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; // Move downwards if (self.y > game.height) { self.y = -self.height; // Increase distance by starting above the screen self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } }; }); // Create a Wall2Horizontal class for large horizontal walls moving from left to right in level 2 var Wall2Horizontal = Container.expand(function () { var self = Container.call(this); // Attach a wall2 asset to represent the wall var wallGraphics = self.attachAsset('wall2', { anchorX: 0.5, anchorY: 0.5, width: 400, // Reduce the width of the wall height: 75 // Reduce the height of the wall }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x += self.speed; // Move rightwards if (self.x > game.width) { self.x = 0; // Reset position to the left when reaching the right edge self.y = Math.random() * (game.height - self.height) + self.height / 2 + 300; // Further increase spacing between each respawning wall } }; }); // Create a Wall2HorizontalRight class for large horizontal walls moving from right to left in level 2 var Wall2HorizontalRight = Container.expand(function () { var self = Container.call(this); // Attach a wall2 asset to represent the wall var wallGraphics = self.attachAsset('wall2', { anchorX: 0.5, anchorY: 0.5, width: 400, // Reduce the width of the wall height: 75 // Reduce the height of the wall }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x -= self.speed; // Move leftwards if (self.x < -self.width) { self.x = game.width; // Reset position to the right when reaching the left edge self.y = Math.random() * (game.height - self.height) + self.height / 2 + 300; // Further increase spacing between each respawning wall } }; }); // Create a Wall3 class for walls respawning from bottom to top var Wall3 = Container.expand(function () { var self = Container.call(this); // Attach a wall3 asset to represent the wall var wallGraphics = self.attachAsset('wall3', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 150 + 100, height: Math.random() * 400 + 200 // Increase height for bottom side vertical walls in level 3 }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; // Move downwards if (self.y < 0) { self.y = game.height + self.height; // Increase distance by starting below the screen self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } }; }); // Create a Wall3Right class for walls spawning from right to left var Wall3Right = Container.expand(function () { var self = Container.call(this); // Attach a wall3 asset to represent the wall var wallGraphics = self.attachAsset('wall3', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, // Increase width for larger horizontal walls on the right side in level 3 height: Math.random() * 100 + 50 // Increase height }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x += self.speed; // Move rightwards }; }); var Wall4 = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall4', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); self.speed = 5; self.update = function () { self.x += self.speed; self.y += self.speed; if (self.x > game.width || self.y > game.height) { self.x = 0; self.y = 0; } if (player.intersects(self)) { LK.showGameOver(); } }; }); var Wall4Diagonal = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall4', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); self.speed = 5; self.update = function () { self.x += self.speed; self.y += self.speed; if (self.x > game.width * 0.9 || self.y > game.height * 0.9) { self.x = 0; self.y = 0; } // Check for collision with player if (player.intersects(self)) { LK.showGameOver(); } // Check for collision with player if (player.intersects(self)) { LK.showGameOver(); } }; }); var Wall4DiagonalBottomRight = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall4', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); self.speed = 5; self.update = function () { self.x -= self.speed; self.y -= self.speed; if (self.x < game.width * 0.1 || self.y < game.height * 0.1) { self.x = game.width; self.y = game.height; } // Check for collision with player if (player.intersects(self)) { LK.showGameOver(); } }; }); var Wall4Horizontal = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall4', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 400 + 200, height: Math.random() * 100 + 50 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -self.width * 1) { self.x = game.width; self.y = Math.random() * (game.height - self.height) + self.height / 2; } // Check for collision with player if (player.intersects(self)) { LK.showGameOver(); } }; }); var Wall4Vertical = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall4', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); self.speed = 5; self.update = function () { self.y += self.speed; if (self.y > game.height) { self.y = 0; self.x = Math.random() * (game.width - self.width) + self.width / 2; } if (player.intersects(self)) { LK.showGameOver(); } }; }); var Wall5Horizontal = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall5', { anchorX: 0.5, anchorY: 0.5, width: 300, // Fixed width for horizontal wall height: 100 // Fixed height for horizontal wall }); self.speed = 5; // Set speed for horizontal movement self.update = function () { self.x += self.speed; // Move rightwards if (self.x > game.width) { self.x = -self.width; // Reset position to the left self.y = Math.random() * (game.height - self.height) + self.height / 2; // Randomize vertical position } }; }); // Create a Wall6 class for walls respawning top to bottom var Wall6 = Container.expand(function () { var self = Container.call(this); // Attach a wall6 asset to represent the wall var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 100 + 50, height: Math.random() * 400 + 200 // Increase height to make walls taller }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x -= self.speed; // Move leftwards self.y += self.speed; // Move downwards if (self.x < 0 || self.y > game.height) { self.x = game.width; // Reset position to the right self.y = 0; // Reset position to the top } }; }); // Create a Wall6BottomRight class for walls respawning from bottom right corner var Wall6BottomRight = Container.expand(function () { var self = Container.call(this); // Attach a wall6 asset to represent the wall var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; // Move downwards if (self.y > game.height) { self.y = 0; // Reset position to the top self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } }; }); // Create a Wall6DiagonalTopLeft class for walls moving diagonally from top left to bottom right var Wall6DiagonalTopLeft = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); self.speed = 6; self.update = function () { self.x += self.speed; // Move rightwards self.y += self.speed; // Move downwards if (self.x > game.width || self.y > game.height) { self.x = 0; // Reset position to the left self.y = 0; // Reset position to the top } }; }); // Create a Wall6DiagonalTopRight class for walls moving diagonally from top right to bottom left var Wall6DiagonalTopRight = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); self.speed = 6; self.update = function () { self.x -= self.speed; // Move leftwards self.y += self.speed; // Move downwards if (self.x < 0 || self.y > game.height) { self.x = game.width; // Reset position to the right self.y = 0; // Reset position to the top } }; }); // Create a Wall6Horizontal class for taller horizontal walls spawning from left to right var Wall6Horizontal = Container.expand(function () { var self = Container.call(this); // Attach a wall6 asset to represent the wall var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 400 + 200 // Make the wall wider and random }); // Set wall speed self.speed = 8; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x += self.speed; // Move rightwards if (self.x > game.width) { self.x = 0; // Reset position to the left when reaching the right edge self.y = Math.random() * (game.height - self.height) + self.height / 2 + 100; // Increase spacing between each respawning wall } }; }); // Create a Wall6HorizontalRight class for walls moving horizontally from right to left var Wall6HorizontalRight = Container.expand(function () { var self = Container.call(this); // Attach a wall6 asset to represent the wall var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 400 + 200 // Make the wall wider and random }); // Set wall speed self.speed = 8; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x -= self.speed; // Move leftwards if (self.x < -self.width) { self.x = game.width; // Reset position to the right when reaching the left edge self.y = Math.random() * (game.height - self.height) + self.height / 2; // Randomize vertical position } }; }); // Create a Wall6TopLeft class for walls respawning randomly with random shapes from the top left corner var Wall6TopLeft = Container.expand(function () { var self = Container.call(this); // Attach a wall6 asset to represent the wall var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x += self.speed; // Move rightwards if (self.x > game.width) { self.x = 0; // Reset position to the left self.y = Math.random() * (game.height - self.height) + self.height / 2; // Randomize vertical position } }; }); // Create a Wall6TopRight class for walls moving diagonally from top right to bottom left var Wall6TopRight = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 }); self.speed = 6; self.update = function () { self.x -= self.speed; // Move leftwards self.y += self.speed; // Move downwards if (self.x < 0 || self.y > game.height) { self.x = game.width; // Reset position to the right self.y = 0; // Reset position to the top } }; }); // Create a Wall6Vertical class for taller vertical walls spawning from top to bottom var Wall6Vertical = Container.expand(function () { var self = Container.call(this); // Attach a wall6 asset to represent the wall var wallGraphics = self.attachAsset('wall6', { anchorX: 0.5, anchorY: 0.5, height: Math.random() * 400 + 200 // Make the wall taller and random }); // Set wall speed self.speed = 8; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; // Move downwards if (self.y > game.height) { self.y = 0; // Reset position to the top when reaching the bottom edge self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } }; }); // Create a Wall7 class for walls in level 7 var Wall7 = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall7', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 100 + 50, height: Math.random() * 100 + 50 }); self.speed = 10; self.update = function () { self.y += self.speed; if (self.y > game.height) { self.y = 0; self.x = Math.random() * (game.width - self.width) + self.width / 2; } }; }); var Wall7Diagonal = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall7', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 100 + 50, height: Math.random() * 100 + 50 }); self.speed = 6; self.update = function () { self.x += self.speed; self.y += self.speed; if (self.x > game.width || self.y > game.height) { self.x = 0; self.y = 0; } }; }); var Wall7Horizontal = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall7', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 100 + 50 }); self.speed = 6; self.update = function () { self.x += self.speed; if (self.x > game.width) { self.x = 0; self.y = Math.random() * (game.height - self.height) + self.height / 2; } }; }); var Wall7Vertical = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall7', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 100 + 50, height: Math.random() * 100 + 50 }); self.speed = 6; self.update = function () { self.y += self.speed; if (self.y > game.height) { self.y = 0; self.x = Math.random() * (game.width - self.width) + self.width / 2; } }; }); // Create a Wall8 class for walls in level 8 var Wall8 = Container.expand(function () { var self = Container.call(this); // Attach a wall8 asset to represent the wall var wallGraphics = self.attachAsset('wall8', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 400 + 200 // Increase height to make walls taller }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; // Move downwards if (self.y > game.height) { self.y = 0; // Reset position to the top self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } }; }); // Create a Wall8BottomRight class for walls spawning from bottom right var Wall8BottomRight = Container.expand(function () { var self = Container.call(this); // Attach a wall8 asset to represent the wall var wallGraphics = self.attachAsset('wall8', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 400 + 200, // Increase height to make walls taller rotation: -Math.PI / 6 // Rotate 30 degrees to the left }); // Set wall speed self.speed = 6; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x -= self.speed; // Move leftwards self.y -= self.speed; // Move upwards if (self.x < 0 || self.y < 0) { self.x = game.width - 100; // Reset position to the right with spacing self.y = game.height - 100; // Reset position to the bottom with spacing } }; }); // Create a Wall9 class for walls in level 9 var Wall9 = Container.expand(function () { var self = Container.call(this); // Attach a wall9 asset to represent the wall var wallGraphics = self.attachAsset('wall9', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 // Reduce height for level 9 }); // Set wall speed self.speed = 8; // Further increase speed for level 9 // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; // Move downwards if (self.y > game.height) { self.y = 0; // Reset position to the top self.x = Math.random() * (game.width - self.width) + self.width / 2; // Randomize horizontal position } }; }); // Create a Wall9LeftBottom class for walls respawning from left to bottom var Wall9LeftBottom = Container.expand(function () { var self = Container.call(this); // Attach a wall9 asset to represent the wall var wallGraphics = self.attachAsset('wall9', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100, // Reduce height for level 9 rotation: Math.PI / 6 // Rotate 60 degrees to the left }); // Set wall speed self.speed = 8; // Further increase speed for level 9 // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x -= self.speed; // Move leftwards self.y += self.speed; // Move downwards if (self.x < 0 || self.y > game.height) { self.x = game.width; // Reset position to the right self.y = 0; // Reset position to the top } }; }); // Create a Wall9LeftTop class for walls respawning from left to top var Wall9LeftTop = Container.expand(function () { var self = Container.call(this); // Attach a wall9 asset to represent the wall var wallGraphics = self.attachAsset('wall9', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100, height: Math.random() * 200 + 100 // Reduce height for level 9 }); // Set wall speed self.speed = 8; // Further increase speed for level 9 // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x += self.speed; // Move rightwards self.y -= self.speed; // Move upwards if (self.x > game.width || self.y < 0) { self.x = 0; // Reset position to the left self.y = game.height; // Reset position to the bottom } }; }); // Create a WallHorizontal class for taller horizontal walls spawning from right var WallHorizontal = Container.expand(function () { var self = Container.call(this); // Attach a wall asset to represent the wall var wallGraphics = self.attachAsset('wall1', { anchorX: 0.5, anchorY: 0.5, width: Math.random() * 200 + 100 // Reduce the width for level 1 }); // Set wall speed self.speed = 6; // Increase speed for level 1 walls // This is automatically called every game tick, if the wall is attached! self.update = function () { self.x -= self.speed; // Move leftwards if (self.x < 0) { self.x = game.width; // Reset position to the right when reaching the left edge // Calculate the vertical spacing for 4 lines in the middle var fixedPositions = [game.height / 2 - 5 * player.height, game.height / 2 - 2.5 * player.height, game.height / 2 + 2.5 * player.height, game.height / 2 + 5 * player.height]; var positionIndex = Math.floor(Math.random() * fixedPositions.length); self.y = fixedPositions[positionIndex]; // Removed additional spacing between each respawning wall } }; }); // Create a WallVertical class for vertical walls spawning from top var WallVertical = Container.expand(function () { var self = Container.call(this); // Attach a wall asset to represent the wall var wallGraphics = self.attachAsset('wall1', { anchorX: 0.5, anchorY: 0.5, height: Math.random() * 600 + 300 // Increase height to make walls even taller }); // Set wall speed self.speed = 8; // Increase speed for level 1 walls // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; }; }); // Create a WallVertical2 class for taller vertical walls spawning from top to bottom var WallVertical2 = Container.expand(function () { var self = Container.call(this); // Attach a wall asset to represent the wall var wallGraphics = self.attachAsset('wall1', { anchorX: 0.5, anchorY: 0.5, height: Math.random() * 200 + 100 // Make the wall taller and random }); // Set wall speed self.speed = 4; // This is automatically called every game tick, if the wall is attached! self.update = function () { self.y += self.speed; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ function _typeof2(o) { "@babel/helpers - typeof"; return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof2(o); } function _defineProperty2(e, r, t) { return (r = _toPropertyKey2(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey2(t) { var i = _toPrimitive2(t, "string"); return "symbol" == _typeof2(i) ? i : i + ""; } function _toPrimitive2(t, r) { if ("object" != _typeof2(t) || !t) { return t; } var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof2(i)) { return i; } throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) { return t; } var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) { return i; } throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var background = null; function setBackgroundForLevel(level) { if (background) { background.destroy(); // Remove the current background } if (level === 1) { background = game.addChildAt(LK.getAsset('Background1', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background1', {}).width * game.width / LK.getAsset('Background1', {}).width) / 2, y: (game.height - LK.getAsset('Background1', {}).height * game.height / LK.getAsset('Background1', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); // Ensure Background1 is behind all walls for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall1 || game.children[i] instanceof Wall1Left) { game.setChildIndex(game.children[i], game.children.length - 1); } } } else if (level === 2) { levelText.setText('Level 2'); // Update level text for level 2 background = game.addChildAt(LK.getAsset('Background2', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background2', {}).width * game.width / LK.getAsset('Background2', {}).width) / 2, y: (game.height - LK.getAsset('Background2', {}).height * game.height / LK.getAsset('Background2', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); } else if (level === 3) { levelText.setText('Level 3'); // Update level text for level 3 background = game.addChildAt(LK.getAsset('Background3', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background3', {}).width * game.width / LK.getAsset('Background3', {}).width) / 2, y: (game.height - LK.getAsset('Background3', {}).height * game.height / LK.getAsset('Background3', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); } else if (level === 4) { levelText.setText('Level 4'); // Update level text for level 4 background = game.addChildAt(LK.getAsset('Background4', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background4', {}).width * game.width / LK.getAsset('Background4', {}).width) / 2, y: (game.height - LK.getAsset('Background4', {}).height * game.height / LK.getAsset('Background4', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); // Add collision detection for all Wall4 objects in level 4 for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof Wall4Diagonal || game.children[i] instanceof Wall4DiagonalBottomRight || game.children[i] instanceof Wall4Horizontal) && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } } } else if (level === 5) { levelText.setText('Level 5'); // Update level text for level 5 background = game.addChildAt(LK.getAsset('Background5', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background5', {}).width * game.width / LK.getAsset('Background5', {}).width) / 2, y: (game.height - LK.getAsset('Background5', {}).height * game.height / LK.getAsset('Background5', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); for (var i = 0; i < 2; i++) { var newWall5Horizontal = new Wall5Horizontal(); newWall5Horizontal.x = 0; // Start from the left newWall5Horizontal.y = Math.random() * (game.height - newWall5Horizontal.height) + newWall5Horizontal.height / 2; game.addChild(newWall5Horizontal); } } else if (level === 6) { levelText.setText('Level 6'); // Update level text for level 6 background = game.addChildAt(LK.getAsset('Background6', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background6', {}).width * game.width / LK.getAsset('Background6', {}).width) / 2, y: (game.height - LK.getAsset('Background6', {}).height * game.height / LK.getAsset('Background6', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof Wall6 || game.children[i] instanceof Wall6Horizontal || game.children[i] instanceof Wall6HorizontalRight || game.children[i] instanceof Wall6DiagonalTopLeft || game.children[i] instanceof Wall6DiagonalTopRight || game.children[i] instanceof Wall6Vertical || game.children[i] instanceof Wall6BottomRight || game.children[i] instanceof Wall6TopLeft || game.children[i] instanceof Wall6TopRight) && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } } if (level === 6) { var newWall6Horizontal = new Wall6Horizontal(); newWall6Horizontal.x = 0; // Start from the left newWall6Horizontal.y = Math.random() * (game.height - newWall6Horizontal.height) + newWall6Horizontal.height / 2; game.addChild(newWall6Horizontal); var newWall6HorizontalRight = new Wall6HorizontalRight(); newWall6HorizontalRight.x = game.width; // Start from the right newWall6HorizontalRight.y = Math.random() * (game.height - newWall6HorizontalRight.height) + newWall6HorizontalRight.height / 2; game.addChild(newWall6HorizontalRight); // Add two Wall6 instances moving diagonally from top corners var newWall6DiagonalTopLeft = new Wall6DiagonalTopLeft(); newWall6DiagonalTopLeft.x = 0; // Start from the top left corner newWall6DiagonalTopLeft.y = 0; // Start from the top left corner game.addChild(newWall6DiagonalTopLeft); var newWall6DiagonalTopRight = new Wall6DiagonalTopRight(); newWall6DiagonalTopRight.x = game.width; // Start from the top right corner newWall6DiagonalTopRight.y = 0; // Start from the top right corner game.addChild(newWall6DiagonalTopRight); } // Removed conditions preventing Wall6 and Wall7 from respawning in levels 6 and 7 // Removed background5 from level 6 } else if (level === 7) { levelText.setText('Level 7'); // Update level text for level 7 background = game.addChildAt(LK.getAsset('Background7', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background7', {}).width * game.width / LK.getAsset('Background7', {}).width) / 2, y: (game.height - LK.getAsset('Background7', {}).height * game.height / LK.getAsset('Background7', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); if (level === 7) { var newWall7 = new Wall7(); newWall7.x = Math.random() * (game.width - newWall7.width) + newWall7.width / 2; newWall7.y = 0; game.addChild(newWall7); var newWall7 = new Wall7(); newWall7.x = Math.random() * (game.width - newWall7.width) + newWall7.width / 2; newWall7.y = 0; game.addChild(newWall7); var newWall7Horizontal = new Wall7Horizontal(); newWall7Horizontal.x = game.width; newWall7Horizontal.y = Math.random() * (game.height - newWall7Horizontal.height) + newWall7Horizontal.height / 2; game.addChild(newWall7Horizontal); var newWall7Diagonal = new Wall7Diagonal(); newWall7Diagonal.x = game.width; // Start from the right newWall7Diagonal.y = 0; // Start from the top game.addChild(newWall7Diagonal); var newWall7DiagonalTopLeft = new Wall7Diagonal(); newWall7DiagonalTopLeft.x = 0; // Start from the top left corner newWall7DiagonalTopLeft.y = 0; // Start from the top left corner game.addChild(newWall7DiagonalTopLeft); var newWall7DiagonalTopRight = new Wall7Diagonal(); newWall7DiagonalTopRight.x = game.width; // Start from the top right corner newWall7DiagonalTopRight.y = 0; // Start from the top right corner game.addChild(newWall7DiagonalTopRight); var newWall7DiagonalBottomRight = new Wall7Diagonal(); newWall7DiagonalBottomRight.x = game.width; // Start from the bottom right corner newWall7DiagonalBottomRight.y = game.height; // Start from the bottom right corner game.addChild(newWall7DiagonalBottomRight); var newWall7Vertical = new Wall7(); newWall7Vertical.x = Math.random() * (game.width - newWall7Vertical.width) + newWall7Vertical.width / 2; newWall7Vertical.y = 0; game.addChild(newWall7Vertical); for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof Wall7 || game.children[i] instanceof Wall7Horizontal || game.children[i] instanceof Wall7Diagonal || game.children[i] instanceof Wall7Vertical) && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } } } } else if (level === 8) { levelText.setText('Level 8'); // Update level text for level 8 background = game.addChildAt(LK.getAsset('Background8', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background8', {}).width * game.width / LK.getAsset('Background8', {}).width) / 2, y: (game.height - LK.getAsset('Background8', {}).height * game.height / LK.getAsset('Background8', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall7 || game.children[i] instanceof Wall7Horizontal || game.children[i] instanceof Wall7Diagonal) { game.children[i].visible = false; // Ensure Wall7 objects are not visible in level 8 } } } else if (level === 9) { levelText.setText('Level 9'); // Update level text for level 9 background = game.addChildAt(LK.getAsset('Background9', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background9', {}).width * game.width / LK.getAsset('Background9', {}).width) / 2, y: (game.height - LK.getAsset('Background9', {}).height * game.height / LK.getAsset('Background9', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); // Hide Wall8 and Wall8BottomRight objects for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall8 || game.children[i] instanceof Wall8BottomRight) { game.children[i].visible = false; } } } else if (level === 10) { levelText.setText('Level 10'); // Update level text for level 10 background = game.addChildAt(LK.getAsset('Background10', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background10', {}).width * game.width / LK.getAsset('Background10', {}).width) / 2, y: (game.height - LK.getAsset('Background10', {}).height * game.height / LK.getAsset('Background10', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); } if (background) { background.scale.set(game.width / background.width, game.height / background.height); } } setBackgroundForLevel(level); var level = 1; var levelChangeInterval = level === 5 ? 20 * 60 : 20 * 60; // 20 seconds for level 5, default for others var levelChangeTimer = 0; // Add event listeners for player movement game.down = function (x, y, obj) { LK.setTimeout(function () { targetPosition = { x: x, y: y }; // Set target position to the click position }, 1000); // Delay movement by 1 second }; var background; if (level === 1) { background = game.addChildAt(LK.getAsset('Background1', { anchorX: 0.0, anchorY: 0.0, width: game.width, height: game.height, x: 0, y: 0 }), 0); } else if (level === 3) { background = game.addChildAt(LK.getAsset('Background3', { anchorX: 0.0, anchorY: 0.0, x: (game.width - LK.getAsset('Background3', {}).width * game.width / LK.getAsset('Background3', {}).width) / 2, y: (game.height - LK.getAsset('Background3', {}).height * game.height / LK.getAsset('Background3', {}).height) / 2 }), 0); background.scale.set(game.width / background.width, game.height / background.height); } // Fit the background to the screen if it is defined if (background) { background.scale.set(game.width / background.width, game.height / background.height); background.width = game.width; background.height = game.height; } // Add level text on the top right corner var levelText = new Text2('Level 1', { size: 100, fill: 0x808080 // Grey color }); levelText.anchor.set(1, 0); // Sets anchor to the right of the top edge of the text. LK.gui.topRight.addChild(levelText); // Initialize 10 background assets for each level for (var i = 1; i <= 10; i++) {} // Add time text on the top left corner var timeText = new Text2('Time: 0', { size: 100, fill: 0x808080 // Grey color }); timeText.anchor.set(0, 0); // Sets anchor to the left of the top edge of the text. LK.gui.topLeft.addChild(timeText); // Initialize a player instance and attach it to the game var player = game.addChild(new Player()); player.x = game.width / 2; player.y = game.height - player.height / 2; // Position player in the middle of the bottom side for all levels if (level === 1) { // Add gate to level 1 var gate = new Gate(); game.addChild(gate); } else if (level === 2) { // Add gate to level 2 var gate = new Gate(); game.addChild(gate); } // Initialize dragNode var dragNode = null; // Initialize dragNode for player dragging // Removed maze regeneration and player reinitialization // Removed player movement and click event listener related to the maze // Function to generate a random maze // Add event listener for player movement // Removed game.down event listener as it's not needed // Update game loop to move player towards target position var targetPosition = null; game.update = function () { if (targetPosition) { var directionX = targetPosition.x - player.x; var directionY = targetPosition.y - player.y; var distance = Math.sqrt(directionX * directionX + directionY * directionY); if (distance > player.speed) { player.x += directionX / distance * player.speed; player.y += directionY / distance * player.speed; } else { player.x = targetPosition.x; player.y = targetPosition.y; targetPosition = null; // Stop moving once the target is reached } player.x = Math.max(player.width / 2, Math.min(game.width - player.width / 2, player.x)); player.y = Math.max(player.height / 2, Math.min(game.height - player.height / 2, player.y)); } // Check for collision between player and gate for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Gate && player.intersects(game.children[i])) { if (level === 10) { level = 1; // Reset to level 1 // Ensure Wall10 objects are not respawning when resetting to level 1 for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall10) { game.children[i].visible = false; } } } else { level++; // Advance to the next level } setBackgroundForLevel(level); // Change the background for the new level levelText.setText('Level ' + level); // Update the level text levelChangeTimer = 0; // Reset the timer player.x = game.width / 2; // Reset player position player.y = game.height - player.height / 2; break; } } for (var i = 0; i < game.children.length; i++) { if (level === 5 && game.children[i] instanceof Wall5 && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } if (level === 1 && (game.children[i] instanceof Wall1 || game.children[i] instanceof Wall1Left) && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } } // Create random vertical and horizontal walls for wall1 in level 1 only if (level === 1 && LK.ticks % 240 == 0) { for (var i = 0; i < 2; i++) { var newWall1Left = new Wall1Left(); newWall1Left.x = 0; var fixedPositionsLeft = [game.height / 2 - 3 * player.height, game.height / 2 + 3 * player.height]; newWall1Left.y = fixedPositionsLeft[i]; game.addChild(newWall1Left); } for (var i = 0; i < 2; i++) { var newWall1 = new Wall1(); newWall1.x = game.width; var fixedPositions = [game.height / 2 - 3 * player.height, game.height / 2 + 3 * player.height]; newWall1.y = fixedPositions[i]; game.addChild(newWall1); } } else { // Ensure Wall1 objects are not respawning in levels other than 1 for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof WallVertical || game.children[i] instanceof WallHorizontal) && level !== 1) { game.children[i].visible = false; } if ((game.children[i] instanceof Wall1 || game.children[i] instanceof Wall1Left) && level === 2) { game.children[i].visible = false; // Ensure Wall1 objects are not visible in level 2 } // Ensure Wall2 objects are visible in level 2 and handle collisions for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall2 || game.children[i] instanceof Wall2Horizontal || game.children[i] instanceof Wall2HorizontalRight) { game.children[i].visible = level === 2; // Ensure visibility only in level 2 if (player.intersects(game.children[i]) && game.children[i].visible) { if (!game.isGameOver) { LK.showGameOver(); game.isGameOver = true; } break; } } } } } // Add wall3 to level 3 as objects respawning from bottom to top and right to left if (level === 3 && LK.ticks % 100 == 0) { for (var i = 0; i < 2; i++) { // Reduce the number of lines // Increase the number of lines var newWall3HorizontalLeft = new Wall3Right(); newWall3HorizontalLeft.x = 0; newWall3HorizontalLeft.y = Math.random() * (game.height - newWall3HorizontalLeft.height) + newWall3HorizontalLeft.height / 2; newWall3HorizontalLeft.speed = 10; // Further increase speed for level 3 game.addChild(newWall3HorizontalLeft); var newWall3HorizontalRight = new Wall3Right(); newWall3HorizontalRight.x = game.width; newWall3HorizontalRight.y = Math.random() * (game.height - newWall3HorizontalRight.height) + newWall3HorizontalRight.height / 2; newWall3HorizontalRight.speed = -10; // Further increase speed for level 3 game.addChild(newWall3HorizontalRight); } // Ensure Wall3 objects are visible in level 3 for (var i = 0; i < game.children.length; i++) {} } else if (level !== 3) { // Ensure Wall3 objects are not respawning in levels other than 3 for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof Wall3 || game.children[i] instanceof Wall3Right) && level !== 3) { game.children[i].visible = false; } } } // Add collision detection for Wall3 and Wall3Right in level 3 for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof Wall3 || game.children[i] instanceof Wall3Right) && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } } // Add Wall4 objects to level 4 with horizontal spawning from left to right if (level === 4 && LK.ticks % 120 == 0) { var newWall4DiagonalBottomLeft = new Wall4Diagonal(); newWall4DiagonalBottomLeft.x = 0; // Start from the bottom left corner newWall4DiagonalBottomLeft.y = game.height; // Start from the bottom left corner game.addChild(newWall4DiagonalBottomLeft); var newWall4DiagonalBottomRight = new Wall4DiagonalBottomRight(); newWall4DiagonalBottomRight.x = game.width; // Start from the bottom right corner newWall4DiagonalBottomRight.y = game.height; // Start from the bottom right corner game.addChild(newWall4DiagonalBottomRight); var newWall4Horizontal = new Wall4Horizontal(); newWall4Horizontal.x = game.width; // Start from the right newWall4Horizontal.y = Math.random() * (game.height - newWall4Horizontal.height) + newWall4Horizontal.height / 2; game.addChild(newWall4Horizontal); // Increase tick interval for more spacing if (level !== 5) { var newWall4Diagonal = new Wall4Diagonal(); newWall4Diagonal.x = 0; // Start from the top left corner newWall4Diagonal.y = 0; // Start from the top left corner game.addChild(newWall4Diagonal); } // Add collision detection for all Wall4 objects in level 4 for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof Wall4Diagonal || game.children[i] instanceof Wall4DiagonalBottomRight || game.children[i] instanceof Wall4Horizontal) && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } } // Reduce frequency by increasing tick interval // Removed Wall4 related code // Add multiple vertical walls } else if (level !== 4) { // Ensure Wall4 objects are not visible in levels other than 4 for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall4 || game.children[i] instanceof Wall4Diagonal || game.children[i] instanceof Wall4DiagonalBottomRight || game.children[i] instanceof Wall4Horizontal || game.children[i] instanceof Wall4Vertical) { game.children[i].visible = false; } } } else if (level === 5) { // Remove Wall4 and Wall4Vertical objects in level 5 for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Wall4 || game.children[i] instanceof Wall4Vertical) { game.children[i].destroy(); // Remove the wall from the game game.children.splice(i, 1); // Remove the wall from the children array } } } else {} // Add Wall6Vertical and Wall6Horizontal objects to level 6 if (level === 7 && levelChangeTimer === 0) { levelChangeTimer = 1; // Start the timer when level 7 begins if (LK.ticks % 100 == 0) { var newWall7 = new Wall7(); newWall7.x = Math.random() * (game.width - newWall7.width) + newWall7.width / 2; newWall7.y = 0; game.addChild(newWall7); var newWall7Horizontal = new Wall7Horizontal(); newWall7Horizontal.x = game.width; newWall7Horizontal.y = Math.random() * (game.height - newWall7Horizontal.height) + newWall7Horizontal.height / 2; game.addChild(newWall7Horizontal); var newWall7Diagonal = new Wall7Diagonal(); newWall7Diagonal.x = game.width; // Start from the right newWall7Diagonal.y = 0; // Start from the top game.addChild(newWall7Diagonal); } // Add Wall6Horizontal objects to level 6 with horizontal spawning from left to right if (level === 6 && LK.ticks % 100 == 0 && level !== 7) { var newWall6Horizontal = new Wall6Horizontal(); newWall6Horizontal.x = 0; // Start from the left newWall6Horizontal.y = Math.random() * (game.height - newWall6Horizontal.height) + newWall6Horizontal.height / 2; game.addChild(newWall6Horizontal); var newWall6HorizontalRight = new Wall6HorizontalRight(); newWall6HorizontalRight.x = game.width; // Start from the right newWall6HorizontalRight.y = Math.random() * (game.height - newWall6HorizontalRight.height) + newWall6HorizontalRight.height / 2; game.addChild(newWall6HorizontalRight); var newWall6DiagonalTopLeft = new Wall6DiagonalTopLeft(); newWall6DiagonalTopLeft.x = 0; // Start from the top left corner newWall6DiagonalTopLeft.y = 0; // Start from the top left corner game.addChild(newWall6DiagonalTopLeft); var newWall6DiagonalTopRight = new Wall6DiagonalTopRight(); newWall6DiagonalTopRight.x = game.width; // Start from the top right corner newWall6DiagonalTopRight.y = 0; // Start from the top right corner game.addChild(newWall6DiagonalTopRight); var newWall6 = new Wall6(); newWall6.x = Math.random() * (game.width - newWall6.width) + newWall6.width / 2; newWall6.y = 0; game.addChild(newWall6); } else { // Ensure Wall6 objects are visible in level 6 for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall6 || game.children[i] instanceof Wall6Horizontal || game.children[i] instanceof Wall6HorizontalRight || game.children[i] instanceof Wall6DiagonalTopLeft || game.children[i] instanceof Wall6DiagonalTopRight) { game.children[i].visible = level === 6; } } // Ensure Wall7 objects are visible in level 7 for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall7 || game.children[i] instanceof Wall7Horizontal || game.children[i] instanceof Wall7Diagonal) { game.children[i].visible = level === 7; } } } for (var i = 0; i < game.children.length; i++) { if (level === 7 && game.children[i] instanceof Wall7 && player.intersects(game.children[i]) && game.children[i].visible) { LK.showGameOver(); break; } if (level === 7 && LK.ticks % 100 == 0 && level !== 8) { var newWall7 = new Wall7(); newWall7.x = Math.random() * (game.width - newWall7.width) + newWall7.width / 2; newWall7.y = 0; game.addChild(newWall7); var newWall7Horizontal = new Wall7Horizontal(); newWall7Horizontal.x = game.width; newWall7Horizontal.y = Math.random() * (game.height - newWall7Horizontal.height) + newWall7Horizontal.height / 2; game.addChild(newWall7Horizontal); var newWall7Diagonal = new Wall7Diagonal(); newWall7Diagonal.x = game.width; // Start from the right newWall7Diagonal.y = 0; // Start from the top game.addChild(newWall7Diagonal); var newWall7DiagonalTopLeft = new Wall7Diagonal(); newWall7DiagonalTopLeft.x = 0; // Start from the top left corner newWall7DiagonalTopLeft.y = 0; // Start from the top left corner game.addChild(newWall7DiagonalTopLeft); var newWall7DiagonalTopRight = new Wall7Diagonal(); newWall7DiagonalTopRight.x = game.width; // Start from the top right corner newWall7DiagonalTopRight.y = 0; // Start from the top right corner game.addChild(newWall7DiagonalTopRight); var newWall7DiagonalBottomRight = new Wall7Diagonal(); newWall7DiagonalBottomRight.x = game.width; // Start from the bottom right corner newWall7DiagonalBottomRight.y = game.height; // Start from the bottom right corner game.addChild(newWall7DiagonalBottomRight); var newWall7 = new Wall7(); newWall7.x = Math.random() * (game.width - newWall7.width) + newWall7.width / 2; newWall7.y = 0; game.addChild(newWall7); } } } // Add Wall8 objects to level 8 if (level === 8 && LK.ticks % 100 == 0 && levelChangeTimer < levelChangeInterval) { // Remove existing Wall7 objects // Removed references to Wall7 and Wall7Horizontal as they are not defined // Add new Wall8 object var newWall8 = new Wall8(); newWall8.x = Math.random() * (game.width - newWall8.width) + newWall8.width / 2; newWall8.y = 0; game.addChild(newWall8); if (Math.random() < 0.5) { // 50% chance to spawn var newWall8BottomRight = new Wall8BottomRight(); newWall8BottomRight.x = game.width; newWall8BottomRight.y = game.height; game.addChild(newWall8BottomRight); } } // Add collision detection for Wall8 and Wall8BottomRight in level 8 for (var i = 0; i < game.children.length; i++) { if ((game.children[i] instanceof Wall8 || game.children[i] instanceof Wall8BottomRight) && player.intersects(game.children[i]) && game.children[i].visible && level !== 9) { LK.showGameOver(); break; } } // Add Wall9 objects to level 9 if (level === 9 && LK.ticks % 100 == 0 && levelChangeTimer > 60) { var newWall9 = new Wall9(); newWall9.x = Math.random() * (game.width - newWall9.width) + newWall9.width / 2; newWall9.y = 0; game.addChild(newWall9); if (Math.random() < 0.5) { // 50% chance to spawn Wall9LeftBottom var newWall9LeftBottom = new Wall9LeftBottom(); newWall9LeftBottom.x = 0; // Start from the left newWall9LeftBottom.y = game.height; // Start from the bottom game.addChild(newWall9LeftBottom); } // Hide Wall8 and Wall8BottomRight in level 9 for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof Wall8 || game.children[i] instanceof Wall8BottomRight) { game.children[i].visible = false; } } } else if (level === 10 && LK.ticks % 100 == 0) { // Reduce frequency by increasing tick interval for (var i = 0; i < 2; i++) { // Spawn two Wall10 instances var newWall10; var spawnCorner = Math.floor(Math.random() * 4); // Randomly choose a corner switch (spawnCorner) { case 0: // Top-left corner newWall10 = new Wall10(); newWall10.x = newWall10.width / 2; newWall10.y = newWall10.height / 2; newWall10.update = function () { this.x += this.speed; this.y += this.speed; if (this.x > game.width || this.y > game.height) { this.x = this.width / 2; this.y = this.height / 2; } }; break; case 1: // Top-right corner newWall10 = new Wall10(); newWall10.x = game.width - newWall10.width / 2; newWall10.y = newWall10.height / 2; newWall10.update = function () { this.x -= this.speed; this.y += this.speed; if (this.x < 0 || this.y > game.height) { this.x = game.width - this.width / 2; this.y = this.height / 2; } }; break; } game.addChild(newWall10); } } for (var i = 0; i < game.children.length; i++) { if (game.children[i] instanceof WallVertical || game.children[i] instanceof WallHorizontal || game.children[i] instanceof WallVertical2 || game.children[i] instanceof Wall6Vertical || game.children[i] instanceof Wall6Horizontal || game.children[i] instanceof Wall9 || game.children[i] instanceof Wall9LeftBottom || game.children[i] instanceof Wall9LeftTop || game.children[i] instanceof Wall8 && level !== 9 || game.children[i] instanceof Wall10) { if (level !== 9 && (game.children[i] instanceof Wall9 || game.children[i] instanceof Wall9LeftBottom || game.children[i] instanceof Wall9LeftTop)) { game.children[i].visible = false; } if (player.intersects(game.children[i]) && game.children[i].visible) { if (!(level === 2 && (game.children[i] instanceof WallVertical || game.children[i] instanceof WallHorizontal) || level === 4 && (game.children[i] instanceof Wall3 || game.children[i] instanceof Wall3Right) || level === 3 && (game.children[i] instanceof Wall3 || game.children[i] instanceof Wall3Right))) { LK.showGameOver(); break; } } } // Removed game over trigger when level 4 starts } // Increment the level change timer levelChangeTimer++; // Check if time in level 7 reaches 20 seconds if (level === 7 && levelChangeTimer >= 20 * 60) { levelChangeTimer = 0; // Reset the timer level++; // Increment the level setBackgroundForLevel(level); // Change the background for the new level levelText.setText('Level ' + level); // Update the level text } // Update the time text to show the current status time timeText.setText('Time: ' + Math.floor(levelChangeTimer / 60)); // Convert ticks to seconds // Check if it's time to change the level if (levelChangeTimer >= levelChangeInterval) { if (level === 10 || levelChangeTimer >= levelChangeInterval) { LK.showGameOver(); return; } levelChangeTimer = 0; // Reset the timer // Reset player position at the start of each new level // Removed player position reset during level change setBackgroundForLevel(level); // Change the background for the new level levelText.setText('Level ' + level); // Update the level text // Ensure player is not released until level changes player.visible = false; LK.setTimeout(function () { player.visible = true; }, 1000); // Delay to release player after level change } }; // Add event listeners for player movement // Define handleMove function function handleMove(x, y, obj) {} game.down = function (x, y, obj) { targetPosition = { x: player.x + (x - player.x) * 0.7, // Move 70% towards the click position y: player.y + (y - player.y) * 0.7 // Move 70% towards the click position }; }; game.up = function (x, y, obj) {}; // Removed game.move event listener as it's not needed // Removed player movement towards target position in game update game.up = function (x, y, obj) { dragNode = null; };
===================================================================
--- original.js
+++ change.js
@@ -1242,9 +1242,11 @@
for (var i = 0; i < game.children.length; i++) {
if ((game.children[i] instanceof WallVertical || game.children[i] instanceof WallHorizontal) && level !== 1) {
game.children[i].visible = false;
}
- // Ensure Wall1 objects are not respawning in level 2
+ if ((game.children[i] instanceof Wall1 || game.children[i] instanceof Wall1Left) && level === 2) {
+ game.children[i].visible = false; // Ensure Wall1 objects are not visible in level 2
+ }
// Ensure Wall2 objects are visible in level 2 and handle collisions
for (var i = 0; i < game.children.length; i++) {
if (game.children[i] instanceof Wall2 || game.children[i] instanceof Wall2Horizontal || game.children[i] instanceof Wall2HorizontalRight) {
game.children[i].visible = level === 2; // Ensure visibility only in level 2