/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { completedLevels: [], currentLevel: 0, attempts: 0, deaths: 0 }); /**** * Classes ****/ var Level = Container.expand(function () { var self = Container.call(this); self.obstacles = []; self.platforms = []; self.length = 0; self.id = 0; self.startX = 300; self.music = 'level1Music'; self.difficulty = 1; self.name = "Level 1"; self.init = function (levelData) { self.obstacles = []; self.platforms = []; self.id = levelData.id; self.length = levelData.length || 10000; self.music = levelData.music || 'level1Music'; self.difficulty = levelData.difficulty || 1; self.name = levelData.name || "Level " + self.id; // Create obstacles based on level data if (levelData.obstacles) { levelData.obstacles.forEach(function (obs) { var obstacle = new Obstacle(); obstacle.init(obs.type, obs.x, obs.y, obs.width, obs.height); self.addChild(obstacle); self.obstacles.push(obstacle); }); } // Create platforms based on level data if (levelData.platforms) { levelData.platforms.forEach(function (plat) { var platform = new Obstacle(); platform.init('platform', plat.x, plat.y, plat.width, plat.height); self.addChild(platform); self.platforms.push(platform); }); } // Always have a ground platform var ground = new Obstacle(); ground.init('ground', self.length / 2, 2700, self.length, 50); self.addChild(ground); self.platforms.push(ground); // Add decorative grid lines for (var i = 0; i < 10; i++) { var gridLine = self.attachAsset('gridLine', { anchorX: 0, anchorY: 0.5, y: 500 + i * 250, x: 0, alpha: 0.3 }); gridLine.width = self.length; } // Create finish line var finishLine = new Obstacle(); finishLine.init('platform', self.length - 100, 2650, 20, 100); finishLine.type = 'finish'; var finishGraphics = finishLine.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5, tint: 0x2ecc71 }); self.addChild(finishLine); self.obstacles.push(finishLine); }; self.checkCollisions = function (player) { // Check platform collisions player.isGrounded = false; for (var i = 0; i < self.platforms.length; i++) { var platform = self.platforms[i]; if (player.intersects(platform)) { // Only collide with top of platform if (player.y - player.height / 2 < platform.y - platform.height / 2) { player.y = platform.y - platform.height / 2 - player.height / 2; player.vy = 0; player.isGrounded = true; } } } // Check obstacle collisions for (var j = 0; j < self.obstacles.length; j++) { var obstacle = self.obstacles[j]; if (player.intersects(obstacle)) { if (obstacle.type === 'finish') { return 'finish'; } else if (obstacle.type === 'spike') { player.die(); return 'death'; } } } return null; }; return self; }); var LevelButton = Container.expand(function () { var self = Container.call(this); var box = self.attachAsset('levelBox', { anchorX: 0.5, anchorY: 0.5, width: 250, height: 180 }); var levelText = new Text2("1", { size: 90, fill: 0xFFFFFF }); levelText.anchor.set(0.5); var nameText = new Text2("Level 1", { size: 35, fill: 0xFFFFFF }); nameText.anchor.set(0.5); nameText.y = 60; self.addChild(levelText); self.addChild(nameText); self.level = 1; self.unlocked = true; self.init = function (level, name, unlocked) { self.level = level; self.unlocked = unlocked === undefined ? true : unlocked; levelText.setText(level); nameText.setText(name || "Level " + level); // Visual state if (!self.unlocked) { box.tint = 0x7f8c8d; levelText.alpha = 0.5; nameText.alpha = 0.5; } else { box.tint = 0x9b59b6; // Normal purple for all levels levelText.alpha = 1; nameText.alpha = 1; } // If completed, show green color if (storage.completedLevels.includes(level)) { box.tint = 0x27ae60; // Green for completed levels } box.alpha = 1.0; }; self.down = function () { if (self.unlocked) { tween(box, { scale: 0.9 }, { duration: 100 }); } }; self.up = function () { if (self.unlocked) { tween(box, { scale: 1 }, { duration: 100 }); LK.getSound('levelSelect').play(); startLevel(self.level); } }; return self; }); var Obstacle = Container.expand(function () { var self = Container.call(this); self.type = 'spike'; // Default type var graphics; self.init = function (type, x, y, width, height) { self.type = type || 'spike'; // Remove existing graphics if any if (graphics) { self.removeChild(graphics); } graphics = self.attachAsset(self.type, { anchorX: 0.5, anchorY: 0.5 }); if (width) { graphics.width = width; } if (height) { graphics.height = height; } self.x = x; self.y = y; }; return self; }); var Particle = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('particle', { anchorX: 0.5, anchorY: 0.5, alpha: 0.8 }); self.init = function (x, y, color) { self.x = x; self.y = y; self.vx = Math.random() * 10 - 5; self.vy = Math.random() * -15 - 5; self.gravity = 0.5; self.life = Math.random() * 30 + 30; self.maxLife = self.life; graphics.tint = color || 0x3498db; }; self.update = function () { self.x += self.vx; self.vy += self.gravity; self.y += self.vy; self.life--; // Fade out as life decreases graphics.alpha = self.life / self.maxLife * 0.8; graphics.scale.set(self.life / self.maxLife); if (self.life <= 0) { self.destroy(); return true; // Signal to remove from array } return false; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.vx = 0; self.vy = 0; self.speed = 8; self.gravity = 0.8; self.jumpForce = -20; self.isGrounded = false; self.isDead = false; self.autoMove = true; self.init = function () { self.vx = self.speed; self.vy = 0; self.isDead = false; graphics.rotation = 0; graphics.alpha = 1; }; self.update = function () { if (self.isDead) { return; } // Apply gravity self.vy += self.gravity; // Update position if (self.autoMove) { self.x += self.vx; } self.y += self.vy; // Rotate based on movement (for visual effect) graphics.rotation = 0; // Check if fallen off screen if (self.y > 2732) { self.die(); } }; self.jump = function () { if (self.isGrounded && !self.isDead) { self.vy = self.jumpForce; self.isGrounded = false; graphics.rotation += Math.PI / 2; // Rotate 90 degrees when jumping LK.getSound('jump').play(); return true; } return false; }; self.die = function () { if (!self.isDead) { self.isDead = true; LK.getSound('death').play(); createDeathParticles(self.x, self.y); tween(graphics, { alpha: 0 }, { duration: 300 }); storage.deaths++; storage.attempts++; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ // Game state var gameState = "menu"; // menu, playing, gameOver var player; var currentLevel; var camera = { x: 0, y: 0 }; var particles = []; var levels = []; var levelButtons = []; var lastTick = 0; // UI Elements var scoreText = new Text2("SCORE: 0", { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0, 0); scoreText.x = 150; scoreText.y = 50; LK.gui.top.addChild(scoreText); var levelNameText = new Text2("LEVEL 1", { size: 60, fill: 0xFFFFFF }); levelNameText.anchor.set(0.5, 0); levelNameText.y = 250; LK.gui.top.addChild(levelNameText); var deathCountText = new Text2("DEATHS: 0", { size: 40, fill: 0xFFFFFF }); deathCountText.anchor.set(1, 0); deathCountText.x = -150; deathCountText.y = 50; LK.gui.topRight.addChild(deathCountText); var messageText = new Text2("TAP TO JUMP", { size: 80, fill: 0xFFFFFF }); messageText.anchor.set(0.5, 0.5); LK.gui.center.addChild(messageText); messageText.alpha = 0; // Define all levels function defineLevels() { levels = [{ id: 1, name: "Simple Run", difficulty: 1, length: 8000, music: "level1Music", obstacles: [{ type: "spike", x: 2000, y: 2650 }, { type: "spike", x: 2300, y: 2650 }, { type: "spike", x: 3000, y: 2650 }, { type: "spike", x: 3300, y: 2650 }, { type: "spike", x: 3600, y: 2650 }, { type: "spike", x: 4500, y: 2650 }, { type: "spike", x: 4800, y: 2650 }, { type: "spike", x: 5500, y: 2650 }, { type: "spike", x: 6000, y: 2650 }, { type: "spike", x: 6300, y: 2650 }], platforms: [{ x: 2700, y: 2500, width: 300, height: 30 }, { x: 3800, y: 2400, width: 300, height: 30 }, { x: 4200, y: 2300, width: 300, height: 30 }, { x: 5200, y: 2500, width: 500, height: 30 }, { x: 6500, y: 2400, width: 300, height: 30 }] }, { id: 2, name: "Spike Madness", difficulty: 2, length: 10000, music: "level2Music", obstacles: [{ type: "spike", x: 1500, y: 2650 }, { type: "spike", x: 1600, y: 2650 }, { type: "spike", x: 2200, y: 2650 }, { type: "spike", x: 2500, y: 2650 }, { type: "spike", x: 2800, y: 2650 }, { type: "spike", x: 3100, y: 2650 }, { type: "spike", x: 3400, y: 2350 }, // On platform { type: "spike", x: 3700, y: 2650 }, { type: "spike", x: 4000, y: 2650 }, { type: "spike", x: 4300, y: 2650 }, { type: "spike", x: 4600, y: 2250 }, // On platform { type: "spike", x: 4900, y: 2250 }, // On platform { type: "spike", x: 5200, y: 2650 }, { type: "spike", x: 5500, y: 2650 }, { type: "spike", x: 5800, y: 2650 }, { type: "spike", x: 6100, y: 2650 }, { type: "spike", x: 6400, y: 2650 }, { type: "spike", x: 6700, y: 2400 }, // On platform { type: "spike", x: 7000, y: 2400 }, // On platform { type: "spike", x: 7300, y: 2400 }, // On platform { type: "spike", x: 7900, y: 2650 }, { type: "spike", x: 8200, y: 2650 }, { type: "spike", x: 8500, y: 2650 }], platforms: [{ x: 1800, y: 2500, width: 300, height: 30 }, { x: 3400, y: 2400, width: 500, height: 30 }, { x: 4600, y: 2300, width: 700, height: 30 }, { x: 7000, y: 2450, width: 1200, height: 30 }, { x: 8700, y: 2500, width: 400, height: 30 }] }, { id: 3, name: "The Final Dash", difficulty: 3, length: 12000, music: "level3Music", obstacles: [{ type: "spike", x: 1200, y: 2650 }, { type: "spike", x: 1500, y: 2650 }, { type: "spike", x: 1800, y: 2500 }, // On platform { type: "spike", x: 2100, y: 2500 }, // On platform { type: "spike", x: 2400, y: 2650 }, { type: "spike", x: 2700, y: 2650 }, { type: "spike", x: 3000, y: 2400 }, // On platform { type: "spike", x: 3300, y: 2400 }, // On platform { type: "spike", x: 3600, y: 2400 }, // On platform { type: "spike", x: 3900, y: 2650 }, { type: "spike", x: 4200, y: 2650 }, { type: "spike", x: 4500, y: 2650 }, { type: "spike", x: 4800, y: 2300 }, // On platform { type: "spike", x: 5100, y: 2300 }, // On platform { type: "spike", x: 5400, y: 2300 }, // On platform { type: "spike", x: 5700, y: 2650 }, { type: "spike", x: 6000, y: 2650 }, { type: "spike", x: 6300, y: 2650 }, { type: "spike", x: 6600, y: 2650 }, { type: "spike", x: 6900, y: 2650 }, { type: "spike", x: 7200, y: 2200 }, // On platform { type: "spike", x: 7500, y: 2200 }, // On platform { type: "spike", x: 7800, y: 2200 }, // On platform { type: "spike", x: 8100, y: 2650 }, { type: "spike", x: 8400, y: 2650 }, { type: "spike", x: 8700, y: 2650 }, { type: "spike", x: 9000, y: 2100 }, // On platform { type: "spike", x: 9300, y: 2100 }, // On platform { type: "spike", x: 9600, y: 2100 }, // On platform { type: "spike", x: 9900, y: 2650 }, { type: "spike", x: 10200, y: 2650 }, { type: "spike", x: 10500, y: 2650 }], platforms: [{ x: 1800, y: 2550, width: 600, height: 30 }, { x: 3300, y: 2450, width: 900, height: 30 }, { x: 5100, y: 2350, width: 900, height: 30 }, { x: 7500, y: 2250, width: 900, height: 30 }, { x: 9300, y: 2150, width: 900, height: 30 }, { x: 11000, y: 2500, width: 400, height: 30 }] }, { id: 4, name: "Sky Walker", difficulty: 4, length: 14000, music: "level4Music", obstacles: [{ type: "spike", x: 1000, y: 2650 }, { type: "spike", x: 1300, y: 2650 }, { type: "spike", x: 2200, y: 2450 }, { type: "spike", x: 2500, y: 2450 }, { type: "spike", x: 3400, y: 2250 }, { type: "spike", x: 3700, y: 2250 }, { type: "spike", x: 4000, y: 2250 }, { type: "spike", x: 4800, y: 2050 }, { type: "spike", x: 5100, y: 2050 }, { type: "spike", x: 5400, y: 2050 }, { type: "spike", x: 6200, y: 1850 }, { type: "spike", x: 6500, y: 1850 }, { type: "spike", x: 6800, y: 1850 }, { type: "spike", x: 7100, y: 1850 }, { type: "spike", x: 7800, y: 1650 }, { type: "spike", x: 8100, y: 1650 }, { type: "spike", x: 8400, y: 1650 }, { type: "spike", x: 9200, y: 1450 }, { type: "spike", x: 9500, y: 1450 }, { type: "spike", x: 9800, y: 1450 }, { type: "spike", x: 10600, y: 1250 }, { type: "spike", x: 10900, y: 1250 }, { type: "spike", x: 11200, y: 1250 }, { type: "spike", x: 12000, y: 2650 }, { type: "spike", x: 12300, y: 2650 }, { type: "spike", x: 12600, y: 2650 }, { type: "spike", x: 12900, y: 2650 }], platforms: [{ x: 1600, y: 2500, width: 400, height: 30 }, { x: 2500, y: 2500, width: 400, height: 30 }, { x: 3700, y: 2300, width: 600, height: 30 }, { x: 5100, y: 2100, width: 600, height: 30 }, { x: 6500, y: 1900, width: 800, height: 30 }, { x: 8100, y: 1700, width: 600, height: 30 }, { x: 9500, y: 1500, width: 600, height: 30 }, { x: 10900, y: 1300, width: 600, height: 30 }, { x: 11800, y: 2200, width: 200, height: 30 }, { x: 13200, y: 2500, width: 400, height: 30 }] }, { id: 5, name: "Nightmare Mode", difficulty: 5, length: 16000, music: "level5Music", obstacles: [{ type: "spike", x: 800, y: 2650 }, { type: "spike", x: 900, y: 2650 }, { type: "spike", x: 1000, y: 2650 }, { type: "spike", x: 1400, y: 2500 }, { type: "spike", x: 1500, y: 2500 }, { type: "spike", x: 1600, y: 2500 }, { type: "spike", x: 2000, y: 2350 }, { type: "spike", x: 2100, y: 2350 }, { type: "spike", x: 2200, y: 2350 }, { type: "spike", x: 2300, y: 2350 }, { type: "spike", x: 2800, y: 2200 }, { type: "spike", x: 2900, y: 2200 }, { type: "spike", x: 3000, y: 2200 }, { type: "spike", x: 3100, y: 2200 }, { type: "spike", x: 3200, y: 2200 }, { type: "spike", x: 3700, y: 2050 }, { type: "spike", x: 3800, y: 2050 }, { type: "spike", x: 3900, y: 2050 }, { type: "spike", x: 4000, y: 2050 }, { type: "spike", x: 4100, y: 2050 }, { type: "spike", x: 4200, y: 2050 }, { type: "spike", x: 4800, y: 1900 }, { type: "spike", x: 4900, y: 1900 }, { type: "spike", x: 5000, y: 1900 }, { type: "spike", x: 5100, y: 1900 }, { type: "spike", x: 5200, y: 1900 }, { type: "spike", x: 5300, y: 1900 }, { type: "spike", x: 5400, y: 1900 }, { type: "spike", x: 6000, y: 1750 }, { type: "spike", x: 6100, y: 1750 }, { type: "spike", x: 6200, y: 1750 }, { type: "spike", x: 6300, y: 1750 }, { type: "spike", x: 6400, y: 1750 }, { type: "spike", x: 6500, y: 1750 }, { type: "spike", x: 6600, y: 1750 }, { type: "spike", x: 6700, y: 1750 }, { type: "spike", x: 7400, y: 1600 }, { type: "spike", x: 7500, y: 1600 }, { type: "spike", x: 7600, y: 1600 }, { type: "spike", x: 7700, y: 1600 }, { type: "spike", x: 7800, y: 1600 }, { type: "spike", x: 7900, y: 1600 }, { type: "spike", x: 8000, y: 1600 }, { type: "spike", x: 8100, y: 1600 }, { type: "spike", x: 8200, y: 1600 }, { type: "spike", x: 8900, y: 1450 }, { type: "spike", x: 9000, y: 1450 }, { type: "spike", x: 9100, y: 1450 }, { type: "spike", x: 9200, y: 1450 }, { type: "spike", x: 9300, y: 1450 }, { type: "spike", x: 9400, y: 1450 }, { type: "spike", x: 9500, y: 1450 }, { type: "spike", x: 9600, y: 1450 }, { type: "spike", x: 9700, y: 1450 }, { type: "spike", x: 9800, y: 1450 }, { type: "spike", x: 10500, y: 1300 }, { type: "spike", x: 10600, y: 1300 }, { type: "spike", x: 10700, y: 1300 }, { type: "spike", x: 10800, y: 1300 }, { type: "spike", x: 10900, y: 1300 }, { type: "spike", x: 11000, y: 1300 }, { type: "spike", x: 11100, y: 1300 }, { type: "spike", x: 11200, y: 1300 }, { type: "spike", x: 11300, y: 1300 }, { type: "spike", x: 11400, y: 1300 }, { type: "spike", x: 11500, y: 1300 }, { type: "spike", x: 12200, y: 1150 }, { type: "spike", x: 12300, y: 1150 }, { type: "spike", x: 12400, y: 1150 }, { type: "spike", x: 12500, y: 1150 }, { type: "spike", x: 12600, y: 1150 }, { type: "spike", x: 12700, y: 1150 }, { type: "spike", x: 12800, y: 1150 }, { type: "spike", x: 12900, y: 1150 }, { type: "spike", x: 13000, y: 1150 }, { type: "spike", x: 13100, y: 1150 }, { type: "spike", x: 13200, y: 1150 }, { type: "spike", x: 13300, y: 1150 }, { type: "spike", x: 14000, y: 2650 }, { type: "spike", x: 14100, y: 2650 }, { type: "spike", x: 14200, y: 2650 }, { type: "spike", x: 14300, y: 2650 }, { type: "spike", x: 14400, y: 2650 }, { type: "spike", x: 14500, y: 2650 }, { type: "spike", x: 14600, y: 2650 }, { type: "spike", x: 14700, y: 2650 }, { type: "spike", x: 14800, y: 2650 }, { type: "spike", x: 14900, y: 2650 }, { type: "spike", x: 15000, y: 2650 }], platforms: [{ x: 1100, y: 2550, width: 200, height: 30 }, { x: 1500, y: 2550, width: 200, height: 30 }, { x: 2100, y: 2400, width: 400, height: 30 }, { x: 3000, y: 2250, width: 400, height: 30 }, { x: 4000, y: 2100, width: 400, height: 30 }, { x: 5100, y: 1950, width: 600, height: 30 }, { x: 6300, y: 1800, width: 800, height: 30 }, { x: 7700, y: 1650, width: 1000, height: 30 }, { x: 9300, y: 1500, width: 1000, height: 30 }, { x: 10900, y: 1350, width: 1200, height: 30 }, { x: 12700, y: 1200, width: 1200, height: 30 }, { x: 13800, y: 2200, width: 200, height: 30 }, { x: 15200, y: 2500, width: 400, height: 30 }] }, { id: 6, name: "Precision Master", difficulty: 6, length: 18000, music: "level6Music", obstacles: [{ type: "spike", x: 600, y: 2650 }, { type: "spike", x: 700, y: 2650 }, { type: "spike", x: 1200, y: 2500 }, { type: "spike", x: 1250, y: 2500 }, { type: "spike", x: 1300, y: 2500 }, { type: "spike", x: 1350, y: 2500 }, { type: "spike", x: 1850, y: 2350 }, { type: "spike", x: 1900, y: 2350 }, { type: "spike", x: 1950, y: 2350 }, { type: "spike", x: 2000, y: 2350 }, { type: "spike", x: 2050, y: 2350 }, { type: "spike", x: 2100, y: 2350 }, { type: "spike", x: 2650, y: 2200 }, { type: "spike", x: 2700, y: 2200 }, { type: "spike", x: 2750, y: 2200 }, { type: "spike", x: 2800, y: 2200 }, { type: "spike", x: 2850, y: 2200 }, { type: "spike", x: 2900, y: 2200 }, { type: "spike", x: 2950, y: 2200 }, { type: "spike", x: 3000, y: 2200 }, { type: "spike", x: 3600, y: 2050 }, { type: "spike", x: 3650, y: 2050 }, { type: "spike", x: 3700, y: 2050 }, { type: "spike", x: 3750, y: 2050 }, { type: "spike", x: 3800, y: 2050 }, { type: "spike", x: 3850, y: 2050 }, { type: "spike", x: 3900, y: 2050 }, { type: "spike", x: 3950, y: 2050 }, { type: "spike", x: 4000, y: 2050 }, { type: "spike", x: 4050, y: 2050 }, { type: "spike", x: 4700, y: 1900 }, { type: "spike", x: 4750, y: 1900 }, { type: "spike", x: 4800, y: 1900 }, { type: "spike", x: 4850, y: 1900 }, { type: "spike", x: 4900, y: 1900 }, { type: "spike", x: 4950, y: 1900 }, { type: "spike", x: 5000, y: 1900 }, { type: "spike", x: 5050, y: 1900 }, { type: "spike", x: 5100, y: 1900 }, { type: "spike", x: 5150, y: 1900 }, { type: "spike", x: 5200, y: 1900 }, { type: "spike", x: 5250, y: 1900 }, { type: "spike", x: 5950, y: 1750 }, { type: "spike", x: 6000, y: 1750 }, { type: "spike", x: 6050, y: 1750 }, { type: "spike", x: 6100, y: 1750 }, { type: "spike", x: 6150, y: 1750 }, { type: "spike", x: 6200, y: 1750 }, { type: "spike", x: 6250, y: 1750 }, { type: "spike", x: 6300, y: 1750 }, { type: "spike", x: 6350, y: 1750 }, { type: "spike", x: 6400, y: 1750 }, { type: "spike", x: 6450, y: 1750 }, { type: "spike", x: 6500, y: 1750 }, { type: "spike", x: 6550, y: 1750 }, { type: "spike", x: 6600, y: 1750 }, { type: "spike", x: 7350, y: 1600 }, { type: "spike", x: 7400, y: 1600 }, { type: "spike", x: 7450, y: 1600 }, { type: "spike", x: 7500, y: 1600 }, { type: "spike", x: 7550, y: 1600 }, { type: "spike", x: 7600, y: 1600 }, { type: "spike", x: 7650, y: 1600 }, { type: "spike", x: 7700, y: 1600 }, { type: "spike", x: 7750, y: 1600 }, { type: "spike", x: 7800, y: 1600 }, { type: "spike", x: 7850, y: 1600 }, { type: "spike", x: 7900, y: 1600 }, { type: "spike", x: 7950, y: 1600 }, { type: "spike", x: 8000, y: 1600 }, { type: "spike", x: 8050, y: 1600 }, { type: "spike", x: 8100, y: 1600 }, { type: "spike", x: 8900, y: 1450 }, { type: "spike", x: 8950, y: 1450 }, { type: "spike", x: 9000, y: 1450 }, { type: "spike", x: 9050, y: 1450 }, { type: "spike", x: 9100, y: 1450 }, { type: "spike", x: 9150, y: 1450 }, { type: "spike", x: 9200, y: 1450 }, { type: "spike", x: 9250, y: 1450 }, { type: "spike", x: 9300, y: 1450 }, { type: "spike", x: 9350, y: 1450 }, { type: "spike", x: 9400, y: 1450 }, { type: "spike", x: 9450, y: 1450 }, { type: "spike", x: 9500, y: 1450 }, { type: "spike", x: 9550, y: 1450 }, { type: "spike", x: 9600, y: 1450 }, { type: "spike", x: 9650, y: 1450 }, { type: "spike", x: 9700, y: 1450 }, { type: "spike", x: 9750, y: 1450 }, { type: "spike", x: 10550, y: 1300 }, { type: "spike", x: 10600, y: 1300 }, { type: "spike", x: 10650, y: 1300 }, { type: "spike", x: 10700, y: 1300 }, { type: "spike", x: 10750, y: 1300 }, { type: "spike", x: 10800, y: 1300 }, { type: "spike", x: 10850, y: 1300 }, { type: "spike", x: 10900, y: 1300 }, { type: "spike", x: 10950, y: 1300 }, { type: "spike", x: 11000, y: 1300 }, { type: "spike", x: 11050, y: 1300 }, { type: "spike", x: 11100, y: 1300 }, { type: "spike", x: 11150, y: 1300 }, { type: "spike", x: 11200, y: 1300 }, { type: "spike", x: 11250, y: 1300 }, { type: "spike", x: 11300, y: 1300 }, { type: "spike", x: 11350, y: 1300 }, { type: "spike", x: 11400, y: 1300 }, { type: "spike", x: 11450, y: 1300 }, { type: "spike", x: 11500, y: 1300 }, { type: "spike", x: 12350, y: 1150 }, { type: "spike", x: 12400, y: 1150 }, { type: "spike", x: 12450, y: 1150 }, { type: "spike", x: 12500, y: 1150 }, { type: "spike", x: 12550, y: 1150 }, { type: "spike", x: 12600, y: 1150 }, { type: "spike", x: 12650, y: 1150 }, { type: "spike", x: 12700, y: 1150 }, { type: "spike", x: 12750, y: 1150 }, { type: "spike", x: 12800, y: 1150 }, { type: "spike", x: 12850, y: 1150 }, { type: "spike", x: 12900, y: 1150 }, { type: "spike", x: 12950, y: 1150 }, { type: "spike", x: 13000, y: 1150 }, { type: "spike", x: 13050, y: 1150 }, { type: "spike", x: 13100, y: 1150 }, { type: "spike", x: 13150, y: 1150 }, { type: "spike", x: 13200, y: 1150 }, { type: "spike", x: 13250, y: 1150 }, { type: "spike", x: 13300, y: 1150 }, { type: "spike", x: 13350, y: 1150 }, { type: "spike", x: 13400, y: 1150 }, { type: "spike", x: 14250, y: 1000 }, { type: "spike", x: 14300, y: 1000 }, { type: "spike", x: 14350, y: 1000 }, { type: "spike", x: 14400, y: 1000 }, { type: "spike", x: 14450, y: 1000 }, { type: "spike", x: 14500, y: 1000 }, { type: "spike", x: 14550, y: 1000 }, { type: "spike", x: 14600, y: 1000 }, { type: "spike", x: 14650, y: 1000 }, { type: "spike", x: 14700, y: 1000 }, { type: "spike", x: 14750, y: 1000 }, { type: "spike", x: 14800, y: 1000 }, { type: "spike", x: 14850, y: 1000 }, { type: "spike", x: 14900, y: 1000 }, { type: "spike", x: 14950, y: 1000 }, { type: "spike", x: 15000, y: 1000 }, { type: "spike", x: 15050, y: 1000 }, { type: "spike", x: 15100, y: 1000 }, { type: "spike", x: 15150, y: 1000 }, { type: "spike", x: 15200, y: 1000 }, { type: "spike", x: 15250, y: 1000 }, { type: "spike", x: 15300, y: 1000 }, { type: "spike", x: 15350, y: 1000 }, { type: "spike", x: 15400, y: 1000 }, { type: "spike", x: 16300, y: 2650 }, { type: "spike", x: 16350, y: 2650 }, { type: "spike", x: 16400, y: 2650 }, { type: "spike", x: 16450, y: 2650 }, { type: "spike", x: 16500, y: 2650 }, { type: "spike", x: 16550, y: 2650 }, { type: "spike", x: 16600, y: 2650 }, { type: "spike", x: 16650, y: 2650 }, { type: "spike", x: 16700, y: 2650 }, { type: "spike", x: 16750, y: 2650 }, { type: "spike", x: 16800, y: 2650 }, { type: "spike", x: 16850, y: 2650 }, { type: "spike", x: 16900, y: 2650 }, { type: "spike", x: 16950, y: 2650 }, { type: "spike", x: 17000, y: 2650 }], platforms: [{ x: 900, y: 2550, width: 150, height: 30 }, { x: 1275, y: 2550, width: 150, height: 30 }, { x: 1975, y: 2400, width: 250, height: 30 }, { x: 2825, y: 2250, width: 350, height: 30 }, { x: 3825, y: 2100, width: 450, height: 30 }, { x: 5025, y: 1950, width: 450, height: 30 }, { x: 6275, y: 1800, width: 650, height: 30 }, { x: 7675, y: 1650, width: 850, height: 30 }, { x: 9325, y: 1500, width: 850, height: 30 }, { x: 10975, y: 1350, width: 1050, height: 30 }, { x: 12825, y: 1200, width: 1150, height: 30 }, { x: 14825, y: 1050, width: 1150, height: 30 }, { x: 16000, y: 2200, width: 200, height: 30 }, { x: 17200, y: 2500, width: 400, height: 30 }] }, { id: 7, name: "Shadow Runner", difficulty: 7, length: 20000, music: "level7Music", obstacles: [{ type: "spike", x: 500, y: 2650 }, { type: "spike", x: 600, y: 2650 }, { type: "spike", x: 700, y: 2650 }, { type: "spike", x: 1100, y: 2500 }, { type: "spike", x: 1200, y: 2500 }, { type: "spike", x: 1300, y: 2500 }, { type: "spike", x: 1400, y: 2500 }, { type: "spike", x: 1800, y: 2350 }, { type: "spike", x: 1900, y: 2350 }, { type: "spike", x: 2000, y: 2350 }, { type: "spike", x: 2100, y: 2350 }, { type: "spike", x: 2200, y: 2350 }, { type: "spike", x: 2600, y: 2200 }, { type: "spike", x: 2700, y: 2200 }, { type: "spike", x: 2800, y: 2200 }, { type: "spike", x: 2900, y: 2200 }, { type: "spike", x: 3000, y: 2200 }, { type: "spike", x: 3100, y: 2200 }, { type: "spike", x: 3500, y: 2050 }, { type: "spike", x: 3600, y: 2050 }, { type: "spike", x: 3700, y: 2050 }, { type: "spike", x: 3800, y: 2050 }, { type: "spike", x: 3900, y: 2050 }, { type: "spike", x: 4000, y: 2050 }, { type: "spike", x: 4100, y: 2050 }, { type: "spike", x: 4500, y: 1900 }, { type: "spike", x: 4600, y: 1900 }, { type: "spike", x: 4700, y: 1900 }, { type: "spike", x: 4800, y: 1900 }, { type: "spike", x: 4900, y: 1900 }, { type: "spike", x: 5000, y: 1900 }, { type: "spike", x: 5100, y: 1900 }, { type: "spike", x: 5200, y: 1900 }, { type: "spike", x: 5700, y: 1750 }, { type: "spike", x: 5800, y: 1750 }, { type: "spike", x: 5900, y: 1750 }, { type: "spike", x: 6000, y: 1750 }, { type: "spike", x: 6100, y: 1750 }, { type: "spike", x: 6200, y: 1750 }, { type: "spike", x: 6300, y: 1750 }, { type: "spike", x: 6400, y: 1750 }, { type: "spike", x: 6500, y: 1750 }, { type: "spike", x: 7000, y: 1600 }, { type: "spike", x: 7100, y: 1600 }, { type: "spike", x: 7200, y: 1600 }, { type: "spike", x: 7300, y: 1600 }, { type: "spike", x: 7400, y: 1600 }, { type: "spike", x: 7500, y: 1600 }, { type: "spike", x: 7600, y: 1600 }, { type: "spike", x: 7700, y: 1600 }, { type: "spike", x: 7800, y: 1600 }, { type: "spike", x: 7900, y: 1600 }, { type: "spike", x: 8500, y: 1450 }, { type: "spike", x: 8600, y: 1450 }, { type: "spike", x: 8700, y: 1450 }, { type: "spike", x: 8800, y: 1450 }, { type: "spike", x: 8900, y: 1450 }, { type: "spike", x: 9000, y: 1450 }, { type: "spike", x: 9100, y: 1450 }, { type: "spike", x: 9200, y: 1450 }, { type: "spike", x: 9300, y: 1450 }, { type: "spike", x: 9400, y: 1450 }, { type: "spike", x: 10000, y: 1300 }, { type: "spike", x: 10100, y: 1300 }, { type: "spike", x: 10200, y: 1300 }, { type: "spike", x: 10300, y: 1300 }, { type: "spike", x: 10400, y: 1300 }, { type: "spike", x: 10500, y: 1300 }, { type: "spike", x: 10600, y: 1300 }, { type: "spike", x: 10700, y: 1300 }, { type: "spike", x: 10800, y: 1300 }, { type: "spike", x: 10900, y: 1300 }, { type: "spike", x: 11000, y: 1300 }, { type: "spike", x: 11100, y: 1300 }, { type: "spike", x: 11700, y: 1150 }, { type: "spike", x: 11800, y: 1150 }, { type: "spike", x: 11900, y: 1150 }, { type: "spike", x: 12000, y: 1150 }, { type: "spike", x: 12100, y: 1150 }, { type: "spike", x: 12200, y: 1150 }, { type: "spike", x: 12300, y: 1150 }, { type: "spike", x: 12400, y: 1150 }, { type: "spike", x: 12500, y: 1150 }, { type: "spike", x: 12600, y: 1150 }, { type: "spike", x: 12700, y: 1150 }, { type: "spike", x: 12800, y: 1150 }, { type: "spike", x: 12900, y: 1150 }, { type: "spike", x: 13500, y: 1000 }, { type: "spike", x: 13600, y: 1000 }, { type: "spike", x: 13700, y: 1000 }, { type: "spike", x: 13800, y: 1000 }, { type: "spike", x: 13900, y: 1000 }, { type: "spike", x: 14000, y: 1000 }, { type: "spike", x: 14100, y: 1000 }, { type: "spike", x: 14200, y: 1000 }, { type: "spike", x: 14300, y: 1000 }, { type: "spike", x: 14400, y: 1000 }, { type: "spike", x: 14500, y: 1000 }, { type: "spike", x: 14600, y: 1000 }, { type: "spike", x: 14700, y: 1000 }, { type: "spike", x: 14800, y: 1000 }, { type: "spike", x: 15500, y: 850 }, { type: "spike", x: 15600, y: 850 }, { type: "spike", x: 15700, y: 850 }, { type: "spike", x: 15800, y: 850 }, { type: "spike", x: 15900, y: 850 }, { type: "spike", x: 16000, y: 850 }, { type: "spike", x: 16100, y: 850 }, { type: "spike", x: 16200, y: 850 }, { type: "spike", x: 16300, y: 850 }, { type: "spike", x: 16400, y: 850 }, { type: "spike", x: 16500, y: 850 }, { type: "spike", x: 16600, y: 850 }, { type: "spike", x: 16700, y: 850 }, { type: "spike", x: 16800, y: 850 }, { type: "spike", x: 16900, y: 850 }, { type: "spike", x: 17000, y: 850 }, { type: "spike", x: 17800, y: 2650 }, { type: "spike", x: 17900, y: 2650 }, { type: "spike", x: 18000, y: 2650 }, { type: "spike", x: 18100, y: 2650 }, { type: "spike", x: 18200, y: 2650 }, { type: "spike", x: 18300, y: 2650 }, { type: "spike", x: 18400, y: 2650 }, { type: "spike", x: 18500, y: 2650 }, { type: "spike", x: 18600, y: 2650 }, { type: "spike", x: 18700, y: 2650 }, { type: "spike", x: 18800, y: 2650 }, { type: "spike", x: 18900, y: 2650 }], platforms: [{ x: 800, y: 2550, width: 120, height: 30 }, { x: 1250, y: 2550, width: 120, height: 30 }, { x: 1950, y: 2400, width: 200, height: 30 }, { x: 2750, y: 2250, width: 300, height: 30 }, { x: 3700, y: 2100, width: 400, height: 30 }, { x: 4800, y: 1950, width: 400, height: 30 }, { x: 6000, y: 1800, width: 500, height: 30 }, { x: 7450, y: 1650, width: 700, height: 30 }, { x: 8950, y: 1500, width: 800, height: 30 }, { x: 10550, y: 1350, width: 900, height: 30 }, { x: 12250, y: 1200, width: 1100, height: 30 }, { x: 14150, y: 1050, width: 1100, height: 30 }, { x: 15950, y: 900, width: 1200, height: 30 }, { x: 17500, y: 2200, width: 200, height: 30 }, { x: 19000, y: 2500, width: 400, height: 30 }] }, { id: 8, name: "Velocity Maze", difficulty: 8, length: 22000, music: "level8Music", obstacles: [{ type: "spike", x: 400, y: 2650 }, { type: "spike", x: 500, y: 2650 }, { type: "spike", x: 600, y: 2650 }, { type: "spike", x: 700, y: 2650 }, { type: "spike", x: 1000, y: 2500 }, { type: "spike", x: 1100, y: 2500 }, { type: "spike", x: 1200, y: 2500 }, { type: "spike", x: 1300, y: 2500 }, { type: "spike", x: 1400, y: 2500 }, { type: "spike", x: 1700, y: 2350 }, { type: "spike", x: 1800, y: 2350 }, { type: "spike", x: 1900, y: 2350 }, { type: "spike", x: 2000, y: 2350 }, { type: "spike", x: 2100, y: 2350 }, { type: "spike", x: 2200, y: 2350 }, { type: "spike", x: 2300, y: 2350 }, { type: "spike", x: 2600, y: 2200 }, { type: "spike", x: 2700, y: 2200 }, { type: "spike", x: 2800, y: 2200 }, { type: "spike", x: 2900, y: 2200 }, { type: "spike", x: 3000, y: 2200 }, { type: "spike", x: 3100, y: 2200 }, { type: "spike", x: 3200, y: 2200 }, { type: "spike", x: 3300, y: 2200 }, { type: "spike", x: 3700, y: 2050 }, { type: "spike", x: 3800, y: 2050 }, { type: "spike", x: 3900, y: 2050 }, { type: "spike", x: 4000, y: 2050 }, { type: "spike", x: 4100, y: 2050 }, { type: "spike", x: 4200, y: 2050 }, { type: "spike", x: 4300, y: 2050 }, { type: "spike", x: 4400, y: 2050 }, { type: "spike", x: 4500, y: 2050 }, { type: "spike", x: 4900, y: 1900 }, { type: "spike", x: 5000, y: 1900 }, { type: "spike", x: 5100, y: 1900 }, { type: "spike", x: 5200, y: 1900 }, { type: "spike", x: 5300, y: 1900 }, { type: "spike", x: 5400, y: 1900 }, { type: "spike", x: 5500, y: 1900 }, { type: "spike", x: 5600, y: 1900 }, { type: "spike", x: 5700, y: 1900 }, { type: "spike", x: 5800, y: 1900 }, { type: "spike", x: 6200, y: 1750 }, { type: "spike", x: 6300, y: 1750 }, { type: "spike", x: 6400, y: 1750 }, { type: "spike", x: 6500, y: 1750 }, { type: "spike", x: 6600, y: 1750 }, { type: "spike", x: 6700, y: 1750 }, { type: "spike", x: 6800, y: 1750 }, { type: "spike", x: 6900, y: 1750 }, { type: "spike", x: 7000, y: 1750 }, { type: "spike", x: 7100, y: 1750 }, { type: "spike", x: 7200, y: 1750 }, { type: "spike", x: 7600, y: 1600 }, { type: "spike", x: 7700, y: 1600 }, { type: "spike", x: 7800, y: 1600 }, { type: "spike", x: 7900, y: 1600 }, { type: "spike", x: 8000, y: 1600 }, { type: "spike", x: 8100, y: 1600 }, { type: "spike", x: 8200, y: 1600 }, { type: "spike", x: 8300, y: 1600 }, { type: "spike", x: 8400, y: 1600 }, { type: "spike", x: 8500, y: 1600 }, { type: "spike", x: 8600, y: 1600 }, { type: "spike", x: 8700, y: 1600 }, { type: "spike", x: 9100, y: 1450 }, { type: "spike", x: 9200, y: 1450 }, { type: "spike", x: 9300, y: 1450 }, { type: "spike", x: 9400, y: 1450 }, { type: "spike", x: 9500, y: 1450 }, { type: "spike", x: 9600, y: 1450 }, { type: "spike", x: 9700, y: 1450 }, { type: "spike", x: 9800, y: 1450 }, { type: "spike", x: 9900, y: 1450 }, { type: "spike", x: 10000, y: 1450 }, { type: "spike", x: 10100, y: 1450 }, { type: "spike", x: 10200, y: 1450 }, { type: "spike", x: 10300, y: 1450 }, { type: "spike", x: 10700, y: 1300 }, { type: "spike", x: 10800, y: 1300 }, { type: "spike", x: 10900, y: 1300 }, { type: "spike", x: 11000, y: 1300 }, { type: "spike", x: 11100, y: 1300 }, { type: "spike", x: 11200, y: 1300 }, { type: "spike", x: 11300, y: 1300 }, { type: "spike", x: 11400, y: 1300 }, { type: "spike", x: 11500, y: 1300 }, { type: "spike", x: 11600, y: 1300 }, { type: "spike", x: 11700, y: 1300 }, { type: "spike", x: 11800, y: 1300 }, { type: "spike", x: 11900, y: 1300 }, { type: "spike", x: 12000, y: 1300 }, { type: "spike", x: 12400, y: 1150 }, { type: "spike", x: 12500, y: 1150 }, { type: "spike", x: 12600, y: 1150 }, { type: "spike", x: 12700, y: 1150 }, { type: "spike", x: 12800, y: 1150 }, { type: "spike", x: 12900, y: 1150 }, { type: "spike", x: 13000, y: 1150 }, { type: "spike", x: 13100, y: 1150 }, { type: "spike", x: 13200, y: 1150 }, { type: "spike", x: 13300, y: 1150 }, { type: "spike", x: 13400, y: 1150 }, { type: "spike", x: 13500, y: 1150 }, { type: "spike", x: 13600, y: 1150 }, { type: "spike", x: 13700, y: 1150 }, { type: "spike", x: 13800, y: 1150 }, { type: "spike", x: 14200, y: 1000 }, { type: "spike", x: 14300, y: 1000 }, { type: "spike", x: 14400, y: 1000 }, { type: "spike", x: 14500, y: 1000 }, { type: "spike", x: 14600, y: 1000 }, { type: "spike", x: 14700, y: 1000 }, { type: "spike", x: 14800, y: 1000 }, { type: "spike", x: 14900, y: 1000 }, { type: "spike", x: 15000, y: 1000 }, { type: "spike", x: 15100, y: 1000 }, { type: "spike", x: 15200, y: 1000 }, { type: "spike", x: 15300, y: 1000 }, { type: "spike", x: 15400, y: 1000 }, { type: "spike", x: 15500, y: 1000 }, { type: "spike", x: 15600, y: 1000 }, { type: "spike", x: 15700, y: 1000 }, { type: "spike", x: 16100, y: 850 }, { type: "spike", x: 16200, y: 850 }, { type: "spike", x: 16300, y: 850 }, { type: "spike", x: 16400, y: 850 }, { type: "spike", x: 16500, y: 850 }, { type: "spike", x: 16600, y: 850 }, { type: "spike", x: 16700, y: 850 }, { type: "spike", x: 16800, y: 850 }, { type: "spike", x: 16900, y: 850 }, { type: "spike", x: 17000, y: 850 }, { type: "spike", x: 17100, y: 850 }, { type: "spike", x: 17200, y: 850 }, { type: "spike", x: 17300, y: 850 }, { type: "spike", x: 17400, y: 850 }, { type: "spike", x: 17500, y: 850 }, { type: "spike", x: 17600, y: 850 }, { type: "spike", x: 17700, y: 850 }, { type: "spike", x: 18100, y: 700 }, { type: "spike", x: 18200, y: 700 }, { type: "spike", x: 18300, y: 700 }, { type: "spike", x: 18400, y: 700 }, { type: "spike", x: 18500, y: 700 }, { type: "spike", x: 18600, y: 700 }, { type: "spike", x: 18700, y: 700 }, { type: "spike", x: 18800, y: 700 }, { type: "spike", x: 18900, y: 700 }, { type: "spike", x: 19000, y: 700 }, { type: "spike", x: 19100, y: 700 }, { type: "spike", x: 19200, y: 700 }, { type: "spike", x: 19300, y: 700 }, { type: "spike", x: 19400, y: 700 }, { type: "spike", x: 19500, y: 700 }, { type: "spike", x: 19600, y: 700 }, { type: "spike", x: 19700, y: 700 }, { type: "spike", x: 19800, y: 700 }, { type: "spike", x: 20600, y: 2650 }, { type: "spike", x: 20700, y: 2650 }, { type: "spike", x: 20800, y: 2650 }, { type: "spike", x: 20900, y: 2650 }, { type: "spike", x: 21000, y: 2650 }, { type: "spike", x: 21100, y: 2650 }, { type: "spike", x: 21200, y: 2650 }, { type: "spike", x: 21300, y: 2650 }, { type: "spike", x: 21400, y: 2650 }, { type: "spike", x: 21500, y: 2650 }], platforms: [{ x: 750, y: 2550, width: 100, height: 30 }, { x: 1200, y: 2550, width: 100, height: 30 }, { x: 1950, y: 2400, width: 180, height: 30 }, { x: 2950, y: 2250, width: 280, height: 30 }, { x: 4100, y: 2100, width: 380, height: 30 }, { x: 5350, y: 1950, width: 380, height: 30 }, { x: 6700, y: 1800, width: 480, height: 30 }, { x: 8150, y: 1650, width: 580, height: 30 }, { x: 9700, y: 1500, width: 680, height: 30 }, { x: 11350, y: 1350, width: 780, height: 30 }, { x: 13050, y: 1200, width: 880, height: 30 }, { x: 14950, y: 1050, width: 980, height: 30 }, { x: 16950, y: 900, width: 1080, height: 30 }, { x: 18950, y: 750, width: 1180, height: 30 }, { x: 20300, y: 2200, width: 200, height: 30 }, { x: 21600, y: 2500, width: 400, height: 30 }] }, { id: 9, name: "Extreme Challenge", difficulty: 9, length: 24000, music: "level9Music", obstacles: [{ type: "spike", x: 300, y: 2650 }, { type: "spike", x: 400, y: 2650 }, { type: "spike", x: 500, y: 2650 }, { type: "spike", x: 600, y: 2650 }, { type: "spike", x: 700, y: 2650 }, { type: "spike", x: 900, y: 2500 }, { type: "spike", x: 1000, y: 2500 }, { type: "spike", x: 1100, y: 2500 }, { type: "spike", x: 1200, y: 2500 }, { type: "spike", x: 1300, y: 2500 }, { type: "spike", x: 1400, y: 2500 }, { type: "spike", x: 1600, y: 2350 }, { type: "spike", x: 1700, y: 2350 }, { type: "spike", x: 1800, y: 2350 }, { type: "spike", x: 1900, y: 2350 }, { type: "spike", x: 2000, y: 2350 }, { type: "spike", x: 2100, y: 2350 }, { type: "spike", x: 2200, y: 2350 }, { type: "spike", x: 2300, y: 2350 }, { type: "spike", x: 2500, y: 2200 }, { type: "spike", x: 2600, y: 2200 }, { type: "spike", x: 2700, y: 2200 }, { type: "spike", x: 2800, y: 2200 }, { type: "spike", x: 2900, y: 2200 }, { type: "spike", x: 3000, y: 2200 }, { type: "spike", x: 3100, y: 2200 }, { type: "spike", x: 3200, y: 2200 }, { type: "spike", x: 3300, y: 2200 }, { type: "spike", x: 3400, y: 2200 }, { type: "spike", x: 3600, y: 2050 }, { type: "spike", x: 3700, y: 2050 }, { type: "spike", x: 3800, y: 2050 }, { type: "spike", x: 3900, y: 2050 }, { type: "spike", x: 4000, y: 2050 }, { type: "spike", x: 4100, y: 2050 }, { type: "spike", x: 4200, y: 2050 }, { type: "spike", x: 4300, y: 2050 }, { type: "spike", x: 4400, y: 2050 }, { type: "spike", x: 4500, y: 2050 }, { type: "spike", x: 4600, y: 2050 }, { type: "spike", x: 4800, y: 1900 }, { type: "spike", x: 4900, y: 1900 }, { type: "spike", x: 5000, y: 1900 }, { type: "spike", x: 5100, y: 1900 }, { type: "spike", x: 5200, y: 1900 }, { type: "spike", x: 5300, y: 1900 }, { type: "spike", x: 5400, y: 1900 }, { type: "spike", x: 5500, y: 1900 }, { type: "spike", x: 5600, y: 1900 }, { type: "spike", x: 5700, y: 1900 }, { type: "spike", x: 5800, y: 1900 }, { type: "spike", x: 5900, y: 1900 }, { type: "spike", x: 6100, y: 1750 }, { type: "spike", x: 6200, y: 1750 }, { type: "spike", x: 6300, y: 1750 }, { type: "spike", x: 6400, y: 1750 }, { type: "spike", x: 6500, y: 1750 }, { type: "spike", x: 6600, y: 1750 }, { type: "spike", x: 6700, y: 1750 }, { type: "spike", x: 6800, y: 1750 }, { type: "spike", x: 6900, y: 1750 }, { type: "spike", x: 7000, y: 1750 }, { type: "spike", x: 7100, y: 1750 }, { type: "spike", x: 7200, y: 1750 }, { type: "spike", x: 7300, y: 1750 }, { type: "spike", x: 7500, y: 1600 }, { type: "spike", x: 7600, y: 1600 }, { type: "spike", x: 7700, y: 1600 }, { type: "spike", x: 7800, y: 1600 }, { type: "spike", x: 7900, y: 1600 }, { type: "spike", x: 8000, y: 1600 }, { type: "spike", x: 8100, y: 1600 }, { type: "spike", x: 8200, y: 1600 }, { type: "spike", x: 8300, y: 1600 }, { type: "spike", x: 8400, y: 1600 }, { type: "spike", x: 8500, y: 1600 }, { type: "spike", x: 8600, y: 1600 }, { type: "spike", x: 8700, y: 1600 }, { type: "spike", x: 8800, y: 1600 }, { type: "spike", x: 9000, y: 1450 }, { type: "spike", x: 9100, y: 1450 }, { type: "spike", x: 9200, y: 1450 }, { type: "spike", x: 9300, y: 1450 }, { type: "spike", x: 9400, y: 1450 }, { type: "spike", x: 9500, y: 1450 }, { type: "spike", x: 9600, y: 1450 }, { type: "spike", x: 9700, y: 1450 }, { type: "spike", x: 9800, y: 1450 }, { type: "spike", x: 9900, y: 1450 }, { type: "spike", x: 10000, y: 1450 }, { type: "spike", x: 10100, y: 1450 }, { type: "spike", x: 10200, y: 1450 }, { type: "spike", x: 10300, y: 1450 }, { type: "spike", x: 10400, y: 1450 }, { type: "spike", x: 10600, y: 1300 }, { type: "spike", x: 10700, y: 1300 }, { type: "spike", x: 10800, y: 1300 }, { type: "spike", x: 10900, y: 1300 }, { type: "spike", x: 11000, y: 1300 }, { type: "spike", x: 11100, y: 1300 }, { type: "spike", x: 11200, y: 1300 }, { type: "spike", x: 11300, y: 1300 }, { type: "spike", x: 11400, y: 1300 }, { type: "spike", x: 11500, y: 1300 }, { type: "spike", x: 11600, y: 1300 }, { type: "spike", x: 11700, y: 1300 }, { type: "spike", x: 11800, y: 1300 }, { type: "spike", x: 11900, y: 1300 }, { type: "spike", x: 12000, y: 1300 }, { type: "spike", x: 12100, y: 1300 }, { type: "spike", x: 12300, y: 1150 }, { type: "spike", x: 12400, y: 1150 }, { type: "spike", x: 12500, y: 1150 }, { type: "spike", x: 12600, y: 1150 }, { type: "spike", x: 12700, y: 1150 }, { type: "spike", x: 12800, y: 1150 }, { type: "spike", x: 12900, y: 1150 }, { type: "spike", x: 13000, y: 1150 }, { type: "spike", x: 13100, y: 1150 }, { type: "spike", x: 13200, y: 1150 }, { type: "spike", x: 13300, y: 1150 }, { type: "spike", x: 13400, y: 1150 }, { type: "spike", x: 13500, y: 1150 }, { type: "spike", x: 13600, y: 1150 }, { type: "spike", x: 13700, y: 1150 }, { type: "spike", x: 13800, y: 1150 }, { type: "spike", x: 13900, y: 1150 }, { type: "spike", x: 14100, y: 1000 }, { type: "spike", x: 14200, y: 1000 }, { type: "spike", x: 14300, y: 1000 }, { type: "spike", x: 14400, y: 1000 }, { type: "spike", x: 14500, y: 1000 }, { type: "spike", x: 14600, y: 1000 }, { type: "spike", x: 14700, y: 1000 }, { type: "spike", x: 14800, y: 1000 }, { type: "spike", x: 14900, y: 1000 }, { type: "spike", x: 15000, y: 1000 }, { type: "spike", x: 15100, y: 1000 }, { type: "spike", x: 15200, y: 1000 }, { type: "spike", x: 15300, y: 1000 }, { type: "spike", x: 15400, y: 1000 }, { type: "spike", x: 15500, y: 1000 }, { type: "spike", x: 15600, y: 1000 }, { type: "spike", x: 15700, y: 1000 }, { type: "spike", x: 15800, y: 1000 }, { type: "spike", x: 16000, y: 850 }, { type: "spike", x: 16100, y: 850 }, { type: "spike", x: 16200, y: 850 }, { type: "spike", x: 16300, y: 850 }, { type: "spike", x: 16400, y: 850 }, { type: "spike", x: 16500, y: 850 }, { type: "spike", x: 16600, y: 850 }, { type: "spike", x: 16700, y: 850 }, { type: "spike", x: 16800, y: 850 }, { type: "spike", x: 16900, y: 850 }, { type: "spike", x: 17000, y: 850 }, { type: "spike", x: 17100, y: 850 }, { type: "spike", x: 17200, y: 850 }, { type: "spike", x: 17300, y: 850 }, { type: "spike", x: 17400, y: 850 }, { type: "spike", x: 17500, y: 850 }, { type: "spike", x: 17600, y: 850 }, { type: "spike", x: 17700, y: 850 }, { type: "spike", x: 17800, y: 850 }, { type: "spike", x: 18000, y: 700 }, { type: "spike", x: 18100, y: 700 }, { type: "spike", x: 18200, y: 700 }, { type: "spike", x: 18300, y: 700 }, { type: "spike", x: 18400, y: 700 }, { type: "spike", x: 18500, y: 700 }, { type: "spike", x: 18600, y: 700 }, { type: "spike", x: 18700, y: 700 }, { type: "spike", x: 18800, y: 700 }, { type: "spike", x: 18900, y: 700 }, { type: "spike", x: 19000, y: 700 }, { type: "spike", x: 19100, y: 700 }, { type: "spike", x: 19200, y: 700 }, { type: "spike", x: 19300, y: 700 }, { type: "spike", x: 19400, y: 700 }, { type: "spike", x: 19500, y: 700 }, { type: "spike", x: 19600, y: 700 }, { type: "spike", x: 19700, y: 700 }, { type: "spike", x: 19800, y: 700 }, { type: "spike", x: 19900, y: 700 }, { type: "spike", x: 20100, y: 550 }, { type: "spike", x: 20200, y: 550 }, { type: "spike", x: 20300, y: 550 }, { type: "spike", x: 20400, y: 550 }, { type: "spike", x: 20500, y: 550 }, { type: "spike", x: 20600, y: 550 }, { type: "spike", x: 20700, y: 550 }, { type: "spike", x: 20800, y: 550 }, { type: "spike", x: 20900, y: 550 }, { type: "spike", x: 21000, y: 550 }, { type: "spike", x: 21100, y: 550 }, { type: "spike", x: 21200, y: 550 }, { type: "spike", x: 21300, y: 550 }, { type: "spike", x: 21400, y: 550 }, { type: "spike", x: 21500, y: 550 }, { type: "spike", x: 21600, y: 550 }, { type: "spike", x: 21700, y: 550 }, { type: "spike", x: 21800, y: 550 }, { type: "spike", x: 21900, y: 550 }, { type: "spike", x: 22000, y: 550 }, { type: "spike", x: 22800, y: 2650 }, { type: "spike", x: 22900, y: 2650 }, { type: "spike", x: 23000, y: 2650 }, { type: "spike", x: 23100, y: 2650 }, { type: "spike", x: 23200, y: 2650 }, { type: "spike", x: 23300, y: 2650 }, { type: "spike", x: 23400, y: 2650 }, { type: "spike", x: 23500, y: 2650 }, { type: "spike", x: 23600, y: 2650 }, { type: "spike", x: 23700, y: 2650 }], platforms: [{ x: 750, y: 2550, width: 80, height: 30 }, { x: 1150, y: 2550, width: 80, height: 30 }, { x: 1950, y: 2400, width: 160, height: 30 }, { x: 2950, y: 2250, width: 260, height: 30 }, { x: 4000, y: 2100, width: 360, height: 30 }, { x: 5250, y: 1950, width: 360, height: 30 }, { x: 6700, y: 1800, width: 460, height: 30 }, { x: 8150, y: 1650, width: 560, height: 30 }, { x: 9700, y: 1500, width: 660, height: 30 }, { x: 11350, y: 1350, width: 760, height: 30 }, { x: 13050, y: 1200, width: 860, height: 30 }, { x: 14950, y: 1050, width: 860, height: 30 }, { x: 16900, y: 900, width: 960, height: 30 }, { x: 18950, y: 750, width: 1060, height: 30 }, { x: 21050, y: 600, width: 1160, height: 30 }, { x: 22500, y: 2200, width: 200, height: 30 }, { x: 23800, y: 2500, width: 400, height: 30 }] }, { id: 10, name: "Master's Gauntlet", difficulty: 10, length: 26000, music: "level10Music", obstacles: [{ type: "spike", x: 200, y: 2650 }, { type: "spike", x: 300, y: 2650 }, { type: "spike", x: 400, y: 2650 }, { type: "spike", x: 500, y: 2650 }, { type: "spike", x: 600, y: 2650 }, { type: "spike", x: 700, y: 2650 }, { type: "spike", x: 800, y: 2500 }, { type: "spike", x: 900, y: 2500 }, { type: "spike", x: 1000, y: 2500 }, { type: "spike", x: 1100, y: 2500 }, { type: "spike", x: 1200, y: 2500 }, { type: "spike", x: 1300, y: 2500 }, { type: "spike", x: 1400, y: 2500 }, { type: "spike", x: 1500, y: 2350 }, { type: "spike", x: 1600, y: 2350 }, { type: "spike", x: 1700, y: 2350 }, { type: "spike", x: 1800, y: 2350 }, { type: "spike", x: 1900, y: 2350 }, { type: "spike", x: 2000, y: 2350 }, { type: "spike", x: 2100, y: 2350 }, { type: "spike", x: 2200, y: 2350 }, { type: "spike", x: 2300, y: 2350 }, { type: "spike", x: 2400, y: 2200 }, { type: "spike", x: 2500, y: 2200 }, { type: "spike", x: 2600, y: 2200 }, { type: "spike", x: 2700, y: 2200 }, { type: "spike", x: 2800, y: 2200 }, { type: "spike", x: 2900, y: 2200 }, { type: "spike", x: 3000, y: 2200 }, { type: "spike", x: 3100, y: 2200 }, { type: "spike", x: 3200, y: 2200 }, { type: "spike", x: 3300, y: 2200 }, { type: "spike", x: 3400, y: 2200 }, { type: "spike", x: 3500, y: 2050 }, { type: "spike", x: 3600, y: 2050 }, { type: "spike", x: 3700, y: 2050 }, { type: "spike", x: 3800, y: 2050 }, { type: "spike", x: 3900, y: 2050 }, { type: "spike", x: 4000, y: 2050 }, { type: "spike", x: 4100, y: 2050 }, { type: "spike", x: 4200, y: 2050 }, { type: "spike", x: 4300, y: 2050 }, { type: "spike", x: 4400, y: 2050 }, { type: "spike", x: 4500, y: 2050 }, { type: "spike", x: 4600, y: 2050 }, { type: "spike", x: 4700, y: 1900 }, { type: "spike", x: 4800, y: 1900 }, { type: "spike", x: 4900, y: 1900 }, { type: "spike", x: 5000, y: 1900 }, { type: "spike", x: 5100, y: 1900 }, { type: "spike", x: 5200, y: 1900 }, { type: "spike", x: 5300, y: 1900 }, { type: "spike", x: 5400, y: 1900 }, { type: "spike", x: 5500, y: 1900 }, { type: "spike", x: 5600, y: 1900 }, { type: "spike", x: 5700, y: 1900 }, { type: "spike", x: 5800, y: 1900 }, { type: "spike", x: 5900, y: 1900 }, { type: "spike", x: 6000, y: 1750 }, { type: "spike", x: 6100, y: 1750 }, { type: "spike", x: 6200, y: 1750 }, { type: "spike", x: 6300, y: 1750 }, { type: "spike", x: 6400, y: 1750 }, { type: "spike", x: 6500, y: 1750 }, { type: "spike", x: 6600, y: 1750 }, { type: "spike", x: 6700, y: 1750 }, { type: "spike", x: 6800, y: 1750 }, { type: "spike", x: 6900, y: 1750 }, { type: "spike", x: 7000, y: 1750 }, { type: "spike", x: 7100, y: 1750 }, { type: "spike", x: 7200, y: 1750 }, { type: "spike", x: 7300, y: 1750 }, { type: "spike", x: 7400, y: 1600 }, { type: "spike", x: 7500, y: 1600 }, { type: "spike", x: 7600, y: 1600 }, { type: "spike", x: 7700, y: 1600 }, { type: "spike", x: 7800, y: 1600 }, { type: "spike", x: 7900, y: 1600 }, { type: "spike", x: 8000, y: 1600 }, { type: "spike", x: 8100, y: 1600 }, { type: "spike", x: 8200, y: 1600 }, { type: "spike", x: 8300, y: 1600 }, { type: "spike", x: 8400, y: 1600 }, { type: "spike", x: 8500, y: 1600 }, { type: "spike", x: 8600, y: 1600 }, { type: "spike", x: 8700, y: 1600 }, { type: "spike", x: 8800, y: 1600 }, { type: "spike", x: 8900, y: 1450 }, { type: "spike", x: 9000, y: 1450 }, { type: "spike", x: 9100, y: 1450 }, { type: "spike", x: 9200, y: 1450 }, { type: "spike", x: 9300, y: 1450 }, { type: "spike", x: 9400, y: 1450 }, { type: "spike", x: 9500, y: 1450 }, { type: "spike", x: 9600, y: 1450 }, { type: "spike", x: 9700, y: 1450 }, { type: "spike", x: 9800, y: 1450 }, { type: "spike", x: 9900, y: 1450 }, { type: "spike", x: 10000, y: 1450 }, { type: "spike", x: 10100, y: 1450 }, { type: "spike", x: 10200, y: 1450 }, { type: "spike", x: 10300, y: 1450 }, { type: "spike", x: 10400, y: 1450 }, { type: "spike", x: 10500, y: 1300 }, { type: "spike", x: 10600, y: 1300 }, { type: "spike", x: 10700, y: 1300 }, { type: "spike", x: 10800, y: 1300 }, { type: "spike", x: 10900, y: 1300 }, { type: "spike", x: 11000, y: 1300 }, { type: "spike", x: 11100, y: 1300 }, { type: "spike", x: 11200, y: 1300 }, { type: "spike", x: 11300, y: 1300 }, { type: "spike", x: 11400, y: 1300 }, { type: "spike", x: 11500, y: 1300 }, { type: "spike", x: 11600, y: 1300 }, { type: "spike", x: 11700, y: 1300 }, { type: "spike", x: 11800, y: 1300 }, { type: "spike", x: 11900, y: 1300 }, { type: "spike", x: 12000, y: 1300 }, { type: "spike", x: 12100, y: 1300 }, { type: "spike", x: 12200, y: 1150 }, { type: "spike", x: 12300, y: 1150 }, { type: "spike", x: 12400, y: 1150 }, { type: "spike", x: 12500, y: 1150 }, { type: "spike", x: 12600, y: 1150 }, { type: "spike", x: 12700, y: 1150 }, { type: "spike", x: 12800, y: 1150 }, { type: "spike", x: 12900, y: 1150 }, { type: "spike", x: 13000, y: 1150 }, { type: "spike", x: 13100, y: 1150 }, { type: "spike", x: 13200, y: 1150 }, { type: "spike", x: 13300, y: 1150 }, { type: "spike", x: 13400, y: 1150 }, { type: "spike", x: 13500, y: 1150 }, { type: "spike", x: 13600, y: 1150 }, { type: "spike", x: 13700, y: 1150 }, { type: "spike", x: 13800, y: 1150 }, { type: "spike", x: 13900, y: 1150 }, { type: "spike", x: 14000, y: 1000 }, { type: "spike", x: 14100, y: 1000 }, { type: "spike", x: 14200, y: 1000 }, { type: "spike", x: 14300, y: 1000 }, { type: "spike", x: 14400, y: 1000 }, { type: "spike", x: 14500, y: 1000 }, { type: "spike", x: 14600, y: 1000 }, { type: "spike", x: 14700, y: 1000 }, { type: "spike", x: 14800, y: 1000 }, { type: "spike", x: 14900, y: 1000 }, { type: "spike", x: 15000, y: 1000 }, { type: "spike", x: 15100, y: 1000 }, { type: "spike", x: 15200, y: 1000 }, { type: "spike", x: 15300, y: 1000 }, { type: "spike", x: 15400, y: 1000 }, { type: "spike", x: 15500, y: 1000 }, { type: "spike", x: 15600, y: 1000 }, { type: "spike", x: 15700, y: 1000 }, { type: "spike", x: 15800, y: 1000 }, { type: "spike", x: 15900, y: 850 }, { type: "spike", x: 16000, y: 850 }, { type: "spike", x: 16100, y: 850 }, { type: "spike", x: 16200, y: 850 }, { type: "spike", x: 16300, y: 850 }, { type: "spike", x: 16400, y: 850 }, { type: "spike", x: 16500, y: 850 }, { type: "spike", x: 16600, y: 850 }, { type: "spike", x: 16700, y: 850 }, { type: "spike", x: 16800, y: 850 }, { type: "spike", x: 16900, y: 850 }, { type: "spike", x: 17000, y: 850 }, { type: "spike", x: 17100, y: 850 }, { type: "spike", x: 17200, y: 850 }, { type: "spike", x: 17300, y: 850 }, { type: "spike", x: 17400, y: 850 }, { type: "spike", x: 17500, y: 850 }, { type: "spike", x: 17600, y: 850 }, { type: "spike", x: 17700, y: 850 }, { type: "spike", x: 17800, y: 850 }, { type: "spike", x: 17900, y: 700 }, { type: "spike", x: 18000, y: 700 }, { type: "spike", x: 18100, y: 700 }, { type: "spike", x: 18200, y: 700 }, { type: "spike", x: 18300, y: 700 }, { type: "spike", x: 18400, y: 700 }, { type: "spike", x: 18500, y: 700 }, { type: "spike", x: 18600, y: 700 }, { type: "spike", x: 18700, y: 700 }, { type: "spike", x: 18800, y: 700 }, { type: "spike", x: 18900, y: 700 }, { type: "spike", x: 19000, y: 700 }, { type: "spike", x: 19100, y: 700 }, { type: "spike", x: 19200, y: 700 }, { type: "spike", x: 19300, y: 700 }, { type: "spike", x: 19400, y: 700 }, { type: "spike", x: 19500, y: 700 }, { type: "spike", x: 19600, y: 700 }, { type: "spike", x: 19700, y: 700 }, { type: "spike", x: 19800, y: 700 }, { type: "spike", x: 20000, y: 550 }, { type: "spike", x: 20100, y: 550 }, { type: "spike", x: 20200, y: 550 }, { type: "spike", x: 20300, y: 550 }, { type: "spike", x: 20400, y: 550 }, { type: "spike", x: 20500, y: 550 }, { type: "spike", x: 20600, y: 550 }, { type: "spike", x: 20700, y: 550 }, { type: "spike", x: 20800, y: 550 }, { type: "spike", x: 20900, y: 550 }, { type: "spike", x: 21000, y: 550 }, { type: "spike", x: 21100, y: 550 }, { type: "spike", x: 21200, y: 550 }, { type: "spike", x: 21300, y: 550 }, { type: "spike", x: 21400, y: 550 }, { type: "spike", x: 21500, y: 550 }, { type: "spike", x: 21600, y: 550 }, { type: "spike", x: 21700, y: 550 }, { type: "spike", x: 21800, y: 550 }, { type: "spike", x: 21900, y: 550 }, { type: "spike", x: 22100, y: 400 }, { type: "spike", x: 22200, y: 400 }, { type: "spike", x: 22300, y: 400 }, { type: "spike", x: 22400, y: 400 }, { type: "spike", x: 22500, y: 400 }, { type: "spike", x: 22600, y: 400 }, { type: "spike", x: 22700, y: 400 }, { type: "spike", x: 22800, y: 400 }, { type: "spike", x: 22900, y: 400 }, { type: "spike", x: 23000, y: 400 }, { type: "spike", x: 23100, y: 400 }, { type: "spike", x: 23200, y: 400 }, { type: "spike", x: 23300, y: 400 }, { type: "spike", x: 23400, y: 400 }, { type: "spike", x: 23500, y: 400 }, { type: "spike", x: 23600, y: 400 }, { type: "spike", x: 23700, y: 400 }, { type: "spike", x: 23800, y: 400 }, { type: "spike", x: 23900, y: 400 }, { type: "spike", x: 24000, y: 400 }, { type: "spike", x: 24800, y: 2650 }, { type: "spike", x: 24900, y: 2650 }, { type: "spike", x: 25000, y: 2650 }, { type: "spike", x: 25100, y: 2650 }, { type: "spike", x: 25200, y: 2650 }, { type: "spike", x: 25300, y: 2650 }, { type: "spike", x: 25400, y: 2650 }, { type: "spike", x: 25500, y: 2650 }, { type: "spike", x: 25600, y: 2650 }, { type: "spike", x: 25700, y: 2650 }], platforms: [{ x: 650, y: 2550, width: 60, height: 30 }, { x: 1050, y: 2550, width: 60, height: 30 }, { x: 1900, y: 2400, width: 140, height: 30 }, { x: 2850, y: 2250, width: 240, height: 30 }, { x: 3950, y: 2100, width: 340, height: 30 }, { x: 5150, y: 1950, width: 340, height: 30 }, { x: 6650, y: 1800, width: 440, height: 30 }, { x: 8100, y: 1650, width: 540, height: 30 }, { x: 9650, y: 1500, width: 640, height: 30 }, { x: 11300, y: 1350, width: 740, height: 30 }, { x: 13050, y: 1200, width: 840, height: 30 }, { x: 14950, y: 1050, width: 840, height: 30 }, { x: 16850, y: 900, width: 940, height: 30 }, { x: 18850, y: 750, width: 940, height: 30 }, { x: 20950, y: 600, width: 1040, height: 30 }, { x: 23050, y: 450, width: 1140, height: 30 }, { x: 24500, y: 2200, width: 200, height: 30 }, { x: 25800, y: 2500, width: 400, height: 30 }] }]; } // Initialize level select menu function initLevelSelect() { gameState = "menu"; clearLevel(); // Create background var background = game.attachAsset('background', { anchorX: 0, anchorY: 0 }); // Play menu music LK.playMusic('menuMusic'); // Show title messageText.setText("SELECT LEVEL"); messageText.y = 0; tween(messageText, { alpha: 1 }, { duration: 500 }); // Calculate how many levels are unlocked var unlockedLevels = storage.completedLevels.length + 1; if (unlockedLevels > levels.length) { unlockedLevels = levels.length; } // Create level buttons in a normal 5x2 grid levelButtons = []; var buttonsPerRow = 5; var buttonSpacingX = 300; var buttonSpacingY = 280; var gridStartX = 1024 - buttonsPerRow * buttonSpacingX / 2 + buttonSpacingX / 2; var gridStartY = 1200; for (var i = 0; i < levels.length; i++) { var level = levels[i]; var button = new LevelButton(); button.init(level.id, level.name, i < unlockedLevels); // Position buttons in grid var row = Math.floor(i / buttonsPerRow); var col = i % buttonsPerRow; button.x = gridStartX + col * buttonSpacingX; button.y = gridStartY + row * buttonSpacingY; game.addChild(button); levelButtons.push(button); } // Show stats scoreText.setText("COMPLETED: " + storage.completedLevels.length + "/" + levels.length); deathCountText.setText("DEATHS: " + storage.deaths); } // Start a specific level function startLevel(levelId) { gameState = "playing"; clearLevel(); // Find level data var levelData = null; for (var i = 0; i < levels.length; i++) { if (levels[i].id === levelId) { levelData = levels[i]; break; } } if (!levelData) { console.log("Level not found: " + levelId); return; } // Store the current level storage.currentLevel = levelId; // Create level currentLevel = new Level(); currentLevel.init(levelData); game.addChild(currentLevel); // Create player player = new Player(); player.x = 300; player.y = 2500; player.init(); game.addChild(player); // Update UI levelNameText.setText(levelData.name); deathCountText.setText("DEATHS: " + storage.deaths); // Show message messageText.setText("TAP TO JUMP"); tween(messageText, { alpha: 1 }, { duration: 500, onFinish: function onFinish() { LK.setTimeout(function () { tween(messageText, { alpha: 0 }, { duration: 500 }); }, 1500); } }); // Play level music LK.playMusic(levelData.music); // Reset camera camera.x = 0; camera.y = 0; } // Clear all level elements function clearLevel() { // Remove level elements if (currentLevel) { game.removeChild(currentLevel); currentLevel = null; } // Remove player if (player) { game.removeChild(player); player = null; } // Clear messages messageText.alpha = 0; // Remove level buttons for (var i = 0; i < levelButtons.length; i++) { game.removeChild(levelButtons[i]); } levelButtons = []; // Clear particles for (var j = 0; j < particles.length; j++) { particles[j].destroy(); } particles = []; } // Handle level completion function completeLevel() { gameState = "levelComplete"; // Add level to completed levels if not already there if (!storage.completedLevels.includes(storage.currentLevel)) { storage.completedLevels.push(storage.currentLevel); } // Play success sound LK.getSound('levelComplete').play(); // Show completion message messageText.setText("LEVEL COMPLETE!"); tween(messageText, { alpha: 1 }, { duration: 500 }); // Return to level select after a delay LK.setTimeout(function () { LK.showYouWin(); }, 2000); } // Reset the current level after death function resetLevel() { // Don't reset if we're not playing if (gameState !== "playing") { return; } // Hide death message tween(messageText, { alpha: 0 }, { duration: 300 }); // Create player if (player) { game.removeChild(player); } player = new Player(); player.x = 300; player.y = 2500; player.init(); game.addChild(player); // Reset camera camera.x = 0; camera.y = 0; // Update death count deathCountText.setText("DEATHS: " + storage.deaths); // Clear particles for (var i = 0; i < particles.length; i++) { particles[i].destroy(); } particles = []; } // Create explosion particles when player dies function createDeathParticles(x, y) { var particleCount = 30; var playerColor = 0x3498db; for (var i = 0; i < particleCount; i++) { var particle = new Particle(); particle.init(x, y, playerColor); game.addChild(particle); particles.push(particle); } // Show death message messageText.setText("TAP TO RETRY"); tween(messageText, { alpha: 1 }, { duration: 300 }); // Reset level after a short delay LK.setTimeout(resetLevel, 1000); } // Input Handlers game.down = function (x, y) { if (gameState === "playing") { if (player && !player.isDead) { player.jump(); } else if (player && player.isDead) { resetLevel(); } } }; game.update = function () { var now = Date.now(); var delta = now - lastTick; lastTick = now; // Process particles for (var i = particles.length - 1; i >= 0; i--) { if (particles[i].update()) { particles.splice(i, 1); } } if (gameState === "playing" && player && !player.isDead) { // Update player player.update(); // Check collisions if (currentLevel) { var collision = currentLevel.checkCollisions(player); if (collision === 'finish') { completeLevel(); } } // Camera follow player camera.x = player.x - 512; // Keep player at 1/4 of screen if (camera.x < 0) { camera.x = 0; } // Apply camera transform to level if (currentLevel) { currentLevel.x = -camera.x; } } }; // Initialize the game function initGame() { defineLevels(); initLevelSelect(); } // Start the game initGame();
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
completedLevels: [],
currentLevel: 0,
attempts: 0,
deaths: 0
});
/****
* Classes
****/
var Level = Container.expand(function () {
var self = Container.call(this);
self.obstacles = [];
self.platforms = [];
self.length = 0;
self.id = 0;
self.startX = 300;
self.music = 'level1Music';
self.difficulty = 1;
self.name = "Level 1";
self.init = function (levelData) {
self.obstacles = [];
self.platforms = [];
self.id = levelData.id;
self.length = levelData.length || 10000;
self.music = levelData.music || 'level1Music';
self.difficulty = levelData.difficulty || 1;
self.name = levelData.name || "Level " + self.id;
// Create obstacles based on level data
if (levelData.obstacles) {
levelData.obstacles.forEach(function (obs) {
var obstacle = new Obstacle();
obstacle.init(obs.type, obs.x, obs.y, obs.width, obs.height);
self.addChild(obstacle);
self.obstacles.push(obstacle);
});
}
// Create platforms based on level data
if (levelData.platforms) {
levelData.platforms.forEach(function (plat) {
var platform = new Obstacle();
platform.init('platform', plat.x, plat.y, plat.width, plat.height);
self.addChild(platform);
self.platforms.push(platform);
});
}
// Always have a ground platform
var ground = new Obstacle();
ground.init('ground', self.length / 2, 2700, self.length, 50);
self.addChild(ground);
self.platforms.push(ground);
// Add decorative grid lines
for (var i = 0; i < 10; i++) {
var gridLine = self.attachAsset('gridLine', {
anchorX: 0,
anchorY: 0.5,
y: 500 + i * 250,
x: 0,
alpha: 0.3
});
gridLine.width = self.length;
}
// Create finish line
var finishLine = new Obstacle();
finishLine.init('platform', self.length - 100, 2650, 20, 100);
finishLine.type = 'finish';
var finishGraphics = finishLine.attachAsset('platform', {
anchorX: 0.5,
anchorY: 0.5,
tint: 0x2ecc71
});
self.addChild(finishLine);
self.obstacles.push(finishLine);
};
self.checkCollisions = function (player) {
// Check platform collisions
player.isGrounded = false;
for (var i = 0; i < self.platforms.length; i++) {
var platform = self.platforms[i];
if (player.intersects(platform)) {
// Only collide with top of platform
if (player.y - player.height / 2 < platform.y - platform.height / 2) {
player.y = platform.y - platform.height / 2 - player.height / 2;
player.vy = 0;
player.isGrounded = true;
}
}
}
// Check obstacle collisions
for (var j = 0; j < self.obstacles.length; j++) {
var obstacle = self.obstacles[j];
if (player.intersects(obstacle)) {
if (obstacle.type === 'finish') {
return 'finish';
} else if (obstacle.type === 'spike') {
player.die();
return 'death';
}
}
}
return null;
};
return self;
});
var LevelButton = Container.expand(function () {
var self = Container.call(this);
var box = self.attachAsset('levelBox', {
anchorX: 0.5,
anchorY: 0.5,
width: 250,
height: 180
});
var levelText = new Text2("1", {
size: 90,
fill: 0xFFFFFF
});
levelText.anchor.set(0.5);
var nameText = new Text2("Level 1", {
size: 35,
fill: 0xFFFFFF
});
nameText.anchor.set(0.5);
nameText.y = 60;
self.addChild(levelText);
self.addChild(nameText);
self.level = 1;
self.unlocked = true;
self.init = function (level, name, unlocked) {
self.level = level;
self.unlocked = unlocked === undefined ? true : unlocked;
levelText.setText(level);
nameText.setText(name || "Level " + level);
// Visual state
if (!self.unlocked) {
box.tint = 0x7f8c8d;
levelText.alpha = 0.5;
nameText.alpha = 0.5;
} else {
box.tint = 0x9b59b6; // Normal purple for all levels
levelText.alpha = 1;
nameText.alpha = 1;
}
// If completed, show green color
if (storage.completedLevels.includes(level)) {
box.tint = 0x27ae60; // Green for completed levels
}
box.alpha = 1.0;
};
self.down = function () {
if (self.unlocked) {
tween(box, {
scale: 0.9
}, {
duration: 100
});
}
};
self.up = function () {
if (self.unlocked) {
tween(box, {
scale: 1
}, {
duration: 100
});
LK.getSound('levelSelect').play();
startLevel(self.level);
}
};
return self;
});
var Obstacle = Container.expand(function () {
var self = Container.call(this);
self.type = 'spike'; // Default type
var graphics;
self.init = function (type, x, y, width, height) {
self.type = type || 'spike';
// Remove existing graphics if any
if (graphics) {
self.removeChild(graphics);
}
graphics = self.attachAsset(self.type, {
anchorX: 0.5,
anchorY: 0.5
});
if (width) {
graphics.width = width;
}
if (height) {
graphics.height = height;
}
self.x = x;
self.y = y;
};
return self;
});
var Particle = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('particle', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.8
});
self.init = function (x, y, color) {
self.x = x;
self.y = y;
self.vx = Math.random() * 10 - 5;
self.vy = Math.random() * -15 - 5;
self.gravity = 0.5;
self.life = Math.random() * 30 + 30;
self.maxLife = self.life;
graphics.tint = color || 0x3498db;
};
self.update = function () {
self.x += self.vx;
self.vy += self.gravity;
self.y += self.vy;
self.life--;
// Fade out as life decreases
graphics.alpha = self.life / self.maxLife * 0.8;
graphics.scale.set(self.life / self.maxLife);
if (self.life <= 0) {
self.destroy();
return true; // Signal to remove from array
}
return false;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.vx = 0;
self.vy = 0;
self.speed = 8;
self.gravity = 0.8;
self.jumpForce = -20;
self.isGrounded = false;
self.isDead = false;
self.autoMove = true;
self.init = function () {
self.vx = self.speed;
self.vy = 0;
self.isDead = false;
graphics.rotation = 0;
graphics.alpha = 1;
};
self.update = function () {
if (self.isDead) {
return;
}
// Apply gravity
self.vy += self.gravity;
// Update position
if (self.autoMove) {
self.x += self.vx;
}
self.y += self.vy;
// Rotate based on movement (for visual effect)
graphics.rotation = 0;
// Check if fallen off screen
if (self.y > 2732) {
self.die();
}
};
self.jump = function () {
if (self.isGrounded && !self.isDead) {
self.vy = self.jumpForce;
self.isGrounded = false;
graphics.rotation += Math.PI / 2; // Rotate 90 degrees when jumping
LK.getSound('jump').play();
return true;
}
return false;
};
self.die = function () {
if (!self.isDead) {
self.isDead = true;
LK.getSound('death').play();
createDeathParticles(self.x, self.y);
tween(graphics, {
alpha: 0
}, {
duration: 300
});
storage.deaths++;
storage.attempts++;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
// Game state
var gameState = "menu"; // menu, playing, gameOver
var player;
var currentLevel;
var camera = {
x: 0,
y: 0
};
var particles = [];
var levels = [];
var levelButtons = [];
var lastTick = 0;
// UI Elements
var scoreText = new Text2("SCORE: 0", {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0, 0);
scoreText.x = 150;
scoreText.y = 50;
LK.gui.top.addChild(scoreText);
var levelNameText = new Text2("LEVEL 1", {
size: 60,
fill: 0xFFFFFF
});
levelNameText.anchor.set(0.5, 0);
levelNameText.y = 250;
LK.gui.top.addChild(levelNameText);
var deathCountText = new Text2("DEATHS: 0", {
size: 40,
fill: 0xFFFFFF
});
deathCountText.anchor.set(1, 0);
deathCountText.x = -150;
deathCountText.y = 50;
LK.gui.topRight.addChild(deathCountText);
var messageText = new Text2("TAP TO JUMP", {
size: 80,
fill: 0xFFFFFF
});
messageText.anchor.set(0.5, 0.5);
LK.gui.center.addChild(messageText);
messageText.alpha = 0;
// Define all levels
function defineLevels() {
levels = [{
id: 1,
name: "Simple Run",
difficulty: 1,
length: 8000,
music: "level1Music",
obstacles: [{
type: "spike",
x: 2000,
y: 2650
}, {
type: "spike",
x: 2300,
y: 2650
}, {
type: "spike",
x: 3000,
y: 2650
}, {
type: "spike",
x: 3300,
y: 2650
}, {
type: "spike",
x: 3600,
y: 2650
}, {
type: "spike",
x: 4500,
y: 2650
}, {
type: "spike",
x: 4800,
y: 2650
}, {
type: "spike",
x: 5500,
y: 2650
}, {
type: "spike",
x: 6000,
y: 2650
}, {
type: "spike",
x: 6300,
y: 2650
}],
platforms: [{
x: 2700,
y: 2500,
width: 300,
height: 30
}, {
x: 3800,
y: 2400,
width: 300,
height: 30
}, {
x: 4200,
y: 2300,
width: 300,
height: 30
}, {
x: 5200,
y: 2500,
width: 500,
height: 30
}, {
x: 6500,
y: 2400,
width: 300,
height: 30
}]
}, {
id: 2,
name: "Spike Madness",
difficulty: 2,
length: 10000,
music: "level2Music",
obstacles: [{
type: "spike",
x: 1500,
y: 2650
}, {
type: "spike",
x: 1600,
y: 2650
}, {
type: "spike",
x: 2200,
y: 2650
}, {
type: "spike",
x: 2500,
y: 2650
}, {
type: "spike",
x: 2800,
y: 2650
}, {
type: "spike",
x: 3100,
y: 2650
}, {
type: "spike",
x: 3400,
y: 2350
},
// On platform
{
type: "spike",
x: 3700,
y: 2650
}, {
type: "spike",
x: 4000,
y: 2650
}, {
type: "spike",
x: 4300,
y: 2650
}, {
type: "spike",
x: 4600,
y: 2250
},
// On platform
{
type: "spike",
x: 4900,
y: 2250
},
// On platform
{
type: "spike",
x: 5200,
y: 2650
}, {
type: "spike",
x: 5500,
y: 2650
}, {
type: "spike",
x: 5800,
y: 2650
}, {
type: "spike",
x: 6100,
y: 2650
}, {
type: "spike",
x: 6400,
y: 2650
}, {
type: "spike",
x: 6700,
y: 2400
},
// On platform
{
type: "spike",
x: 7000,
y: 2400
},
// On platform
{
type: "spike",
x: 7300,
y: 2400
},
// On platform
{
type: "spike",
x: 7900,
y: 2650
}, {
type: "spike",
x: 8200,
y: 2650
}, {
type: "spike",
x: 8500,
y: 2650
}],
platforms: [{
x: 1800,
y: 2500,
width: 300,
height: 30
}, {
x: 3400,
y: 2400,
width: 500,
height: 30
}, {
x: 4600,
y: 2300,
width: 700,
height: 30
}, {
x: 7000,
y: 2450,
width: 1200,
height: 30
}, {
x: 8700,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 3,
name: "The Final Dash",
difficulty: 3,
length: 12000,
music: "level3Music",
obstacles: [{
type: "spike",
x: 1200,
y: 2650
}, {
type: "spike",
x: 1500,
y: 2650
}, {
type: "spike",
x: 1800,
y: 2500
},
// On platform
{
type: "spike",
x: 2100,
y: 2500
},
// On platform
{
type: "spike",
x: 2400,
y: 2650
}, {
type: "spike",
x: 2700,
y: 2650
}, {
type: "spike",
x: 3000,
y: 2400
},
// On platform
{
type: "spike",
x: 3300,
y: 2400
},
// On platform
{
type: "spike",
x: 3600,
y: 2400
},
// On platform
{
type: "spike",
x: 3900,
y: 2650
}, {
type: "spike",
x: 4200,
y: 2650
}, {
type: "spike",
x: 4500,
y: 2650
}, {
type: "spike",
x: 4800,
y: 2300
},
// On platform
{
type: "spike",
x: 5100,
y: 2300
},
// On platform
{
type: "spike",
x: 5400,
y: 2300
},
// On platform
{
type: "spike",
x: 5700,
y: 2650
}, {
type: "spike",
x: 6000,
y: 2650
}, {
type: "spike",
x: 6300,
y: 2650
}, {
type: "spike",
x: 6600,
y: 2650
}, {
type: "spike",
x: 6900,
y: 2650
}, {
type: "spike",
x: 7200,
y: 2200
},
// On platform
{
type: "spike",
x: 7500,
y: 2200
},
// On platform
{
type: "spike",
x: 7800,
y: 2200
},
// On platform
{
type: "spike",
x: 8100,
y: 2650
}, {
type: "spike",
x: 8400,
y: 2650
}, {
type: "spike",
x: 8700,
y: 2650
}, {
type: "spike",
x: 9000,
y: 2100
},
// On platform
{
type: "spike",
x: 9300,
y: 2100
},
// On platform
{
type: "spike",
x: 9600,
y: 2100
},
// On platform
{
type: "spike",
x: 9900,
y: 2650
}, {
type: "spike",
x: 10200,
y: 2650
}, {
type: "spike",
x: 10500,
y: 2650
}],
platforms: [{
x: 1800,
y: 2550,
width: 600,
height: 30
}, {
x: 3300,
y: 2450,
width: 900,
height: 30
}, {
x: 5100,
y: 2350,
width: 900,
height: 30
}, {
x: 7500,
y: 2250,
width: 900,
height: 30
}, {
x: 9300,
y: 2150,
width: 900,
height: 30
}, {
x: 11000,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 4,
name: "Sky Walker",
difficulty: 4,
length: 14000,
music: "level4Music",
obstacles: [{
type: "spike",
x: 1000,
y: 2650
}, {
type: "spike",
x: 1300,
y: 2650
}, {
type: "spike",
x: 2200,
y: 2450
}, {
type: "spike",
x: 2500,
y: 2450
}, {
type: "spike",
x: 3400,
y: 2250
}, {
type: "spike",
x: 3700,
y: 2250
}, {
type: "spike",
x: 4000,
y: 2250
}, {
type: "spike",
x: 4800,
y: 2050
}, {
type: "spike",
x: 5100,
y: 2050
}, {
type: "spike",
x: 5400,
y: 2050
}, {
type: "spike",
x: 6200,
y: 1850
}, {
type: "spike",
x: 6500,
y: 1850
}, {
type: "spike",
x: 6800,
y: 1850
}, {
type: "spike",
x: 7100,
y: 1850
}, {
type: "spike",
x: 7800,
y: 1650
}, {
type: "spike",
x: 8100,
y: 1650
}, {
type: "spike",
x: 8400,
y: 1650
}, {
type: "spike",
x: 9200,
y: 1450
}, {
type: "spike",
x: 9500,
y: 1450
}, {
type: "spike",
x: 9800,
y: 1450
}, {
type: "spike",
x: 10600,
y: 1250
}, {
type: "spike",
x: 10900,
y: 1250
}, {
type: "spike",
x: 11200,
y: 1250
}, {
type: "spike",
x: 12000,
y: 2650
}, {
type: "spike",
x: 12300,
y: 2650
}, {
type: "spike",
x: 12600,
y: 2650
}, {
type: "spike",
x: 12900,
y: 2650
}],
platforms: [{
x: 1600,
y: 2500,
width: 400,
height: 30
}, {
x: 2500,
y: 2500,
width: 400,
height: 30
}, {
x: 3700,
y: 2300,
width: 600,
height: 30
}, {
x: 5100,
y: 2100,
width: 600,
height: 30
}, {
x: 6500,
y: 1900,
width: 800,
height: 30
}, {
x: 8100,
y: 1700,
width: 600,
height: 30
}, {
x: 9500,
y: 1500,
width: 600,
height: 30
}, {
x: 10900,
y: 1300,
width: 600,
height: 30
}, {
x: 11800,
y: 2200,
width: 200,
height: 30
}, {
x: 13200,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 5,
name: "Nightmare Mode",
difficulty: 5,
length: 16000,
music: "level5Music",
obstacles: [{
type: "spike",
x: 800,
y: 2650
}, {
type: "spike",
x: 900,
y: 2650
}, {
type: "spike",
x: 1000,
y: 2650
}, {
type: "spike",
x: 1400,
y: 2500
}, {
type: "spike",
x: 1500,
y: 2500
}, {
type: "spike",
x: 1600,
y: 2500
}, {
type: "spike",
x: 2000,
y: 2350
}, {
type: "spike",
x: 2100,
y: 2350
}, {
type: "spike",
x: 2200,
y: 2350
}, {
type: "spike",
x: 2300,
y: 2350
}, {
type: "spike",
x: 2800,
y: 2200
}, {
type: "spike",
x: 2900,
y: 2200
}, {
type: "spike",
x: 3000,
y: 2200
}, {
type: "spike",
x: 3100,
y: 2200
}, {
type: "spike",
x: 3200,
y: 2200
}, {
type: "spike",
x: 3700,
y: 2050
}, {
type: "spike",
x: 3800,
y: 2050
}, {
type: "spike",
x: 3900,
y: 2050
}, {
type: "spike",
x: 4000,
y: 2050
}, {
type: "spike",
x: 4100,
y: 2050
}, {
type: "spike",
x: 4200,
y: 2050
}, {
type: "spike",
x: 4800,
y: 1900
}, {
type: "spike",
x: 4900,
y: 1900
}, {
type: "spike",
x: 5000,
y: 1900
}, {
type: "spike",
x: 5100,
y: 1900
}, {
type: "spike",
x: 5200,
y: 1900
}, {
type: "spike",
x: 5300,
y: 1900
}, {
type: "spike",
x: 5400,
y: 1900
}, {
type: "spike",
x: 6000,
y: 1750
}, {
type: "spike",
x: 6100,
y: 1750
}, {
type: "spike",
x: 6200,
y: 1750
}, {
type: "spike",
x: 6300,
y: 1750
}, {
type: "spike",
x: 6400,
y: 1750
}, {
type: "spike",
x: 6500,
y: 1750
}, {
type: "spike",
x: 6600,
y: 1750
}, {
type: "spike",
x: 6700,
y: 1750
}, {
type: "spike",
x: 7400,
y: 1600
}, {
type: "spike",
x: 7500,
y: 1600
}, {
type: "spike",
x: 7600,
y: 1600
}, {
type: "spike",
x: 7700,
y: 1600
}, {
type: "spike",
x: 7800,
y: 1600
}, {
type: "spike",
x: 7900,
y: 1600
}, {
type: "spike",
x: 8000,
y: 1600
}, {
type: "spike",
x: 8100,
y: 1600
}, {
type: "spike",
x: 8200,
y: 1600
}, {
type: "spike",
x: 8900,
y: 1450
}, {
type: "spike",
x: 9000,
y: 1450
}, {
type: "spike",
x: 9100,
y: 1450
}, {
type: "spike",
x: 9200,
y: 1450
}, {
type: "spike",
x: 9300,
y: 1450
}, {
type: "spike",
x: 9400,
y: 1450
}, {
type: "spike",
x: 9500,
y: 1450
}, {
type: "spike",
x: 9600,
y: 1450
}, {
type: "spike",
x: 9700,
y: 1450
}, {
type: "spike",
x: 9800,
y: 1450
}, {
type: "spike",
x: 10500,
y: 1300
}, {
type: "spike",
x: 10600,
y: 1300
}, {
type: "spike",
x: 10700,
y: 1300
}, {
type: "spike",
x: 10800,
y: 1300
}, {
type: "spike",
x: 10900,
y: 1300
}, {
type: "spike",
x: 11000,
y: 1300
}, {
type: "spike",
x: 11100,
y: 1300
}, {
type: "spike",
x: 11200,
y: 1300
}, {
type: "spike",
x: 11300,
y: 1300
}, {
type: "spike",
x: 11400,
y: 1300
}, {
type: "spike",
x: 11500,
y: 1300
}, {
type: "spike",
x: 12200,
y: 1150
}, {
type: "spike",
x: 12300,
y: 1150
}, {
type: "spike",
x: 12400,
y: 1150
}, {
type: "spike",
x: 12500,
y: 1150
}, {
type: "spike",
x: 12600,
y: 1150
}, {
type: "spike",
x: 12700,
y: 1150
}, {
type: "spike",
x: 12800,
y: 1150
}, {
type: "spike",
x: 12900,
y: 1150
}, {
type: "spike",
x: 13000,
y: 1150
}, {
type: "spike",
x: 13100,
y: 1150
}, {
type: "spike",
x: 13200,
y: 1150
}, {
type: "spike",
x: 13300,
y: 1150
}, {
type: "spike",
x: 14000,
y: 2650
}, {
type: "spike",
x: 14100,
y: 2650
}, {
type: "spike",
x: 14200,
y: 2650
}, {
type: "spike",
x: 14300,
y: 2650
}, {
type: "spike",
x: 14400,
y: 2650
}, {
type: "spike",
x: 14500,
y: 2650
}, {
type: "spike",
x: 14600,
y: 2650
}, {
type: "spike",
x: 14700,
y: 2650
}, {
type: "spike",
x: 14800,
y: 2650
}, {
type: "spike",
x: 14900,
y: 2650
}, {
type: "spike",
x: 15000,
y: 2650
}],
platforms: [{
x: 1100,
y: 2550,
width: 200,
height: 30
}, {
x: 1500,
y: 2550,
width: 200,
height: 30
}, {
x: 2100,
y: 2400,
width: 400,
height: 30
}, {
x: 3000,
y: 2250,
width: 400,
height: 30
}, {
x: 4000,
y: 2100,
width: 400,
height: 30
}, {
x: 5100,
y: 1950,
width: 600,
height: 30
}, {
x: 6300,
y: 1800,
width: 800,
height: 30
}, {
x: 7700,
y: 1650,
width: 1000,
height: 30
}, {
x: 9300,
y: 1500,
width: 1000,
height: 30
}, {
x: 10900,
y: 1350,
width: 1200,
height: 30
}, {
x: 12700,
y: 1200,
width: 1200,
height: 30
}, {
x: 13800,
y: 2200,
width: 200,
height: 30
}, {
x: 15200,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 6,
name: "Precision Master",
difficulty: 6,
length: 18000,
music: "level6Music",
obstacles: [{
type: "spike",
x: 600,
y: 2650
}, {
type: "spike",
x: 700,
y: 2650
}, {
type: "spike",
x: 1200,
y: 2500
}, {
type: "spike",
x: 1250,
y: 2500
}, {
type: "spike",
x: 1300,
y: 2500
}, {
type: "spike",
x: 1350,
y: 2500
}, {
type: "spike",
x: 1850,
y: 2350
}, {
type: "spike",
x: 1900,
y: 2350
}, {
type: "spike",
x: 1950,
y: 2350
}, {
type: "spike",
x: 2000,
y: 2350
}, {
type: "spike",
x: 2050,
y: 2350
}, {
type: "spike",
x: 2100,
y: 2350
}, {
type: "spike",
x: 2650,
y: 2200
}, {
type: "spike",
x: 2700,
y: 2200
}, {
type: "spike",
x: 2750,
y: 2200
}, {
type: "spike",
x: 2800,
y: 2200
}, {
type: "spike",
x: 2850,
y: 2200
}, {
type: "spike",
x: 2900,
y: 2200
}, {
type: "spike",
x: 2950,
y: 2200
}, {
type: "spike",
x: 3000,
y: 2200
}, {
type: "spike",
x: 3600,
y: 2050
}, {
type: "spike",
x: 3650,
y: 2050
}, {
type: "spike",
x: 3700,
y: 2050
}, {
type: "spike",
x: 3750,
y: 2050
}, {
type: "spike",
x: 3800,
y: 2050
}, {
type: "spike",
x: 3850,
y: 2050
}, {
type: "spike",
x: 3900,
y: 2050
}, {
type: "spike",
x: 3950,
y: 2050
}, {
type: "spike",
x: 4000,
y: 2050
}, {
type: "spike",
x: 4050,
y: 2050
}, {
type: "spike",
x: 4700,
y: 1900
}, {
type: "spike",
x: 4750,
y: 1900
}, {
type: "spike",
x: 4800,
y: 1900
}, {
type: "spike",
x: 4850,
y: 1900
}, {
type: "spike",
x: 4900,
y: 1900
}, {
type: "spike",
x: 4950,
y: 1900
}, {
type: "spike",
x: 5000,
y: 1900
}, {
type: "spike",
x: 5050,
y: 1900
}, {
type: "spike",
x: 5100,
y: 1900
}, {
type: "spike",
x: 5150,
y: 1900
}, {
type: "spike",
x: 5200,
y: 1900
}, {
type: "spike",
x: 5250,
y: 1900
}, {
type: "spike",
x: 5950,
y: 1750
}, {
type: "spike",
x: 6000,
y: 1750
}, {
type: "spike",
x: 6050,
y: 1750
}, {
type: "spike",
x: 6100,
y: 1750
}, {
type: "spike",
x: 6150,
y: 1750
}, {
type: "spike",
x: 6200,
y: 1750
}, {
type: "spike",
x: 6250,
y: 1750
}, {
type: "spike",
x: 6300,
y: 1750
}, {
type: "spike",
x: 6350,
y: 1750
}, {
type: "spike",
x: 6400,
y: 1750
}, {
type: "spike",
x: 6450,
y: 1750
}, {
type: "spike",
x: 6500,
y: 1750
}, {
type: "spike",
x: 6550,
y: 1750
}, {
type: "spike",
x: 6600,
y: 1750
}, {
type: "spike",
x: 7350,
y: 1600
}, {
type: "spike",
x: 7400,
y: 1600
}, {
type: "spike",
x: 7450,
y: 1600
}, {
type: "spike",
x: 7500,
y: 1600
}, {
type: "spike",
x: 7550,
y: 1600
}, {
type: "spike",
x: 7600,
y: 1600
}, {
type: "spike",
x: 7650,
y: 1600
}, {
type: "spike",
x: 7700,
y: 1600
}, {
type: "spike",
x: 7750,
y: 1600
}, {
type: "spike",
x: 7800,
y: 1600
}, {
type: "spike",
x: 7850,
y: 1600
}, {
type: "spike",
x: 7900,
y: 1600
}, {
type: "spike",
x: 7950,
y: 1600
}, {
type: "spike",
x: 8000,
y: 1600
}, {
type: "spike",
x: 8050,
y: 1600
}, {
type: "spike",
x: 8100,
y: 1600
}, {
type: "spike",
x: 8900,
y: 1450
}, {
type: "spike",
x: 8950,
y: 1450
}, {
type: "spike",
x: 9000,
y: 1450
}, {
type: "spike",
x: 9050,
y: 1450
}, {
type: "spike",
x: 9100,
y: 1450
}, {
type: "spike",
x: 9150,
y: 1450
}, {
type: "spike",
x: 9200,
y: 1450
}, {
type: "spike",
x: 9250,
y: 1450
}, {
type: "spike",
x: 9300,
y: 1450
}, {
type: "spike",
x: 9350,
y: 1450
}, {
type: "spike",
x: 9400,
y: 1450
}, {
type: "spike",
x: 9450,
y: 1450
}, {
type: "spike",
x: 9500,
y: 1450
}, {
type: "spike",
x: 9550,
y: 1450
}, {
type: "spike",
x: 9600,
y: 1450
}, {
type: "spike",
x: 9650,
y: 1450
}, {
type: "spike",
x: 9700,
y: 1450
}, {
type: "spike",
x: 9750,
y: 1450
}, {
type: "spike",
x: 10550,
y: 1300
}, {
type: "spike",
x: 10600,
y: 1300
}, {
type: "spike",
x: 10650,
y: 1300
}, {
type: "spike",
x: 10700,
y: 1300
}, {
type: "spike",
x: 10750,
y: 1300
}, {
type: "spike",
x: 10800,
y: 1300
}, {
type: "spike",
x: 10850,
y: 1300
}, {
type: "spike",
x: 10900,
y: 1300
}, {
type: "spike",
x: 10950,
y: 1300
}, {
type: "spike",
x: 11000,
y: 1300
}, {
type: "spike",
x: 11050,
y: 1300
}, {
type: "spike",
x: 11100,
y: 1300
}, {
type: "spike",
x: 11150,
y: 1300
}, {
type: "spike",
x: 11200,
y: 1300
}, {
type: "spike",
x: 11250,
y: 1300
}, {
type: "spike",
x: 11300,
y: 1300
}, {
type: "spike",
x: 11350,
y: 1300
}, {
type: "spike",
x: 11400,
y: 1300
}, {
type: "spike",
x: 11450,
y: 1300
}, {
type: "spike",
x: 11500,
y: 1300
}, {
type: "spike",
x: 12350,
y: 1150
}, {
type: "spike",
x: 12400,
y: 1150
}, {
type: "spike",
x: 12450,
y: 1150
}, {
type: "spike",
x: 12500,
y: 1150
}, {
type: "spike",
x: 12550,
y: 1150
}, {
type: "spike",
x: 12600,
y: 1150
}, {
type: "spike",
x: 12650,
y: 1150
}, {
type: "spike",
x: 12700,
y: 1150
}, {
type: "spike",
x: 12750,
y: 1150
}, {
type: "spike",
x: 12800,
y: 1150
}, {
type: "spike",
x: 12850,
y: 1150
}, {
type: "spike",
x: 12900,
y: 1150
}, {
type: "spike",
x: 12950,
y: 1150
}, {
type: "spike",
x: 13000,
y: 1150
}, {
type: "spike",
x: 13050,
y: 1150
}, {
type: "spike",
x: 13100,
y: 1150
}, {
type: "spike",
x: 13150,
y: 1150
}, {
type: "spike",
x: 13200,
y: 1150
}, {
type: "spike",
x: 13250,
y: 1150
}, {
type: "spike",
x: 13300,
y: 1150
}, {
type: "spike",
x: 13350,
y: 1150
}, {
type: "spike",
x: 13400,
y: 1150
}, {
type: "spike",
x: 14250,
y: 1000
}, {
type: "spike",
x: 14300,
y: 1000
}, {
type: "spike",
x: 14350,
y: 1000
}, {
type: "spike",
x: 14400,
y: 1000
}, {
type: "spike",
x: 14450,
y: 1000
}, {
type: "spike",
x: 14500,
y: 1000
}, {
type: "spike",
x: 14550,
y: 1000
}, {
type: "spike",
x: 14600,
y: 1000
}, {
type: "spike",
x: 14650,
y: 1000
}, {
type: "spike",
x: 14700,
y: 1000
}, {
type: "spike",
x: 14750,
y: 1000
}, {
type: "spike",
x: 14800,
y: 1000
}, {
type: "spike",
x: 14850,
y: 1000
}, {
type: "spike",
x: 14900,
y: 1000
}, {
type: "spike",
x: 14950,
y: 1000
}, {
type: "spike",
x: 15000,
y: 1000
}, {
type: "spike",
x: 15050,
y: 1000
}, {
type: "spike",
x: 15100,
y: 1000
}, {
type: "spike",
x: 15150,
y: 1000
}, {
type: "spike",
x: 15200,
y: 1000
}, {
type: "spike",
x: 15250,
y: 1000
}, {
type: "spike",
x: 15300,
y: 1000
}, {
type: "spike",
x: 15350,
y: 1000
}, {
type: "spike",
x: 15400,
y: 1000
}, {
type: "spike",
x: 16300,
y: 2650
}, {
type: "spike",
x: 16350,
y: 2650
}, {
type: "spike",
x: 16400,
y: 2650
}, {
type: "spike",
x: 16450,
y: 2650
}, {
type: "spike",
x: 16500,
y: 2650
}, {
type: "spike",
x: 16550,
y: 2650
}, {
type: "spike",
x: 16600,
y: 2650
}, {
type: "spike",
x: 16650,
y: 2650
}, {
type: "spike",
x: 16700,
y: 2650
}, {
type: "spike",
x: 16750,
y: 2650
}, {
type: "spike",
x: 16800,
y: 2650
}, {
type: "spike",
x: 16850,
y: 2650
}, {
type: "spike",
x: 16900,
y: 2650
}, {
type: "spike",
x: 16950,
y: 2650
}, {
type: "spike",
x: 17000,
y: 2650
}],
platforms: [{
x: 900,
y: 2550,
width: 150,
height: 30
}, {
x: 1275,
y: 2550,
width: 150,
height: 30
}, {
x: 1975,
y: 2400,
width: 250,
height: 30
}, {
x: 2825,
y: 2250,
width: 350,
height: 30
}, {
x: 3825,
y: 2100,
width: 450,
height: 30
}, {
x: 5025,
y: 1950,
width: 450,
height: 30
}, {
x: 6275,
y: 1800,
width: 650,
height: 30
}, {
x: 7675,
y: 1650,
width: 850,
height: 30
}, {
x: 9325,
y: 1500,
width: 850,
height: 30
}, {
x: 10975,
y: 1350,
width: 1050,
height: 30
}, {
x: 12825,
y: 1200,
width: 1150,
height: 30
}, {
x: 14825,
y: 1050,
width: 1150,
height: 30
}, {
x: 16000,
y: 2200,
width: 200,
height: 30
}, {
x: 17200,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 7,
name: "Shadow Runner",
difficulty: 7,
length: 20000,
music: "level7Music",
obstacles: [{
type: "spike",
x: 500,
y: 2650
}, {
type: "spike",
x: 600,
y: 2650
}, {
type: "spike",
x: 700,
y: 2650
}, {
type: "spike",
x: 1100,
y: 2500
}, {
type: "spike",
x: 1200,
y: 2500
}, {
type: "spike",
x: 1300,
y: 2500
}, {
type: "spike",
x: 1400,
y: 2500
}, {
type: "spike",
x: 1800,
y: 2350
}, {
type: "spike",
x: 1900,
y: 2350
}, {
type: "spike",
x: 2000,
y: 2350
}, {
type: "spike",
x: 2100,
y: 2350
}, {
type: "spike",
x: 2200,
y: 2350
}, {
type: "spike",
x: 2600,
y: 2200
}, {
type: "spike",
x: 2700,
y: 2200
}, {
type: "spike",
x: 2800,
y: 2200
}, {
type: "spike",
x: 2900,
y: 2200
}, {
type: "spike",
x: 3000,
y: 2200
}, {
type: "spike",
x: 3100,
y: 2200
}, {
type: "spike",
x: 3500,
y: 2050
}, {
type: "spike",
x: 3600,
y: 2050
}, {
type: "spike",
x: 3700,
y: 2050
}, {
type: "spike",
x: 3800,
y: 2050
}, {
type: "spike",
x: 3900,
y: 2050
}, {
type: "spike",
x: 4000,
y: 2050
}, {
type: "spike",
x: 4100,
y: 2050
}, {
type: "spike",
x: 4500,
y: 1900
}, {
type: "spike",
x: 4600,
y: 1900
}, {
type: "spike",
x: 4700,
y: 1900
}, {
type: "spike",
x: 4800,
y: 1900
}, {
type: "spike",
x: 4900,
y: 1900
}, {
type: "spike",
x: 5000,
y: 1900
}, {
type: "spike",
x: 5100,
y: 1900
}, {
type: "spike",
x: 5200,
y: 1900
}, {
type: "spike",
x: 5700,
y: 1750
}, {
type: "spike",
x: 5800,
y: 1750
}, {
type: "spike",
x: 5900,
y: 1750
}, {
type: "spike",
x: 6000,
y: 1750
}, {
type: "spike",
x: 6100,
y: 1750
}, {
type: "spike",
x: 6200,
y: 1750
}, {
type: "spike",
x: 6300,
y: 1750
}, {
type: "spike",
x: 6400,
y: 1750
}, {
type: "spike",
x: 6500,
y: 1750
}, {
type: "spike",
x: 7000,
y: 1600
}, {
type: "spike",
x: 7100,
y: 1600
}, {
type: "spike",
x: 7200,
y: 1600
}, {
type: "spike",
x: 7300,
y: 1600
}, {
type: "spike",
x: 7400,
y: 1600
}, {
type: "spike",
x: 7500,
y: 1600
}, {
type: "spike",
x: 7600,
y: 1600
}, {
type: "spike",
x: 7700,
y: 1600
}, {
type: "spike",
x: 7800,
y: 1600
}, {
type: "spike",
x: 7900,
y: 1600
}, {
type: "spike",
x: 8500,
y: 1450
}, {
type: "spike",
x: 8600,
y: 1450
}, {
type: "spike",
x: 8700,
y: 1450
}, {
type: "spike",
x: 8800,
y: 1450
}, {
type: "spike",
x: 8900,
y: 1450
}, {
type: "spike",
x: 9000,
y: 1450
}, {
type: "spike",
x: 9100,
y: 1450
}, {
type: "spike",
x: 9200,
y: 1450
}, {
type: "spike",
x: 9300,
y: 1450
}, {
type: "spike",
x: 9400,
y: 1450
}, {
type: "spike",
x: 10000,
y: 1300
}, {
type: "spike",
x: 10100,
y: 1300
}, {
type: "spike",
x: 10200,
y: 1300
}, {
type: "spike",
x: 10300,
y: 1300
}, {
type: "spike",
x: 10400,
y: 1300
}, {
type: "spike",
x: 10500,
y: 1300
}, {
type: "spike",
x: 10600,
y: 1300
}, {
type: "spike",
x: 10700,
y: 1300
}, {
type: "spike",
x: 10800,
y: 1300
}, {
type: "spike",
x: 10900,
y: 1300
}, {
type: "spike",
x: 11000,
y: 1300
}, {
type: "spike",
x: 11100,
y: 1300
}, {
type: "spike",
x: 11700,
y: 1150
}, {
type: "spike",
x: 11800,
y: 1150
}, {
type: "spike",
x: 11900,
y: 1150
}, {
type: "spike",
x: 12000,
y: 1150
}, {
type: "spike",
x: 12100,
y: 1150
}, {
type: "spike",
x: 12200,
y: 1150
}, {
type: "spike",
x: 12300,
y: 1150
}, {
type: "spike",
x: 12400,
y: 1150
}, {
type: "spike",
x: 12500,
y: 1150
}, {
type: "spike",
x: 12600,
y: 1150
}, {
type: "spike",
x: 12700,
y: 1150
}, {
type: "spike",
x: 12800,
y: 1150
}, {
type: "spike",
x: 12900,
y: 1150
}, {
type: "spike",
x: 13500,
y: 1000
}, {
type: "spike",
x: 13600,
y: 1000
}, {
type: "spike",
x: 13700,
y: 1000
}, {
type: "spike",
x: 13800,
y: 1000
}, {
type: "spike",
x: 13900,
y: 1000
}, {
type: "spike",
x: 14000,
y: 1000
}, {
type: "spike",
x: 14100,
y: 1000
}, {
type: "spike",
x: 14200,
y: 1000
}, {
type: "spike",
x: 14300,
y: 1000
}, {
type: "spike",
x: 14400,
y: 1000
}, {
type: "spike",
x: 14500,
y: 1000
}, {
type: "spike",
x: 14600,
y: 1000
}, {
type: "spike",
x: 14700,
y: 1000
}, {
type: "spike",
x: 14800,
y: 1000
}, {
type: "spike",
x: 15500,
y: 850
}, {
type: "spike",
x: 15600,
y: 850
}, {
type: "spike",
x: 15700,
y: 850
}, {
type: "spike",
x: 15800,
y: 850
}, {
type: "spike",
x: 15900,
y: 850
}, {
type: "spike",
x: 16000,
y: 850
}, {
type: "spike",
x: 16100,
y: 850
}, {
type: "spike",
x: 16200,
y: 850
}, {
type: "spike",
x: 16300,
y: 850
}, {
type: "spike",
x: 16400,
y: 850
}, {
type: "spike",
x: 16500,
y: 850
}, {
type: "spike",
x: 16600,
y: 850
}, {
type: "spike",
x: 16700,
y: 850
}, {
type: "spike",
x: 16800,
y: 850
}, {
type: "spike",
x: 16900,
y: 850
}, {
type: "spike",
x: 17000,
y: 850
}, {
type: "spike",
x: 17800,
y: 2650
}, {
type: "spike",
x: 17900,
y: 2650
}, {
type: "spike",
x: 18000,
y: 2650
}, {
type: "spike",
x: 18100,
y: 2650
}, {
type: "spike",
x: 18200,
y: 2650
}, {
type: "spike",
x: 18300,
y: 2650
}, {
type: "spike",
x: 18400,
y: 2650
}, {
type: "spike",
x: 18500,
y: 2650
}, {
type: "spike",
x: 18600,
y: 2650
}, {
type: "spike",
x: 18700,
y: 2650
}, {
type: "spike",
x: 18800,
y: 2650
}, {
type: "spike",
x: 18900,
y: 2650
}],
platforms: [{
x: 800,
y: 2550,
width: 120,
height: 30
}, {
x: 1250,
y: 2550,
width: 120,
height: 30
}, {
x: 1950,
y: 2400,
width: 200,
height: 30
}, {
x: 2750,
y: 2250,
width: 300,
height: 30
}, {
x: 3700,
y: 2100,
width: 400,
height: 30
}, {
x: 4800,
y: 1950,
width: 400,
height: 30
}, {
x: 6000,
y: 1800,
width: 500,
height: 30
}, {
x: 7450,
y: 1650,
width: 700,
height: 30
}, {
x: 8950,
y: 1500,
width: 800,
height: 30
}, {
x: 10550,
y: 1350,
width: 900,
height: 30
}, {
x: 12250,
y: 1200,
width: 1100,
height: 30
}, {
x: 14150,
y: 1050,
width: 1100,
height: 30
}, {
x: 15950,
y: 900,
width: 1200,
height: 30
}, {
x: 17500,
y: 2200,
width: 200,
height: 30
}, {
x: 19000,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 8,
name: "Velocity Maze",
difficulty: 8,
length: 22000,
music: "level8Music",
obstacles: [{
type: "spike",
x: 400,
y: 2650
}, {
type: "spike",
x: 500,
y: 2650
}, {
type: "spike",
x: 600,
y: 2650
}, {
type: "spike",
x: 700,
y: 2650
}, {
type: "spike",
x: 1000,
y: 2500
}, {
type: "spike",
x: 1100,
y: 2500
}, {
type: "spike",
x: 1200,
y: 2500
}, {
type: "spike",
x: 1300,
y: 2500
}, {
type: "spike",
x: 1400,
y: 2500
}, {
type: "spike",
x: 1700,
y: 2350
}, {
type: "spike",
x: 1800,
y: 2350
}, {
type: "spike",
x: 1900,
y: 2350
}, {
type: "spike",
x: 2000,
y: 2350
}, {
type: "spike",
x: 2100,
y: 2350
}, {
type: "spike",
x: 2200,
y: 2350
}, {
type: "spike",
x: 2300,
y: 2350
}, {
type: "spike",
x: 2600,
y: 2200
}, {
type: "spike",
x: 2700,
y: 2200
}, {
type: "spike",
x: 2800,
y: 2200
}, {
type: "spike",
x: 2900,
y: 2200
}, {
type: "spike",
x: 3000,
y: 2200
}, {
type: "spike",
x: 3100,
y: 2200
}, {
type: "spike",
x: 3200,
y: 2200
}, {
type: "spike",
x: 3300,
y: 2200
}, {
type: "spike",
x: 3700,
y: 2050
}, {
type: "spike",
x: 3800,
y: 2050
}, {
type: "spike",
x: 3900,
y: 2050
}, {
type: "spike",
x: 4000,
y: 2050
}, {
type: "spike",
x: 4100,
y: 2050
}, {
type: "spike",
x: 4200,
y: 2050
}, {
type: "spike",
x: 4300,
y: 2050
}, {
type: "spike",
x: 4400,
y: 2050
}, {
type: "spike",
x: 4500,
y: 2050
}, {
type: "spike",
x: 4900,
y: 1900
}, {
type: "spike",
x: 5000,
y: 1900
}, {
type: "spike",
x: 5100,
y: 1900
}, {
type: "spike",
x: 5200,
y: 1900
}, {
type: "spike",
x: 5300,
y: 1900
}, {
type: "spike",
x: 5400,
y: 1900
}, {
type: "spike",
x: 5500,
y: 1900
}, {
type: "spike",
x: 5600,
y: 1900
}, {
type: "spike",
x: 5700,
y: 1900
}, {
type: "spike",
x: 5800,
y: 1900
}, {
type: "spike",
x: 6200,
y: 1750
}, {
type: "spike",
x: 6300,
y: 1750
}, {
type: "spike",
x: 6400,
y: 1750
}, {
type: "spike",
x: 6500,
y: 1750
}, {
type: "spike",
x: 6600,
y: 1750
}, {
type: "spike",
x: 6700,
y: 1750
}, {
type: "spike",
x: 6800,
y: 1750
}, {
type: "spike",
x: 6900,
y: 1750
}, {
type: "spike",
x: 7000,
y: 1750
}, {
type: "spike",
x: 7100,
y: 1750
}, {
type: "spike",
x: 7200,
y: 1750
}, {
type: "spike",
x: 7600,
y: 1600
}, {
type: "spike",
x: 7700,
y: 1600
}, {
type: "spike",
x: 7800,
y: 1600
}, {
type: "spike",
x: 7900,
y: 1600
}, {
type: "spike",
x: 8000,
y: 1600
}, {
type: "spike",
x: 8100,
y: 1600
}, {
type: "spike",
x: 8200,
y: 1600
}, {
type: "spike",
x: 8300,
y: 1600
}, {
type: "spike",
x: 8400,
y: 1600
}, {
type: "spike",
x: 8500,
y: 1600
}, {
type: "spike",
x: 8600,
y: 1600
}, {
type: "spike",
x: 8700,
y: 1600
}, {
type: "spike",
x: 9100,
y: 1450
}, {
type: "spike",
x: 9200,
y: 1450
}, {
type: "spike",
x: 9300,
y: 1450
}, {
type: "spike",
x: 9400,
y: 1450
}, {
type: "spike",
x: 9500,
y: 1450
}, {
type: "spike",
x: 9600,
y: 1450
}, {
type: "spike",
x: 9700,
y: 1450
}, {
type: "spike",
x: 9800,
y: 1450
}, {
type: "spike",
x: 9900,
y: 1450
}, {
type: "spike",
x: 10000,
y: 1450
}, {
type: "spike",
x: 10100,
y: 1450
}, {
type: "spike",
x: 10200,
y: 1450
}, {
type: "spike",
x: 10300,
y: 1450
}, {
type: "spike",
x: 10700,
y: 1300
}, {
type: "spike",
x: 10800,
y: 1300
}, {
type: "spike",
x: 10900,
y: 1300
}, {
type: "spike",
x: 11000,
y: 1300
}, {
type: "spike",
x: 11100,
y: 1300
}, {
type: "spike",
x: 11200,
y: 1300
}, {
type: "spike",
x: 11300,
y: 1300
}, {
type: "spike",
x: 11400,
y: 1300
}, {
type: "spike",
x: 11500,
y: 1300
}, {
type: "spike",
x: 11600,
y: 1300
}, {
type: "spike",
x: 11700,
y: 1300
}, {
type: "spike",
x: 11800,
y: 1300
}, {
type: "spike",
x: 11900,
y: 1300
}, {
type: "spike",
x: 12000,
y: 1300
}, {
type: "spike",
x: 12400,
y: 1150
}, {
type: "spike",
x: 12500,
y: 1150
}, {
type: "spike",
x: 12600,
y: 1150
}, {
type: "spike",
x: 12700,
y: 1150
}, {
type: "spike",
x: 12800,
y: 1150
}, {
type: "spike",
x: 12900,
y: 1150
}, {
type: "spike",
x: 13000,
y: 1150
}, {
type: "spike",
x: 13100,
y: 1150
}, {
type: "spike",
x: 13200,
y: 1150
}, {
type: "spike",
x: 13300,
y: 1150
}, {
type: "spike",
x: 13400,
y: 1150
}, {
type: "spike",
x: 13500,
y: 1150
}, {
type: "spike",
x: 13600,
y: 1150
}, {
type: "spike",
x: 13700,
y: 1150
}, {
type: "spike",
x: 13800,
y: 1150
}, {
type: "spike",
x: 14200,
y: 1000
}, {
type: "spike",
x: 14300,
y: 1000
}, {
type: "spike",
x: 14400,
y: 1000
}, {
type: "spike",
x: 14500,
y: 1000
}, {
type: "spike",
x: 14600,
y: 1000
}, {
type: "spike",
x: 14700,
y: 1000
}, {
type: "spike",
x: 14800,
y: 1000
}, {
type: "spike",
x: 14900,
y: 1000
}, {
type: "spike",
x: 15000,
y: 1000
}, {
type: "spike",
x: 15100,
y: 1000
}, {
type: "spike",
x: 15200,
y: 1000
}, {
type: "spike",
x: 15300,
y: 1000
}, {
type: "spike",
x: 15400,
y: 1000
}, {
type: "spike",
x: 15500,
y: 1000
}, {
type: "spike",
x: 15600,
y: 1000
}, {
type: "spike",
x: 15700,
y: 1000
}, {
type: "spike",
x: 16100,
y: 850
}, {
type: "spike",
x: 16200,
y: 850
}, {
type: "spike",
x: 16300,
y: 850
}, {
type: "spike",
x: 16400,
y: 850
}, {
type: "spike",
x: 16500,
y: 850
}, {
type: "spike",
x: 16600,
y: 850
}, {
type: "spike",
x: 16700,
y: 850
}, {
type: "spike",
x: 16800,
y: 850
}, {
type: "spike",
x: 16900,
y: 850
}, {
type: "spike",
x: 17000,
y: 850
}, {
type: "spike",
x: 17100,
y: 850
}, {
type: "spike",
x: 17200,
y: 850
}, {
type: "spike",
x: 17300,
y: 850
}, {
type: "spike",
x: 17400,
y: 850
}, {
type: "spike",
x: 17500,
y: 850
}, {
type: "spike",
x: 17600,
y: 850
}, {
type: "spike",
x: 17700,
y: 850
}, {
type: "spike",
x: 18100,
y: 700
}, {
type: "spike",
x: 18200,
y: 700
}, {
type: "spike",
x: 18300,
y: 700
}, {
type: "spike",
x: 18400,
y: 700
}, {
type: "spike",
x: 18500,
y: 700
}, {
type: "spike",
x: 18600,
y: 700
}, {
type: "spike",
x: 18700,
y: 700
}, {
type: "spike",
x: 18800,
y: 700
}, {
type: "spike",
x: 18900,
y: 700
}, {
type: "spike",
x: 19000,
y: 700
}, {
type: "spike",
x: 19100,
y: 700
}, {
type: "spike",
x: 19200,
y: 700
}, {
type: "spike",
x: 19300,
y: 700
}, {
type: "spike",
x: 19400,
y: 700
}, {
type: "spike",
x: 19500,
y: 700
}, {
type: "spike",
x: 19600,
y: 700
}, {
type: "spike",
x: 19700,
y: 700
}, {
type: "spike",
x: 19800,
y: 700
}, {
type: "spike",
x: 20600,
y: 2650
}, {
type: "spike",
x: 20700,
y: 2650
}, {
type: "spike",
x: 20800,
y: 2650
}, {
type: "spike",
x: 20900,
y: 2650
}, {
type: "spike",
x: 21000,
y: 2650
}, {
type: "spike",
x: 21100,
y: 2650
}, {
type: "spike",
x: 21200,
y: 2650
}, {
type: "spike",
x: 21300,
y: 2650
}, {
type: "spike",
x: 21400,
y: 2650
}, {
type: "spike",
x: 21500,
y: 2650
}],
platforms: [{
x: 750,
y: 2550,
width: 100,
height: 30
}, {
x: 1200,
y: 2550,
width: 100,
height: 30
}, {
x: 1950,
y: 2400,
width: 180,
height: 30
}, {
x: 2950,
y: 2250,
width: 280,
height: 30
}, {
x: 4100,
y: 2100,
width: 380,
height: 30
}, {
x: 5350,
y: 1950,
width: 380,
height: 30
}, {
x: 6700,
y: 1800,
width: 480,
height: 30
}, {
x: 8150,
y: 1650,
width: 580,
height: 30
}, {
x: 9700,
y: 1500,
width: 680,
height: 30
}, {
x: 11350,
y: 1350,
width: 780,
height: 30
}, {
x: 13050,
y: 1200,
width: 880,
height: 30
}, {
x: 14950,
y: 1050,
width: 980,
height: 30
}, {
x: 16950,
y: 900,
width: 1080,
height: 30
}, {
x: 18950,
y: 750,
width: 1180,
height: 30
}, {
x: 20300,
y: 2200,
width: 200,
height: 30
}, {
x: 21600,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 9,
name: "Extreme Challenge",
difficulty: 9,
length: 24000,
music: "level9Music",
obstacles: [{
type: "spike",
x: 300,
y: 2650
}, {
type: "spike",
x: 400,
y: 2650
}, {
type: "spike",
x: 500,
y: 2650
}, {
type: "spike",
x: 600,
y: 2650
}, {
type: "spike",
x: 700,
y: 2650
}, {
type: "spike",
x: 900,
y: 2500
}, {
type: "spike",
x: 1000,
y: 2500
}, {
type: "spike",
x: 1100,
y: 2500
}, {
type: "spike",
x: 1200,
y: 2500
}, {
type: "spike",
x: 1300,
y: 2500
}, {
type: "spike",
x: 1400,
y: 2500
}, {
type: "spike",
x: 1600,
y: 2350
}, {
type: "spike",
x: 1700,
y: 2350
}, {
type: "spike",
x: 1800,
y: 2350
}, {
type: "spike",
x: 1900,
y: 2350
}, {
type: "spike",
x: 2000,
y: 2350
}, {
type: "spike",
x: 2100,
y: 2350
}, {
type: "spike",
x: 2200,
y: 2350
}, {
type: "spike",
x: 2300,
y: 2350
}, {
type: "spike",
x: 2500,
y: 2200
}, {
type: "spike",
x: 2600,
y: 2200
}, {
type: "spike",
x: 2700,
y: 2200
}, {
type: "spike",
x: 2800,
y: 2200
}, {
type: "spike",
x: 2900,
y: 2200
}, {
type: "spike",
x: 3000,
y: 2200
}, {
type: "spike",
x: 3100,
y: 2200
}, {
type: "spike",
x: 3200,
y: 2200
}, {
type: "spike",
x: 3300,
y: 2200
}, {
type: "spike",
x: 3400,
y: 2200
}, {
type: "spike",
x: 3600,
y: 2050
}, {
type: "spike",
x: 3700,
y: 2050
}, {
type: "spike",
x: 3800,
y: 2050
}, {
type: "spike",
x: 3900,
y: 2050
}, {
type: "spike",
x: 4000,
y: 2050
}, {
type: "spike",
x: 4100,
y: 2050
}, {
type: "spike",
x: 4200,
y: 2050
}, {
type: "spike",
x: 4300,
y: 2050
}, {
type: "spike",
x: 4400,
y: 2050
}, {
type: "spike",
x: 4500,
y: 2050
}, {
type: "spike",
x: 4600,
y: 2050
}, {
type: "spike",
x: 4800,
y: 1900
}, {
type: "spike",
x: 4900,
y: 1900
}, {
type: "spike",
x: 5000,
y: 1900
}, {
type: "spike",
x: 5100,
y: 1900
}, {
type: "spike",
x: 5200,
y: 1900
}, {
type: "spike",
x: 5300,
y: 1900
}, {
type: "spike",
x: 5400,
y: 1900
}, {
type: "spike",
x: 5500,
y: 1900
}, {
type: "spike",
x: 5600,
y: 1900
}, {
type: "spike",
x: 5700,
y: 1900
}, {
type: "spike",
x: 5800,
y: 1900
}, {
type: "spike",
x: 5900,
y: 1900
}, {
type: "spike",
x: 6100,
y: 1750
}, {
type: "spike",
x: 6200,
y: 1750
}, {
type: "spike",
x: 6300,
y: 1750
}, {
type: "spike",
x: 6400,
y: 1750
}, {
type: "spike",
x: 6500,
y: 1750
}, {
type: "spike",
x: 6600,
y: 1750
}, {
type: "spike",
x: 6700,
y: 1750
}, {
type: "spike",
x: 6800,
y: 1750
}, {
type: "spike",
x: 6900,
y: 1750
}, {
type: "spike",
x: 7000,
y: 1750
}, {
type: "spike",
x: 7100,
y: 1750
}, {
type: "spike",
x: 7200,
y: 1750
}, {
type: "spike",
x: 7300,
y: 1750
}, {
type: "spike",
x: 7500,
y: 1600
}, {
type: "spike",
x: 7600,
y: 1600
}, {
type: "spike",
x: 7700,
y: 1600
}, {
type: "spike",
x: 7800,
y: 1600
}, {
type: "spike",
x: 7900,
y: 1600
}, {
type: "spike",
x: 8000,
y: 1600
}, {
type: "spike",
x: 8100,
y: 1600
}, {
type: "spike",
x: 8200,
y: 1600
}, {
type: "spike",
x: 8300,
y: 1600
}, {
type: "spike",
x: 8400,
y: 1600
}, {
type: "spike",
x: 8500,
y: 1600
}, {
type: "spike",
x: 8600,
y: 1600
}, {
type: "spike",
x: 8700,
y: 1600
}, {
type: "spike",
x: 8800,
y: 1600
}, {
type: "spike",
x: 9000,
y: 1450
}, {
type: "spike",
x: 9100,
y: 1450
}, {
type: "spike",
x: 9200,
y: 1450
}, {
type: "spike",
x: 9300,
y: 1450
}, {
type: "spike",
x: 9400,
y: 1450
}, {
type: "spike",
x: 9500,
y: 1450
}, {
type: "spike",
x: 9600,
y: 1450
}, {
type: "spike",
x: 9700,
y: 1450
}, {
type: "spike",
x: 9800,
y: 1450
}, {
type: "spike",
x: 9900,
y: 1450
}, {
type: "spike",
x: 10000,
y: 1450
}, {
type: "spike",
x: 10100,
y: 1450
}, {
type: "spike",
x: 10200,
y: 1450
}, {
type: "spike",
x: 10300,
y: 1450
}, {
type: "spike",
x: 10400,
y: 1450
}, {
type: "spike",
x: 10600,
y: 1300
}, {
type: "spike",
x: 10700,
y: 1300
}, {
type: "spike",
x: 10800,
y: 1300
}, {
type: "spike",
x: 10900,
y: 1300
}, {
type: "spike",
x: 11000,
y: 1300
}, {
type: "spike",
x: 11100,
y: 1300
}, {
type: "spike",
x: 11200,
y: 1300
}, {
type: "spike",
x: 11300,
y: 1300
}, {
type: "spike",
x: 11400,
y: 1300
}, {
type: "spike",
x: 11500,
y: 1300
}, {
type: "spike",
x: 11600,
y: 1300
}, {
type: "spike",
x: 11700,
y: 1300
}, {
type: "spike",
x: 11800,
y: 1300
}, {
type: "spike",
x: 11900,
y: 1300
}, {
type: "spike",
x: 12000,
y: 1300
}, {
type: "spike",
x: 12100,
y: 1300
}, {
type: "spike",
x: 12300,
y: 1150
}, {
type: "spike",
x: 12400,
y: 1150
}, {
type: "spike",
x: 12500,
y: 1150
}, {
type: "spike",
x: 12600,
y: 1150
}, {
type: "spike",
x: 12700,
y: 1150
}, {
type: "spike",
x: 12800,
y: 1150
}, {
type: "spike",
x: 12900,
y: 1150
}, {
type: "spike",
x: 13000,
y: 1150
}, {
type: "spike",
x: 13100,
y: 1150
}, {
type: "spike",
x: 13200,
y: 1150
}, {
type: "spike",
x: 13300,
y: 1150
}, {
type: "spike",
x: 13400,
y: 1150
}, {
type: "spike",
x: 13500,
y: 1150
}, {
type: "spike",
x: 13600,
y: 1150
}, {
type: "spike",
x: 13700,
y: 1150
}, {
type: "spike",
x: 13800,
y: 1150
}, {
type: "spike",
x: 13900,
y: 1150
}, {
type: "spike",
x: 14100,
y: 1000
}, {
type: "spike",
x: 14200,
y: 1000
}, {
type: "spike",
x: 14300,
y: 1000
}, {
type: "spike",
x: 14400,
y: 1000
}, {
type: "spike",
x: 14500,
y: 1000
}, {
type: "spike",
x: 14600,
y: 1000
}, {
type: "spike",
x: 14700,
y: 1000
}, {
type: "spike",
x: 14800,
y: 1000
}, {
type: "spike",
x: 14900,
y: 1000
}, {
type: "spike",
x: 15000,
y: 1000
}, {
type: "spike",
x: 15100,
y: 1000
}, {
type: "spike",
x: 15200,
y: 1000
}, {
type: "spike",
x: 15300,
y: 1000
}, {
type: "spike",
x: 15400,
y: 1000
}, {
type: "spike",
x: 15500,
y: 1000
}, {
type: "spike",
x: 15600,
y: 1000
}, {
type: "spike",
x: 15700,
y: 1000
}, {
type: "spike",
x: 15800,
y: 1000
}, {
type: "spike",
x: 16000,
y: 850
}, {
type: "spike",
x: 16100,
y: 850
}, {
type: "spike",
x: 16200,
y: 850
}, {
type: "spike",
x: 16300,
y: 850
}, {
type: "spike",
x: 16400,
y: 850
}, {
type: "spike",
x: 16500,
y: 850
}, {
type: "spike",
x: 16600,
y: 850
}, {
type: "spike",
x: 16700,
y: 850
}, {
type: "spike",
x: 16800,
y: 850
}, {
type: "spike",
x: 16900,
y: 850
}, {
type: "spike",
x: 17000,
y: 850
}, {
type: "spike",
x: 17100,
y: 850
}, {
type: "spike",
x: 17200,
y: 850
}, {
type: "spike",
x: 17300,
y: 850
}, {
type: "spike",
x: 17400,
y: 850
}, {
type: "spike",
x: 17500,
y: 850
}, {
type: "spike",
x: 17600,
y: 850
}, {
type: "spike",
x: 17700,
y: 850
}, {
type: "spike",
x: 17800,
y: 850
}, {
type: "spike",
x: 18000,
y: 700
}, {
type: "spike",
x: 18100,
y: 700
}, {
type: "spike",
x: 18200,
y: 700
}, {
type: "spike",
x: 18300,
y: 700
}, {
type: "spike",
x: 18400,
y: 700
}, {
type: "spike",
x: 18500,
y: 700
}, {
type: "spike",
x: 18600,
y: 700
}, {
type: "spike",
x: 18700,
y: 700
}, {
type: "spike",
x: 18800,
y: 700
}, {
type: "spike",
x: 18900,
y: 700
}, {
type: "spike",
x: 19000,
y: 700
}, {
type: "spike",
x: 19100,
y: 700
}, {
type: "spike",
x: 19200,
y: 700
}, {
type: "spike",
x: 19300,
y: 700
}, {
type: "spike",
x: 19400,
y: 700
}, {
type: "spike",
x: 19500,
y: 700
}, {
type: "spike",
x: 19600,
y: 700
}, {
type: "spike",
x: 19700,
y: 700
}, {
type: "spike",
x: 19800,
y: 700
}, {
type: "spike",
x: 19900,
y: 700
}, {
type: "spike",
x: 20100,
y: 550
}, {
type: "spike",
x: 20200,
y: 550
}, {
type: "spike",
x: 20300,
y: 550
}, {
type: "spike",
x: 20400,
y: 550
}, {
type: "spike",
x: 20500,
y: 550
}, {
type: "spike",
x: 20600,
y: 550
}, {
type: "spike",
x: 20700,
y: 550
}, {
type: "spike",
x: 20800,
y: 550
}, {
type: "spike",
x: 20900,
y: 550
}, {
type: "spike",
x: 21000,
y: 550
}, {
type: "spike",
x: 21100,
y: 550
}, {
type: "spike",
x: 21200,
y: 550
}, {
type: "spike",
x: 21300,
y: 550
}, {
type: "spike",
x: 21400,
y: 550
}, {
type: "spike",
x: 21500,
y: 550
}, {
type: "spike",
x: 21600,
y: 550
}, {
type: "spike",
x: 21700,
y: 550
}, {
type: "spike",
x: 21800,
y: 550
}, {
type: "spike",
x: 21900,
y: 550
}, {
type: "spike",
x: 22000,
y: 550
}, {
type: "spike",
x: 22800,
y: 2650
}, {
type: "spike",
x: 22900,
y: 2650
}, {
type: "spike",
x: 23000,
y: 2650
}, {
type: "spike",
x: 23100,
y: 2650
}, {
type: "spike",
x: 23200,
y: 2650
}, {
type: "spike",
x: 23300,
y: 2650
}, {
type: "spike",
x: 23400,
y: 2650
}, {
type: "spike",
x: 23500,
y: 2650
}, {
type: "spike",
x: 23600,
y: 2650
}, {
type: "spike",
x: 23700,
y: 2650
}],
platforms: [{
x: 750,
y: 2550,
width: 80,
height: 30
}, {
x: 1150,
y: 2550,
width: 80,
height: 30
}, {
x: 1950,
y: 2400,
width: 160,
height: 30
}, {
x: 2950,
y: 2250,
width: 260,
height: 30
}, {
x: 4000,
y: 2100,
width: 360,
height: 30
}, {
x: 5250,
y: 1950,
width: 360,
height: 30
}, {
x: 6700,
y: 1800,
width: 460,
height: 30
}, {
x: 8150,
y: 1650,
width: 560,
height: 30
}, {
x: 9700,
y: 1500,
width: 660,
height: 30
}, {
x: 11350,
y: 1350,
width: 760,
height: 30
}, {
x: 13050,
y: 1200,
width: 860,
height: 30
}, {
x: 14950,
y: 1050,
width: 860,
height: 30
}, {
x: 16900,
y: 900,
width: 960,
height: 30
}, {
x: 18950,
y: 750,
width: 1060,
height: 30
}, {
x: 21050,
y: 600,
width: 1160,
height: 30
}, {
x: 22500,
y: 2200,
width: 200,
height: 30
}, {
x: 23800,
y: 2500,
width: 400,
height: 30
}]
}, {
id: 10,
name: "Master's Gauntlet",
difficulty: 10,
length: 26000,
music: "level10Music",
obstacles: [{
type: "spike",
x: 200,
y: 2650
}, {
type: "spike",
x: 300,
y: 2650
}, {
type: "spike",
x: 400,
y: 2650
}, {
type: "spike",
x: 500,
y: 2650
}, {
type: "spike",
x: 600,
y: 2650
}, {
type: "spike",
x: 700,
y: 2650
}, {
type: "spike",
x: 800,
y: 2500
}, {
type: "spike",
x: 900,
y: 2500
}, {
type: "spike",
x: 1000,
y: 2500
}, {
type: "spike",
x: 1100,
y: 2500
}, {
type: "spike",
x: 1200,
y: 2500
}, {
type: "spike",
x: 1300,
y: 2500
}, {
type: "spike",
x: 1400,
y: 2500
}, {
type: "spike",
x: 1500,
y: 2350
}, {
type: "spike",
x: 1600,
y: 2350
}, {
type: "spike",
x: 1700,
y: 2350
}, {
type: "spike",
x: 1800,
y: 2350
}, {
type: "spike",
x: 1900,
y: 2350
}, {
type: "spike",
x: 2000,
y: 2350
}, {
type: "spike",
x: 2100,
y: 2350
}, {
type: "spike",
x: 2200,
y: 2350
}, {
type: "spike",
x: 2300,
y: 2350
}, {
type: "spike",
x: 2400,
y: 2200
}, {
type: "spike",
x: 2500,
y: 2200
}, {
type: "spike",
x: 2600,
y: 2200
}, {
type: "spike",
x: 2700,
y: 2200
}, {
type: "spike",
x: 2800,
y: 2200
}, {
type: "spike",
x: 2900,
y: 2200
}, {
type: "spike",
x: 3000,
y: 2200
}, {
type: "spike",
x: 3100,
y: 2200
}, {
type: "spike",
x: 3200,
y: 2200
}, {
type: "spike",
x: 3300,
y: 2200
}, {
type: "spike",
x: 3400,
y: 2200
}, {
type: "spike",
x: 3500,
y: 2050
}, {
type: "spike",
x: 3600,
y: 2050
}, {
type: "spike",
x: 3700,
y: 2050
}, {
type: "spike",
x: 3800,
y: 2050
}, {
type: "spike",
x: 3900,
y: 2050
}, {
type: "spike",
x: 4000,
y: 2050
}, {
type: "spike",
x: 4100,
y: 2050
}, {
type: "spike",
x: 4200,
y: 2050
}, {
type: "spike",
x: 4300,
y: 2050
}, {
type: "spike",
x: 4400,
y: 2050
}, {
type: "spike",
x: 4500,
y: 2050
}, {
type: "spike",
x: 4600,
y: 2050
}, {
type: "spike",
x: 4700,
y: 1900
}, {
type: "spike",
x: 4800,
y: 1900
}, {
type: "spike",
x: 4900,
y: 1900
}, {
type: "spike",
x: 5000,
y: 1900
}, {
type: "spike",
x: 5100,
y: 1900
}, {
type: "spike",
x: 5200,
y: 1900
}, {
type: "spike",
x: 5300,
y: 1900
}, {
type: "spike",
x: 5400,
y: 1900
}, {
type: "spike",
x: 5500,
y: 1900
}, {
type: "spike",
x: 5600,
y: 1900
}, {
type: "spike",
x: 5700,
y: 1900
}, {
type: "spike",
x: 5800,
y: 1900
}, {
type: "spike",
x: 5900,
y: 1900
}, {
type: "spike",
x: 6000,
y: 1750
}, {
type: "spike",
x: 6100,
y: 1750
}, {
type: "spike",
x: 6200,
y: 1750
}, {
type: "spike",
x: 6300,
y: 1750
}, {
type: "spike",
x: 6400,
y: 1750
}, {
type: "spike",
x: 6500,
y: 1750
}, {
type: "spike",
x: 6600,
y: 1750
}, {
type: "spike",
x: 6700,
y: 1750
}, {
type: "spike",
x: 6800,
y: 1750
}, {
type: "spike",
x: 6900,
y: 1750
}, {
type: "spike",
x: 7000,
y: 1750
}, {
type: "spike",
x: 7100,
y: 1750
}, {
type: "spike",
x: 7200,
y: 1750
}, {
type: "spike",
x: 7300,
y: 1750
}, {
type: "spike",
x: 7400,
y: 1600
}, {
type: "spike",
x: 7500,
y: 1600
}, {
type: "spike",
x: 7600,
y: 1600
}, {
type: "spike",
x: 7700,
y: 1600
}, {
type: "spike",
x: 7800,
y: 1600
}, {
type: "spike",
x: 7900,
y: 1600
}, {
type: "spike",
x: 8000,
y: 1600
}, {
type: "spike",
x: 8100,
y: 1600
}, {
type: "spike",
x: 8200,
y: 1600
}, {
type: "spike",
x: 8300,
y: 1600
}, {
type: "spike",
x: 8400,
y: 1600
}, {
type: "spike",
x: 8500,
y: 1600
}, {
type: "spike",
x: 8600,
y: 1600
}, {
type: "spike",
x: 8700,
y: 1600
}, {
type: "spike",
x: 8800,
y: 1600
}, {
type: "spike",
x: 8900,
y: 1450
}, {
type: "spike",
x: 9000,
y: 1450
}, {
type: "spike",
x: 9100,
y: 1450
}, {
type: "spike",
x: 9200,
y: 1450
}, {
type: "spike",
x: 9300,
y: 1450
}, {
type: "spike",
x: 9400,
y: 1450
}, {
type: "spike",
x: 9500,
y: 1450
}, {
type: "spike",
x: 9600,
y: 1450
}, {
type: "spike",
x: 9700,
y: 1450
}, {
type: "spike",
x: 9800,
y: 1450
}, {
type: "spike",
x: 9900,
y: 1450
}, {
type: "spike",
x: 10000,
y: 1450
}, {
type: "spike",
x: 10100,
y: 1450
}, {
type: "spike",
x: 10200,
y: 1450
}, {
type: "spike",
x: 10300,
y: 1450
}, {
type: "spike",
x: 10400,
y: 1450
}, {
type: "spike",
x: 10500,
y: 1300
}, {
type: "spike",
x: 10600,
y: 1300
}, {
type: "spike",
x: 10700,
y: 1300
}, {
type: "spike",
x: 10800,
y: 1300
}, {
type: "spike",
x: 10900,
y: 1300
}, {
type: "spike",
x: 11000,
y: 1300
}, {
type: "spike",
x: 11100,
y: 1300
}, {
type: "spike",
x: 11200,
y: 1300
}, {
type: "spike",
x: 11300,
y: 1300
}, {
type: "spike",
x: 11400,
y: 1300
}, {
type: "spike",
x: 11500,
y: 1300
}, {
type: "spike",
x: 11600,
y: 1300
}, {
type: "spike",
x: 11700,
y: 1300
}, {
type: "spike",
x: 11800,
y: 1300
}, {
type: "spike",
x: 11900,
y: 1300
}, {
type: "spike",
x: 12000,
y: 1300
}, {
type: "spike",
x: 12100,
y: 1300
}, {
type: "spike",
x: 12200,
y: 1150
}, {
type: "spike",
x: 12300,
y: 1150
}, {
type: "spike",
x: 12400,
y: 1150
}, {
type: "spike",
x: 12500,
y: 1150
}, {
type: "spike",
x: 12600,
y: 1150
}, {
type: "spike",
x: 12700,
y: 1150
}, {
type: "spike",
x: 12800,
y: 1150
}, {
type: "spike",
x: 12900,
y: 1150
}, {
type: "spike",
x: 13000,
y: 1150
}, {
type: "spike",
x: 13100,
y: 1150
}, {
type: "spike",
x: 13200,
y: 1150
}, {
type: "spike",
x: 13300,
y: 1150
}, {
type: "spike",
x: 13400,
y: 1150
}, {
type: "spike",
x: 13500,
y: 1150
}, {
type: "spike",
x: 13600,
y: 1150
}, {
type: "spike",
x: 13700,
y: 1150
}, {
type: "spike",
x: 13800,
y: 1150
}, {
type: "spike",
x: 13900,
y: 1150
}, {
type: "spike",
x: 14000,
y: 1000
}, {
type: "spike",
x: 14100,
y: 1000
}, {
type: "spike",
x: 14200,
y: 1000
}, {
type: "spike",
x: 14300,
y: 1000
}, {
type: "spike",
x: 14400,
y: 1000
}, {
type: "spike",
x: 14500,
y: 1000
}, {
type: "spike",
x: 14600,
y: 1000
}, {
type: "spike",
x: 14700,
y: 1000
}, {
type: "spike",
x: 14800,
y: 1000
}, {
type: "spike",
x: 14900,
y: 1000
}, {
type: "spike",
x: 15000,
y: 1000
}, {
type: "spike",
x: 15100,
y: 1000
}, {
type: "spike",
x: 15200,
y: 1000
}, {
type: "spike",
x: 15300,
y: 1000
}, {
type: "spike",
x: 15400,
y: 1000
}, {
type: "spike",
x: 15500,
y: 1000
}, {
type: "spike",
x: 15600,
y: 1000
}, {
type: "spike",
x: 15700,
y: 1000
}, {
type: "spike",
x: 15800,
y: 1000
}, {
type: "spike",
x: 15900,
y: 850
}, {
type: "spike",
x: 16000,
y: 850
}, {
type: "spike",
x: 16100,
y: 850
}, {
type: "spike",
x: 16200,
y: 850
}, {
type: "spike",
x: 16300,
y: 850
}, {
type: "spike",
x: 16400,
y: 850
}, {
type: "spike",
x: 16500,
y: 850
}, {
type: "spike",
x: 16600,
y: 850
}, {
type: "spike",
x: 16700,
y: 850
}, {
type: "spike",
x: 16800,
y: 850
}, {
type: "spike",
x: 16900,
y: 850
}, {
type: "spike",
x: 17000,
y: 850
}, {
type: "spike",
x: 17100,
y: 850
}, {
type: "spike",
x: 17200,
y: 850
}, {
type: "spike",
x: 17300,
y: 850
}, {
type: "spike",
x: 17400,
y: 850
}, {
type: "spike",
x: 17500,
y: 850
}, {
type: "spike",
x: 17600,
y: 850
}, {
type: "spike",
x: 17700,
y: 850
}, {
type: "spike",
x: 17800,
y: 850
}, {
type: "spike",
x: 17900,
y: 700
}, {
type: "spike",
x: 18000,
y: 700
}, {
type: "spike",
x: 18100,
y: 700
}, {
type: "spike",
x: 18200,
y: 700
}, {
type: "spike",
x: 18300,
y: 700
}, {
type: "spike",
x: 18400,
y: 700
}, {
type: "spike",
x: 18500,
y: 700
}, {
type: "spike",
x: 18600,
y: 700
}, {
type: "spike",
x: 18700,
y: 700
}, {
type: "spike",
x: 18800,
y: 700
}, {
type: "spike",
x: 18900,
y: 700
}, {
type: "spike",
x: 19000,
y: 700
}, {
type: "spike",
x: 19100,
y: 700
}, {
type: "spike",
x: 19200,
y: 700
}, {
type: "spike",
x: 19300,
y: 700
}, {
type: "spike",
x: 19400,
y: 700
}, {
type: "spike",
x: 19500,
y: 700
}, {
type: "spike",
x: 19600,
y: 700
}, {
type: "spike",
x: 19700,
y: 700
}, {
type: "spike",
x: 19800,
y: 700
}, {
type: "spike",
x: 20000,
y: 550
}, {
type: "spike",
x: 20100,
y: 550
}, {
type: "spike",
x: 20200,
y: 550
}, {
type: "spike",
x: 20300,
y: 550
}, {
type: "spike",
x: 20400,
y: 550
}, {
type: "spike",
x: 20500,
y: 550
}, {
type: "spike",
x: 20600,
y: 550
}, {
type: "spike",
x: 20700,
y: 550
}, {
type: "spike",
x: 20800,
y: 550
}, {
type: "spike",
x: 20900,
y: 550
}, {
type: "spike",
x: 21000,
y: 550
}, {
type: "spike",
x: 21100,
y: 550
}, {
type: "spike",
x: 21200,
y: 550
}, {
type: "spike",
x: 21300,
y: 550
}, {
type: "spike",
x: 21400,
y: 550
}, {
type: "spike",
x: 21500,
y: 550
}, {
type: "spike",
x: 21600,
y: 550
}, {
type: "spike",
x: 21700,
y: 550
}, {
type: "spike",
x: 21800,
y: 550
}, {
type: "spike",
x: 21900,
y: 550
}, {
type: "spike",
x: 22100,
y: 400
}, {
type: "spike",
x: 22200,
y: 400
}, {
type: "spike",
x: 22300,
y: 400
}, {
type: "spike",
x: 22400,
y: 400
}, {
type: "spike",
x: 22500,
y: 400
}, {
type: "spike",
x: 22600,
y: 400
}, {
type: "spike",
x: 22700,
y: 400
}, {
type: "spike",
x: 22800,
y: 400
}, {
type: "spike",
x: 22900,
y: 400
}, {
type: "spike",
x: 23000,
y: 400
}, {
type: "spike",
x: 23100,
y: 400
}, {
type: "spike",
x: 23200,
y: 400
}, {
type: "spike",
x: 23300,
y: 400
}, {
type: "spike",
x: 23400,
y: 400
}, {
type: "spike",
x: 23500,
y: 400
}, {
type: "spike",
x: 23600,
y: 400
}, {
type: "spike",
x: 23700,
y: 400
}, {
type: "spike",
x: 23800,
y: 400
}, {
type: "spike",
x: 23900,
y: 400
}, {
type: "spike",
x: 24000,
y: 400
}, {
type: "spike",
x: 24800,
y: 2650
}, {
type: "spike",
x: 24900,
y: 2650
}, {
type: "spike",
x: 25000,
y: 2650
}, {
type: "spike",
x: 25100,
y: 2650
}, {
type: "spike",
x: 25200,
y: 2650
}, {
type: "spike",
x: 25300,
y: 2650
}, {
type: "spike",
x: 25400,
y: 2650
}, {
type: "spike",
x: 25500,
y: 2650
}, {
type: "spike",
x: 25600,
y: 2650
}, {
type: "spike",
x: 25700,
y: 2650
}],
platforms: [{
x: 650,
y: 2550,
width: 60,
height: 30
}, {
x: 1050,
y: 2550,
width: 60,
height: 30
}, {
x: 1900,
y: 2400,
width: 140,
height: 30
}, {
x: 2850,
y: 2250,
width: 240,
height: 30
}, {
x: 3950,
y: 2100,
width: 340,
height: 30
}, {
x: 5150,
y: 1950,
width: 340,
height: 30
}, {
x: 6650,
y: 1800,
width: 440,
height: 30
}, {
x: 8100,
y: 1650,
width: 540,
height: 30
}, {
x: 9650,
y: 1500,
width: 640,
height: 30
}, {
x: 11300,
y: 1350,
width: 740,
height: 30
}, {
x: 13050,
y: 1200,
width: 840,
height: 30
}, {
x: 14950,
y: 1050,
width: 840,
height: 30
}, {
x: 16850,
y: 900,
width: 940,
height: 30
}, {
x: 18850,
y: 750,
width: 940,
height: 30
}, {
x: 20950,
y: 600,
width: 1040,
height: 30
}, {
x: 23050,
y: 450,
width: 1140,
height: 30
}, {
x: 24500,
y: 2200,
width: 200,
height: 30
}, {
x: 25800,
y: 2500,
width: 400,
height: 30
}]
}];
}
// Initialize level select menu
function initLevelSelect() {
gameState = "menu";
clearLevel();
// Create background
var background = game.attachAsset('background', {
anchorX: 0,
anchorY: 0
});
// Play menu music
LK.playMusic('menuMusic');
// Show title
messageText.setText("SELECT LEVEL");
messageText.y = 0;
tween(messageText, {
alpha: 1
}, {
duration: 500
});
// Calculate how many levels are unlocked
var unlockedLevels = storage.completedLevels.length + 1;
if (unlockedLevels > levels.length) {
unlockedLevels = levels.length;
}
// Create level buttons in a normal 5x2 grid
levelButtons = [];
var buttonsPerRow = 5;
var buttonSpacingX = 300;
var buttonSpacingY = 280;
var gridStartX = 1024 - buttonsPerRow * buttonSpacingX / 2 + buttonSpacingX / 2;
var gridStartY = 1200;
for (var i = 0; i < levels.length; i++) {
var level = levels[i];
var button = new LevelButton();
button.init(level.id, level.name, i < unlockedLevels);
// Position buttons in grid
var row = Math.floor(i / buttonsPerRow);
var col = i % buttonsPerRow;
button.x = gridStartX + col * buttonSpacingX;
button.y = gridStartY + row * buttonSpacingY;
game.addChild(button);
levelButtons.push(button);
}
// Show stats
scoreText.setText("COMPLETED: " + storage.completedLevels.length + "/" + levels.length);
deathCountText.setText("DEATHS: " + storage.deaths);
}
// Start a specific level
function startLevel(levelId) {
gameState = "playing";
clearLevel();
// Find level data
var levelData = null;
for (var i = 0; i < levels.length; i++) {
if (levels[i].id === levelId) {
levelData = levels[i];
break;
}
}
if (!levelData) {
console.log("Level not found: " + levelId);
return;
}
// Store the current level
storage.currentLevel = levelId;
// Create level
currentLevel = new Level();
currentLevel.init(levelData);
game.addChild(currentLevel);
// Create player
player = new Player();
player.x = 300;
player.y = 2500;
player.init();
game.addChild(player);
// Update UI
levelNameText.setText(levelData.name);
deathCountText.setText("DEATHS: " + storage.deaths);
// Show message
messageText.setText("TAP TO JUMP");
tween(messageText, {
alpha: 1
}, {
duration: 500,
onFinish: function onFinish() {
LK.setTimeout(function () {
tween(messageText, {
alpha: 0
}, {
duration: 500
});
}, 1500);
}
});
// Play level music
LK.playMusic(levelData.music);
// Reset camera
camera.x = 0;
camera.y = 0;
}
// Clear all level elements
function clearLevel() {
// Remove level elements
if (currentLevel) {
game.removeChild(currentLevel);
currentLevel = null;
}
// Remove player
if (player) {
game.removeChild(player);
player = null;
}
// Clear messages
messageText.alpha = 0;
// Remove level buttons
for (var i = 0; i < levelButtons.length; i++) {
game.removeChild(levelButtons[i]);
}
levelButtons = [];
// Clear particles
for (var j = 0; j < particles.length; j++) {
particles[j].destroy();
}
particles = [];
}
// Handle level completion
function completeLevel() {
gameState = "levelComplete";
// Add level to completed levels if not already there
if (!storage.completedLevels.includes(storage.currentLevel)) {
storage.completedLevels.push(storage.currentLevel);
}
// Play success sound
LK.getSound('levelComplete').play();
// Show completion message
messageText.setText("LEVEL COMPLETE!");
tween(messageText, {
alpha: 1
}, {
duration: 500
});
// Return to level select after a delay
LK.setTimeout(function () {
LK.showYouWin();
}, 2000);
}
// Reset the current level after death
function resetLevel() {
// Don't reset if we're not playing
if (gameState !== "playing") {
return;
}
// Hide death message
tween(messageText, {
alpha: 0
}, {
duration: 300
});
// Create player
if (player) {
game.removeChild(player);
}
player = new Player();
player.x = 300;
player.y = 2500;
player.init();
game.addChild(player);
// Reset camera
camera.x = 0;
camera.y = 0;
// Update death count
deathCountText.setText("DEATHS: " + storage.deaths);
// Clear particles
for (var i = 0; i < particles.length; i++) {
particles[i].destroy();
}
particles = [];
}
// Create explosion particles when player dies
function createDeathParticles(x, y) {
var particleCount = 30;
var playerColor = 0x3498db;
for (var i = 0; i < particleCount; i++) {
var particle = new Particle();
particle.init(x, y, playerColor);
game.addChild(particle);
particles.push(particle);
}
// Show death message
messageText.setText("TAP TO RETRY");
tween(messageText, {
alpha: 1
}, {
duration: 300
});
// Reset level after a short delay
LK.setTimeout(resetLevel, 1000);
}
// Input Handlers
game.down = function (x, y) {
if (gameState === "playing") {
if (player && !player.isDead) {
player.jump();
} else if (player && player.isDead) {
resetLevel();
}
}
};
game.update = function () {
var now = Date.now();
var delta = now - lastTick;
lastTick = now;
// Process particles
for (var i = particles.length - 1; i >= 0; i--) {
if (particles[i].update()) {
particles.splice(i, 1);
}
}
if (gameState === "playing" && player && !player.isDead) {
// Update player
player.update();
// Check collisions
if (currentLevel) {
var collision = currentLevel.checkCollisions(player);
if (collision === 'finish') {
completeLevel();
}
}
// Camera follow player
camera.x = player.x - 512; // Keep player at 1/4 of screen
if (camera.x < 0) {
camera.x = 0;
}
// Apply camera transform to level
if (currentLevel) {
currentLevel.x = -camera.x;
}
}
};
// Initialize the game
function initGame() {
defineLevels();
initLevelSelect();
}
// Start the game
initGame();