User prompt
remove the machanism the score automatically increasing it has to increase only the player touches the coins
User prompt
each coin get 2 poits
User prompt
the score will increase or give points only when the player got the coin
User prompt
show the score in the leftside top corner
User prompt
when the player get banana each banana get 2 points
User prompt
the vehicles wont move are travel between the lanes
User prompt
the truck and car should move only on lane
Code edit (1 edits merged)
Please save this source code
User prompt
Highway Dash: Parkour Runner
Initial prompt
A thrilling 3D game scene of a young man running on a busy highway filled with moving vehicles. The character jumps high and lands on top of cars and trucks, runs across their roofs, and jumps back down to the road. If he hits a car without jumping, he crashes. The scene includes glowing gold coins to collect, neon city background during sunset, and traffic moving at medium speed. Stylized, cartoon-style graphics with fast animations, parkour moves, and smooth jump transitions.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { highScore: 0 }); /**** * Classes ****/ var Coin = Container.expand(function () { var self = Container.call(this); var coinGraphics = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); self.collected = false; self.rotationSpeed = 0.05; self.update = function () { if (!self.collected) { coinGraphics.rotation += self.rotationSpeed; } else { self.alpha -= 0.1; self.y -= 5; self.scale.x *= 0.9; self.scale.y *= 0.9; } }; self.collect = function () { if (!self.collected) { self.collected = true; LK.getSound('coin').play(); tween(self, { alpha: 0 }, { duration: 500, onFinish: function onFinish() { self.destroy(); } }); } }; return self; }); var Lane = Container.expand(function (y) { var self = Container.call(this); var laneGraphics = self.attachAsset('lane', { anchorX: 0.5, anchorY: 0.5 }); self.y = y; self.x = 2048 / 2; // Create lane dividers self.dividers = []; var dividerCount = 15; var spacing = 2048 / dividerCount; for (var i = 0; i < dividerCount; i++) { var divider = self.attachAsset('laneDivider', { anchorX: 0.5, anchorY: 0.5, x: i * spacing, y: 0 }); self.dividers.push(divider); } self.update = function () { for (var i = 0; i < self.dividers.length; i++) { self.dividers[i].x -= 10; if (self.dividers[i].x < -75) { self.dividers[i].x += 2048; } } }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 1.0 }); self.vx = 0; self.vy = 0; self.gravity = 1; self.jumpForce = -25; self.isJumping = false; self.isOnVehicle = false; self.currentVehicle = null; self.jump = function () { if (!self.isJumping || self.isOnVehicle) { self.vy = self.jumpForce; self.isJumping = true; self.isOnVehicle = false; self.currentVehicle = null; LK.getSound('jump').play(); } }; self.update = function () { if (self.currentVehicle && self.isOnVehicle) { self.x += self.currentVehicle.speed; } if (self.isJumping && !self.isOnVehicle) { self.vy += self.gravity; self.y += self.vy; } // Keep player within bounds if (self.x < 100) { self.x = 100; } if (self.x > 2048 - 100) { self.x = 2048 - 100; } }; self.down = function (x, y, obj) { self.jump(); }; return self; }); var Vehicle = Container.expand(function (type) { var self = Container.call(this); self.type = type || 'car'; var vehicleGraphics = self.attachAsset(self.type, { anchorX: 0.5, anchorY: 1.0 }); self.width = vehicleGraphics.width; self.height = vehicleGraphics.height; self.speed = self.type === 'car' ? -8 - Math.random() * 5 : -5 - Math.random() * 3; self.update = function () { self.x += self.speed; // Ensure vehicle stays within its lane // Ensure vehicle stays within its lane self.y = baseY + self.laneIndex * laneSpacing; // Reset vehicle position if off-screen if (self.x < -self.width) { self.x = 2048 + self.width; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game state variables var score = 0; var highScore = storage.highScore || 0; var gameSpeed = 1; var coinCount = 0; var lanes = []; var vehicles = []; var coins = []; var spawnTimer = 0; var coinSpawnTimer = 0; var gameRunning = true; // Create background var sky = game.addChild(LK.getAsset('sky', { anchorX: 0.5, anchorY: 0, x: 2048 / 2, y: 0 })); var city = game.addChild(LK.getAsset('city', { anchorX: 0.5, anchorY: 0, x: 2048 / 2, y: 1000 })); // Create lanes var laneCount = 4; var laneSpacing = 250; var baseY = 1800; for (var i = 0; i < laneCount; i++) { var lane = new Lane(baseY + i * laneSpacing); game.addChild(lane); lanes.push(lane); } // Create player var player = new Player(); player.x = 300; player.y = baseY - 10; // Position slightly above the lane game.addChild(player); // Create score display var scoreTxt = new Text2('SCORE: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0, 0); LK.gui.topLeft.addChild(scoreTxt); // Create high score display var highScoreTxt = new Text2('HIGH SCORE: ' + highScore, { size: 60, fill: 0xFFFFFF }); highScoreTxt.anchor.set(1, 0); highScoreTxt.x = -20; highScoreTxt.y = 90; LK.gui.topRight.addChild(highScoreTxt); // Spawn a vehicle on a random lane function spawnVehicle() { var type = Math.random() > 0.3 ? 'car' : 'truck'; var vehicle = new Vehicle(type); var laneIndex = Math.floor(Math.random() * laneCount); vehicle.y = baseY + laneIndex * laneSpacing; vehicle.laneIndex = laneIndex; // Track the lane index for the vehicle vehicle.x = 2048 + vehicle.width; game.addChild(vehicle); vehicles.push(vehicle); return vehicle; } // Spawn a coin at a random position, possibly on top of a vehicle function spawnCoin() { var coin = new Coin(); var onVehicle = Math.random() > 0.5 && vehicles.length > 0; if (onVehicle) { var vehicleIndex = Math.floor(Math.random() * vehicles.length); var vehicle = vehicles[vehicleIndex]; coin.x = vehicle.x; coin.y = vehicle.y - vehicle.height - 50; } else { var laneIndex = Math.floor(Math.random() * laneCount); coin.x = 2048 + 100; coin.y = baseY + laneIndex * laneSpacing - 150; } game.addChild(coin); coins.push(coin); } // Check collision between player and vehicles function checkCollisions() { for (var i = 0; i < vehicles.length; i++) { var vehicle = vehicles[i]; if (player.intersects(vehicle)) { // Check if player is on top of the vehicle if (player.y <= vehicle.y - vehicle.height + 20 && player.vy >= 0) { player.isJumping = false; player.isOnVehicle = true; player.currentVehicle = vehicle; player.y = vehicle.y - vehicle.height; player.vy = 0; } else if (!player.isOnVehicle || player.currentVehicle !== vehicle) { // Collision from the side or bottom gameOver(); } } } // Check ground collision for (var j = 0; j < laneCount; j++) { var laneY = baseY + j * laneSpacing; if (player.y >= laneY && player.y - player.vy < laneY) { player.y = laneY; player.vy = 0; player.isJumping = false; } } // Check coin collection for (var k = coins.length - 1; k >= 0; k--) { if (player.intersects(coins[k]) && !coins[k].collected) { coins[k].collect(); coinCount++; score += 2; updateScore(); } if (coins[k].collected && coins[k].alpha <= 0) { coins.splice(k, 1); } } // Check if player fell off screen if (player.y > 2732 || player.y < 0) { gameOver(); } } // Update score display function updateScore() { score = coinCount * 2; scoreTxt.setText('SCORE: ' + score); if (score > highScore) { highScore = score; storage.highScore = highScore; highScoreTxt.setText('HIGH SCORE: ' + highScore); } } // Game over function function gameOver() { LK.getSound('crash').play(); LK.effects.flashScreen(0xFF0000, 500); LK.showGameOver(); } // Game input handlers game.down = function (x, y, obj) { player.jump(); }; // Main game update loop game.update = function () { if (!gameRunning) { return; } // Update score updateScore(); // Update game entities player.update(); for (var i = 0; i < lanes.length; i++) { lanes[i].update(); } for (var j = vehicles.length - 1; j >= 0; j--) { vehicles[j].update(); // Remove vehicles that are far off screen if (vehicles[j].x < -500) { vehicles[j].destroy(); vehicles.splice(j, 1); } } for (var k = 0; k < coins.length; k++) { coins[k].update(); // Move coins with the game speed if they're not on a vehicle if (coins[k].x > -100) { coins[k].x -= 10; } else { coins[k].destroy(); coins.splice(k, 1); k--; } } // Check for collisions checkCollisions(); // Spawn vehicles spawnTimer++; if (spawnTimer >= 120) { spawnVehicle(); spawnTimer = 0; } // Spawn coins coinSpawnTimer++; if (coinSpawnTimer >= 180) { spawnCoin(); coinSpawnTimer = 0; } // Increase game difficulty over time if (LK.ticks % 600 === 0) { gameSpeed += 0.1; } }; // Start background music LK.playMusic('bgmusic', { fade: { start: 0, end: 0.4, duration: 1000 } });
===================================================================
--- original.js
+++ change.js
@@ -278,9 +278,9 @@
}
}
// Update score display
function updateScore() {
- score = Math.floor(LK.ticks / 60) + coinCount * 10;
+ score = coinCount * 2;
scoreTxt.setText('SCORE: ' + score);
if (score > highScore) {
highScore = score;
storage.highScore = highScore;
create a monkey. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
create banana. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
create a sky with moon and starts. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
create a city with buidlings. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
create a black color road. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
create a truck. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows