/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Barrier = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('barrier', { anchorX: 0.5, anchorY: 1.0 }); self.update = function () { self.x -= gameSpeed; }; return self; }); var Coin = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); self.collected = false; self.update = function () { self.x -= gameSpeed; // Floating animation graphics.rotation += 0.1; graphics.y = Math.sin(LK.ticks * 0.1) * 10; }; return self; }); var Platform = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { self.x -= gameSpeed; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 1.0 }); self.velocityY = 0; self.isGrounded = false; self.jumpPower = -30; self.gravity = 1.2; self.maxFallSpeed = 15; self.invulnerable = false; self.jump = function () { if (self.isGrounded) { self.velocityY = self.jumpPower; self.isGrounded = false; LK.getSound('jump').play(); } }; self.update = function () { // Apply gravity self.velocityY += self.gravity; if (self.velocityY > self.maxFallSpeed) { self.velocityY = self.maxFallSpeed; } // Update position self.y += self.velocityY; // Check ground collision if (self.y >= groundY) { self.y = groundY; self.velocityY = 0; self.isGrounded = true; } // Animation effect graphics.rotation = self.velocityY * 0.02; }; return self; }); var Spike = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('spike', { anchorX: 0.5, anchorY: 1.0 }); self.update = function () { self.x -= gameSpeed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game variables var gameSpeed = 8; var baseSpeed = 8; var maxSpeed = 16; var speedIncrement = 0.01; var groundY = 2400; var spawnTimer = 0; var distanceScore = 0; var coinScore = 0; // Game objects var player; var platforms = []; var spikes = []; var coins = []; var barriers = []; // UI elements var scoreText = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); var distanceText = new Text2('Distance: 0m', { size: 60, fill: 0xFFFFFF }); distanceText.anchor.set(0, 0); distanceText.x = 100; distanceText.y = 150; LK.gui.topLeft.addChild(distanceText); // Initialize player player = game.addChild(new Player()); player.x = 300; player.y = groundY; // Create initial platforms function createPlatform(x, y) { var platform = new Platform(); platform.x = x; platform.y = y; platforms.push(platform); game.addChild(platform); } function createSpike(x, y) { var spike = new Spike(); spike.x = x; spike.y = y; spikes.push(spike); game.addChild(spike); } function createCoin(x, y) { var coin = new Coin(); coin.x = x; coin.y = y; coins.push(coin); game.addChild(coin); } function createBarrier(x, y) { var barrier = new Barrier(); barrier.x = x; barrier.y = y; barriers.push(barrier); game.addChild(barrier); } // Spawn obstacles function spawnObstacles() { var spawnX = 2048 + 200; var rand = Math.random(); if (rand < 0.3) { // Spike obstacle createSpike(spawnX, groundY); // Add coin above spike if (Math.random() < 0.6) { createCoin(spawnX, groundY - 150); } } else if (rand < 0.6) { // Platform obstacle var platformY = groundY - 100 - Math.random() * 200; createPlatform(spawnX, platformY); // Add coin on platform if (Math.random() < 0.7) { createCoin(spawnX, platformY - 50); } } else if (rand < 0.8) { // Barrier obstacle createBarrier(spawnX, groundY); // Add coin above barrier if (Math.random() < 0.5) { createCoin(spawnX, groundY - 200); } } else { // Just coins createCoin(spawnX, groundY - 100 - Math.random() * 150); } } // Check collisions function checkCollisions() { // Check spike collisions for (var i = spikes.length - 1; i >= 0; i--) { var spike = spikes[i]; if (player.intersects(spike) && !player.invulnerable) { // Hit obstacle LK.getSound('hit').play(); LK.effects.flashScreen(0xff0000, 500); LK.showGameOver(); return; } } // Check barrier collisions for (var i = barriers.length - 1; i >= 0; i--) { var barrier = barriers[i]; if (player.intersects(barrier) && !player.invulnerable) { // Hit obstacle LK.getSound('hit').play(); LK.effects.flashScreen(0xff0000, 500); LK.showGameOver(); return; } } // Check coin collisions for (var i = coins.length - 1; i >= 0; i--) { var coin = coins[i]; if (player.intersects(coin) && !coin.collected) { coin.collected = true; coinScore += 10; LK.setScore(LK.getScore() + 10); LK.getSound('coin').play(); // Coin collection effect tween(coin, { scaleX: 2, scaleY: 2, alpha: 0 }, { duration: 300, easing: tween.easeOut, onFinish: function onFinish() { coin.destroy(); coins.splice(i, 1); } }); } } // Check if player fell off screen if (player.y > 2732 + 100) { LK.showGameOver(); } } // Clean up off-screen objects function cleanupObjects() { // Clean platforms for (var i = platforms.length - 1; i >= 0; i--) { if (platforms[i].x < -200) { platforms[i].destroy(); platforms.splice(i, 1); } } // Clean spikes for (var i = spikes.length - 1; i >= 0; i--) { if (spikes[i].x < -200) { spikes[i].destroy(); spikes.splice(i, 1); } } // Clean coins for (var i = coins.length - 1; i >= 0; i--) { if (coins[i].x < -200 && !coins[i].collected) { coins[i].destroy(); coins.splice(i, 1); } } // Clean barriers for (var i = barriers.length - 1; i >= 0; i--) { if (barriers[i].x < -200) { barriers[i].destroy(); barriers.splice(i, 1); } } } // Touch controls game.down = function (x, y, obj) { player.jump(); }; // Main game loop game.update = function () { // Update distance score distanceScore += gameSpeed * 0.1; LK.setScore(Math.floor(distanceScore) + coinScore); // Update UI scoreText.setText('Score: ' + LK.getScore()); distanceText.setText('Distance: ' + Math.floor(distanceScore) + 'm'); // Increase game speed gradually gameSpeed = Math.min(baseSpeed + LK.getScore() * speedIncrement, maxSpeed); // Spawn obstacles spawnTimer++; var spawnRate = Math.max(60 - Math.floor(LK.getScore() * 0.1), 30); if (spawnTimer >= spawnRate) { spawnObstacles(); spawnTimer = 0; } // Check collisions checkCollisions(); // Clean up objects cleanupObjects(); }; // Start background music LK.playMusic('bgmusic');
===================================================================
--- original.js
+++ change.js
@@ -50,9 +50,9 @@
anchorY: 1.0
});
self.velocityY = 0;
self.isGrounded = false;
- self.jumpPower = -20;
+ self.jumpPower = -30;
self.gravity = 1.2;
self.maxFallSpeed = 15;
self.invulnerable = false;
self.jump = function () {