/**** * Classes ****/ var Ground = Container.expand(function (x) { var self = Container.call(this); var groundGraphics = self.attachAsset('ground', { anchorX: 0, anchorY: 0 }); self.x = x; self.y = 2440; self.scrollSpeed = -8; self.update = function () { self.x += self.scrollSpeed; }; return self; }); var Obstacle = Container.expand(function (type, x, y) { var self = Container.call(this); self.type = type; var obstacleGraphics; if (type === 'spike') { obstacleGraphics = self.attachAsset('spike', { anchorX: 0.5, anchorY: 1.0 }); } else if (type === 'block') { obstacleGraphics = self.attachAsset('block', { anchorX: 0.5, anchorY: 1.0 }); } self.x = x; self.y = y; self.scrollSpeed = -8; self.update = function () { self.x += self.scrollSpeed; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 1.0 }); self.velocityY = 0; self.onGround = false; self.jumpPower = -25; self.gravity = 1.2; self.groundY = 2400; self.jump = function () { if (self.onGround) { self.velocityY = self.jumpPower; self.onGround = false; LK.getSound('jump').play(); } }; self.update = function () { // Apply gravity self.velocityY += self.gravity; self.y += self.velocityY; // Ground collision if (self.y >= self.groundY) { self.y = self.groundY; self.velocityY = 0; self.onGround = true; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var player; var obstacles = []; var grounds = []; var currentLevel = 1; var gameRunning = false; var levelStartX = 0; var nextObstacleX = 2500; // Level data - obstacles defined as [type, xOffset, yOffset] var levelData = { 1: [ // Easy start section ['spike', 2500, 2400], ['spike', 2800, 2400], ['block', 3200, 2320], ['spike', 3600, 2400], ['spike', 4000, 2400], ['block', 4400, 2240], ['spike', 4800, 2400], ['block', 5200, 2320], ['spike', 5600, 2400], ['spike', 6000, 2400], // Middle section - introducing patterns ['block', 6500, 2320], ['spike', 6900, 2400], ['spike', 7200, 2400], ['block', 7600, 2240], ['spike', 8000, 2400], ['block', 8400, 2320], ['spike', 8800, 2400], ['spike', 9100, 2400], ['block', 9500, 2320], ['spike', 9900, 2400], ['spike', 10300, 2400], ['block', 10700, 2240], ['spike', 11100, 2400], ['block', 11500, 2320], ['spike', 11900, 2400], // Extended section with gaps ['spike', 12400, 2400], ['block', 12800, 2320], ['spike', 13200, 2400], ['spike', 13600, 2400], ['block', 14000, 2240], ['spike', 14400, 2400], ['block', 14800, 2320], ['spike', 15200, 2400], ['spike', 15600, 2400], ['block', 16000, 2320], ['spike', 16400, 2400], ['spike', 16800, 2400], ['block', 17200, 2240], ['spike', 17600, 2400], ['block', 18000, 2320], // Final stretch ['spike', 18400, 2400], ['spike', 18700, 2400], ['block', 19100, 2320], ['spike', 19500, 2400], ['spike', 19900, 2400]], 2: [ // Intermediate difficulty start ['spike', 2500, 2400], ['block', 2800, 2320], ['spike', 3000, 2400], ['block', 3400, 2240], ['block', 3600, 2320], ['spike', 4000, 2400], ['spike', 4200, 2400], ['block', 4600, 2160], ['spike', 5000, 2400], ['block', 5400, 2320], ['spike', 5800, 2400], ['block', 6200, 2240], ['spike', 6600, 2400], ['spike', 6900, 2400], // More complex patterns ['block', 7300, 2320], ['block', 7500, 2240], ['spike', 7900, 2400], ['spike', 8200, 2400], ['block', 8600, 2160], ['spike', 9000, 2400], ['block', 9400, 2320], ['spike', 9800, 2400], ['block', 10200, 2240], ['spike', 10600, 2400], ['spike', 10900, 2400], ['block', 11300, 2320], ['spike', 11700, 2400], ['block', 12100, 2160], ['spike', 12500, 2400], // Challenging middle section ['block', 12900, 2240], ['block', 13100, 2320], ['spike', 13500, 2400], ['spike', 13800, 2400], ['block', 14200, 2160], ['spike', 14600, 2400], ['spike', 14900, 2400], ['block', 15300, 2320], ['spike', 15700, 2400], ['block', 16100, 2240], ['spike', 16500, 2400], ['block', 16900, 2160], ['spike', 17300, 2400], ['spike', 17600, 2400], ['block', 18000, 2320], // Extended finale ['spike', 18400, 2400], ['block', 18800, 2240], ['spike', 19200, 2400], ['spike', 19500, 2400], ['block', 19900, 2320], ['spike', 20300, 2400], ['spike', 20600, 2400], ['block', 21000, 2160], ['spike', 21400, 2400], ['spike', 21800, 2400]], 3: [ // Hard difficulty start ['spike', 2500, 2400], ['block', 2700, 2320], ['spike', 2900, 2400], ['block', 3200, 2240], ['spike', 3500, 2400], ['block', 3700, 2160], ['spike', 4000, 2400], ['spike', 4200, 2400], ['block', 4500, 2320], ['block', 4700, 2240], ['spike', 5100, 2400], ['block', 5400, 2160], ['spike', 5800, 2400], ['spike', 6100, 2400], // Dense obstacle patterns ['block', 6400, 2320], ['spike', 6700, 2400], ['block', 7000, 2240], ['spike', 7300, 2400], ['block', 7600, 2160], ['spike', 7900, 2400], ['spike', 8200, 2400], ['block', 8500, 2320], ['spike', 8800, 2400], ['block', 9100, 2240], ['spike', 9400, 2400], ['block', 9700, 2160], ['spike', 10000, 2400], ['spike', 10300, 2400], ['block', 10600, 2320], // Very challenging section ['spike', 10900, 2400], ['block', 11200, 2240], ['block', 11400, 2160], ['spike', 11700, 2400], ['spike', 12000, 2400], ['block', 12300, 2320], ['spike', 12600, 2400], ['block', 12900, 2240], ['spike', 13200, 2400], ['block', 13500, 2160], ['spike', 13800, 2400], ['spike', 14100, 2400], ['block', 14400, 2320], ['spike', 14700, 2400], ['block', 15000, 2240], // Expert level obstacles ['spike', 15300, 2400], ['block', 15600, 2160], ['spike', 15900, 2400], ['spike', 16200, 2400], ['block', 16500, 2320], ['spike', 16800, 2400], ['block', 17100, 2240], ['spike', 17400, 2400], ['block', 17700, 2160], ['spike', 18000, 2400], ['spike', 18300, 2400], ['block', 18600, 2320], ['spike', 18900, 2400], ['block', 19200, 2240], ['spike', 19500, 2400], // Final gauntlet ['block', 19800, 2160], ['spike', 20100, 2400], ['spike', 20400, 2400], ['block', 20700, 2320], ['spike', 21000, 2400], ['block', 21300, 2240], ['spike', 21600, 2400], ['spike', 21900, 2400], ['block', 22200, 2160], ['spike', 22500, 2400], ['spike', 22800, 2400], ['block', 23100, 2320], ['spike', 23400, 2400], ['spike', 23700, 2400]] }; // UI Elements var levelText = new Text2('Level 1', { size: 80, fill: 0xFFFFFF }); levelText.anchor.set(0.5, 0); LK.gui.top.addChild(levelText); levelText.y = 100; function initializeLevel() { // Clear existing obstacles and grounds for (var i = obstacles.length - 1; i >= 0; i--) { obstacles[i].destroy(); obstacles.splice(i, 1); } for (var j = grounds.length - 1; j >= 0; j--) { grounds[j].destroy(); grounds.splice(j, 1); } // Create player if (player) { player.destroy(); } player = game.addChild(new Player()); player.x = 300; player.y = 2400; // Create ground tiles for (var g = 0; g < 80; g++) { var ground = game.addChild(new Ground(g * 100)); grounds.push(ground); } // Create obstacles for current level var levelObstacles = levelData[currentLevel]; if (levelObstacles) { for (var o = 0; o < levelObstacles.length; o++) { var obstacleData = levelObstacles[o]; var obstacle = game.addChild(new Obstacle(obstacleData[0], obstacleData[1], obstacleData[2])); obstacles.push(obstacle); } } gameRunning = true; levelText.setText('Level ' + currentLevel); } function restartLevel() { LK.getSound('death').play(); LK.effects.flashScreen(0xFF0000, 500); LK.setTimeout(function () { initializeLevel(); }, 600); } function nextLevel() { currentLevel++; if (currentLevel > 3) { LK.showYouWin(); return; } LK.setTimeout(function () { initializeLevel(); }, 1000); } function checkLevelComplete() { var furthestObstacle = 0; for (var i = 0; i < obstacles.length; i++) { if (obstacles[i].x > furthestObstacle) { furthestObstacle = obstacles[i].x; } } // If player has passed all obstacles if (player.x > furthestObstacle + 200) { gameRunning = false; nextLevel(); } } // Initialize first level initializeLevel(); game.down = function (x, y, obj) { if (gameRunning && player) { player.jump(); } }; game.update = function () { if (!gameRunning) return; // Check for collisions for (var i = obstacles.length - 1; i >= 0; i--) { var obstacle = obstacles[i]; if (player.intersects(obstacle)) { gameRunning = false; restartLevel(); return; } // Remove obstacles that are off screen if (obstacle.x < -200) { obstacle.destroy(); obstacles.splice(i, 1); } } // Remove ground tiles that are off screen and add new ones for (var j = grounds.length - 1; j >= 0; j--) { var ground = grounds[j]; if (ground.x < -200) { ground.destroy(); grounds.splice(j, 1); } } // Add new ground tiles as needed while (grounds.length < 80) { var lastGround = grounds[grounds.length - 1]; var newX = lastGround ? lastGround.x + 100 : 7800; var newGround = game.addChild(new Ground(newX)); grounds.push(newGround); } checkLevelComplete(); };
===================================================================
--- original.js
+++ change.js
@@ -88,11 +88,37 @@
var levelStartX = 0;
var nextObstacleX = 2500;
// Level data - obstacles defined as [type, xOffset, yOffset]
var levelData = {
- 1: [['spike', 2500, 2400], ['spike', 2800, 2400], ['block', 3200, 2320], ['spike', 3600, 2400], ['spike', 4000, 2400], ['block', 4400, 2240], ['spike', 4800, 2400], ['block', 5200, 2320], ['spike', 5600, 2400]],
- 2: [['spike', 2500, 2400], ['block', 2800, 2320], ['spike', 3000, 2400], ['block', 3400, 2240], ['block', 3600, 2320], ['spike', 4000, 2400], ['spike', 4200, 2400], ['block', 4600, 2160], ['spike', 5000, 2400], ['block', 5400, 2320], ['spike', 5800, 2400]],
- 3: [['spike', 2500, 2400], ['block', 2700, 2320], ['spike', 2900, 2400], ['block', 3200, 2240], ['spike', 3500, 2400], ['block', 3700, 2160], ['spike', 4000, 2400], ['spike', 4200, 2400], ['block', 4500, 2320], ['block', 4700, 2240], ['spike', 5100, 2400], ['block', 5400, 2160], ['spike', 5800, 2400]]
+ 1: [
+ // Easy start section
+ ['spike', 2500, 2400], ['spike', 2800, 2400], ['block', 3200, 2320], ['spike', 3600, 2400], ['spike', 4000, 2400], ['block', 4400, 2240], ['spike', 4800, 2400], ['block', 5200, 2320], ['spike', 5600, 2400], ['spike', 6000, 2400],
+ // Middle section - introducing patterns
+ ['block', 6500, 2320], ['spike', 6900, 2400], ['spike', 7200, 2400], ['block', 7600, 2240], ['spike', 8000, 2400], ['block', 8400, 2320], ['spike', 8800, 2400], ['spike', 9100, 2400], ['block', 9500, 2320], ['spike', 9900, 2400], ['spike', 10300, 2400], ['block', 10700, 2240], ['spike', 11100, 2400], ['block', 11500, 2320], ['spike', 11900, 2400],
+ // Extended section with gaps
+ ['spike', 12400, 2400], ['block', 12800, 2320], ['spike', 13200, 2400], ['spike', 13600, 2400], ['block', 14000, 2240], ['spike', 14400, 2400], ['block', 14800, 2320], ['spike', 15200, 2400], ['spike', 15600, 2400], ['block', 16000, 2320], ['spike', 16400, 2400], ['spike', 16800, 2400], ['block', 17200, 2240], ['spike', 17600, 2400], ['block', 18000, 2320],
+ // Final stretch
+ ['spike', 18400, 2400], ['spike', 18700, 2400], ['block', 19100, 2320], ['spike', 19500, 2400], ['spike', 19900, 2400]],
+ 2: [
+ // Intermediate difficulty start
+ ['spike', 2500, 2400], ['block', 2800, 2320], ['spike', 3000, 2400], ['block', 3400, 2240], ['block', 3600, 2320], ['spike', 4000, 2400], ['spike', 4200, 2400], ['block', 4600, 2160], ['spike', 5000, 2400], ['block', 5400, 2320], ['spike', 5800, 2400], ['block', 6200, 2240], ['spike', 6600, 2400], ['spike', 6900, 2400],
+ // More complex patterns
+ ['block', 7300, 2320], ['block', 7500, 2240], ['spike', 7900, 2400], ['spike', 8200, 2400], ['block', 8600, 2160], ['spike', 9000, 2400], ['block', 9400, 2320], ['spike', 9800, 2400], ['block', 10200, 2240], ['spike', 10600, 2400], ['spike', 10900, 2400], ['block', 11300, 2320], ['spike', 11700, 2400], ['block', 12100, 2160], ['spike', 12500, 2400],
+ // Challenging middle section
+ ['block', 12900, 2240], ['block', 13100, 2320], ['spike', 13500, 2400], ['spike', 13800, 2400], ['block', 14200, 2160], ['spike', 14600, 2400], ['spike', 14900, 2400], ['block', 15300, 2320], ['spike', 15700, 2400], ['block', 16100, 2240], ['spike', 16500, 2400], ['block', 16900, 2160], ['spike', 17300, 2400], ['spike', 17600, 2400], ['block', 18000, 2320],
+ // Extended finale
+ ['spike', 18400, 2400], ['block', 18800, 2240], ['spike', 19200, 2400], ['spike', 19500, 2400], ['block', 19900, 2320], ['spike', 20300, 2400], ['spike', 20600, 2400], ['block', 21000, 2160], ['spike', 21400, 2400], ['spike', 21800, 2400]],
+ 3: [
+ // Hard difficulty start
+ ['spike', 2500, 2400], ['block', 2700, 2320], ['spike', 2900, 2400], ['block', 3200, 2240], ['spike', 3500, 2400], ['block', 3700, 2160], ['spike', 4000, 2400], ['spike', 4200, 2400], ['block', 4500, 2320], ['block', 4700, 2240], ['spike', 5100, 2400], ['block', 5400, 2160], ['spike', 5800, 2400], ['spike', 6100, 2400],
+ // Dense obstacle patterns
+ ['block', 6400, 2320], ['spike', 6700, 2400], ['block', 7000, 2240], ['spike', 7300, 2400], ['block', 7600, 2160], ['spike', 7900, 2400], ['spike', 8200, 2400], ['block', 8500, 2320], ['spike', 8800, 2400], ['block', 9100, 2240], ['spike', 9400, 2400], ['block', 9700, 2160], ['spike', 10000, 2400], ['spike', 10300, 2400], ['block', 10600, 2320],
+ // Very challenging section
+ ['spike', 10900, 2400], ['block', 11200, 2240], ['block', 11400, 2160], ['spike', 11700, 2400], ['spike', 12000, 2400], ['block', 12300, 2320], ['spike', 12600, 2400], ['block', 12900, 2240], ['spike', 13200, 2400], ['block', 13500, 2160], ['spike', 13800, 2400], ['spike', 14100, 2400], ['block', 14400, 2320], ['spike', 14700, 2400], ['block', 15000, 2240],
+ // Expert level obstacles
+ ['spike', 15300, 2400], ['block', 15600, 2160], ['spike', 15900, 2400], ['spike', 16200, 2400], ['block', 16500, 2320], ['spike', 16800, 2400], ['block', 17100, 2240], ['spike', 17400, 2400], ['block', 17700, 2160], ['spike', 18000, 2400], ['spike', 18300, 2400], ['block', 18600, 2320], ['spike', 18900, 2400], ['block', 19200, 2240], ['spike', 19500, 2400],
+ // Final gauntlet
+ ['block', 19800, 2160], ['spike', 20100, 2400], ['spike', 20400, 2400], ['block', 20700, 2320], ['spike', 21000, 2400], ['block', 21300, 2240], ['spike', 21600, 2400], ['spike', 21900, 2400], ['block', 22200, 2160], ['spike', 22500, 2400], ['spike', 22800, 2400], ['block', 23100, 2320], ['spike', 23400, 2400], ['spike', 23700, 2400]]
};
// UI Elements
var levelText = new Text2('Level 1', {
size: 80,