User prompt
make a main menu
User prompt
Please fix the bug: 'TypeError: coins.push is not a function' in or related to this line: 'coins.push(coin);' Line Number: 396
User prompt
make cions scader in race track
User prompt
make the player visible when th game starts
User prompt
make shop menu ↪💡 Consider importing and using the following plugins: @upit/storage.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Nitro Rush: Power-Up Racing
Initial prompt
make a racing game with powerups
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Car = Container.expand(function () { var self = Container.call(this); var carGraphics = self.attachAsset('car', { anchorX: 0.5, anchorY: 0.5 }); self.hasShield = false; self.shieldGraphics = null; self.activateShield = function () { self.hasShield = true; if (!self.shieldGraphics) { self.shieldGraphics = self.attachAsset('shield', { anchorX: 0.5, anchorY: 0.5, scaleX: 3, scaleY: 3, alpha: 0.5 }); } self.shieldGraphics.visible = true; }; self.removeShield = function () { self.hasShield = false; if (self.shieldGraphics) { self.shieldGraphics.visible = false; } }; return self; }); var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.update = function () { self.y += self.speed; }; return self; }); var PowerUp = Container.expand(function (type) { var self = Container.call(this); self.type = type || 'speed'; var assetId = 'speedBoost'; if (self.type === 'shield') assetId = 'shield'; if (self.type === 'magnet') assetId = 'magnet'; var powerUpGraphics = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.collected = false; self.update = function () { self.y += self.speed; self.rotation += 0.1; }; return self; }); var RoadSegment = Container.expand(function () { var self = Container.call(this); var roadGraphics = self.attachAsset('road', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x27ae60 }); /**** * Game Code ****/ var player; var obstacles = []; var powerUps = []; var roadSegments = []; var gameSpeed = 8; var baseSpeed = 8; var speedBoostTimer = 0; var magnetTimer = 0; var distance = 0; var isDragging = false; var dragStartX = 0; // Create player car player = game.addChild(new Car()); player.x = 2048 / 2; player.y = 2732 - 200; // Create initial road segments for (var i = 0; i < 12; i++) { var roadSegment = game.addChild(new RoadSegment()); roadSegment.x = 2048 / 2; roadSegment.y = i * 300 - 600; roadSegments.push(roadSegment); } // UI Elements var distanceText = new Text2('Distance: 0', { size: 60, fill: 0xFFFFFF }); distanceText.anchor.set(0, 0); distanceText.x = 150; distanceText.y = 50; LK.gui.topLeft.addChild(distanceText); var speedText = new Text2('Speed: Normal', { size: 40, fill: 0xFFFFFF }); speedText.anchor.set(1, 0); speedText.x = -20; speedText.y = 50; LK.gui.topRight.addChild(speedText); function spawnObstacle() { var obstacle = new Obstacle(); var lanes = [400, 700, 1000, 1300, 1648]; obstacle.x = lanes[Math.floor(Math.random() * lanes.length)]; obstacle.y = -100; obstacle.speed = gameSpeed; obstacles.push(obstacle); game.addChild(obstacle); } function spawnPowerUp() { var types = ['speed', 'shield', 'magnet']; var type = types[Math.floor(Math.random() * types.length)]; var powerUp = new PowerUp(type); var lanes = [400, 700, 1000, 1300, 1648]; powerUp.x = lanes[Math.floor(Math.random() * lanes.length)]; powerUp.y = -100; powerUp.speed = gameSpeed; powerUps.push(powerUp); game.addChild(powerUp); } function handleMove(x, y, obj) { if (isDragging) { var deltaX = x - dragStartX; var newX = player.x + deltaX * 3; // Keep player within screen bounds if (newX >= 300 && newX <= 1748) { player.x = newX; } dragStartX = x; } } game.move = handleMove; game.down = function (x, y, obj) { isDragging = true; dragStartX = x; }; game.up = function (x, y, obj) { isDragging = false; }; function activatePowerUp(type) { LK.getSound('powerup').play(); if (type === 'speed') { speedBoostTimer = 180; // 3 seconds at 60fps gameSpeed = baseSpeed * 1.8; } else if (type === 'shield') { player.activateShield(); } else if (type === 'magnet') { magnetTimer = 300; // 5 seconds at 60fps } } function checkCollisions() { // Check obstacle collisions for (var i = obstacles.length - 1; i >= 0; i--) { var obstacle = obstacles[i]; if (player.intersects(obstacle)) { if (player.hasShield) { player.removeShield(); obstacle.destroy(); obstacles.splice(i, 1); LK.effects.flashObject(player, 0xffffff, 500); } else { LK.getSound('crash').play(); LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } } // Check power-up collisions for (var j = powerUps.length - 1; j >= 0; j--) { var powerUp = powerUps[j]; if (!powerUp.collected && player.intersects(powerUp)) { powerUp.collected = true; activatePowerUp(powerUp.type); powerUp.destroy(); powerUps.splice(j, 1); LK.setScore(LK.getScore() + 10); } } // Magnet effect if (magnetTimer > 0) { for (var k = 0; k < powerUps.length; k++) { var magnetPowerUp = powerUps[k]; var dx = player.x - magnetPowerUp.x; var dy = player.y - magnetPowerUp.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < 200 && !magnetPowerUp.collected) { magnetPowerUp.x += dx * 0.1; magnetPowerUp.y += dy * 0.1; } } } } game.update = function () { // Update timers if (speedBoostTimer > 0) { speedBoostTimer--; if (speedBoostTimer === 0) { gameSpeed = baseSpeed; } } if (magnetTimer > 0) { magnetTimer--; } // Update speed based on distance distance += gameSpeed * 0.1; baseSpeed = Math.min(12, 8 + distance * 0.001); if (speedBoostTimer === 0) { gameSpeed = baseSpeed; } // Update all game objects speeds for (var i = 0; i < obstacles.length; i++) { obstacles[i].speed = gameSpeed; } for (var j = 0; j < powerUps.length; j++) { powerUps[j].speed = gameSpeed; } for (var k = 0; k < roadSegments.length; k++) { roadSegments[k].speed = gameSpeed; } // Remove off-screen obstacles for (var a = obstacles.length - 1; a >= 0; a--) { var obstacle = obstacles[a]; if (obstacle.y > 2732 + 100) { obstacle.destroy(); obstacles.splice(a, 1); } } // Remove off-screen power-ups for (var b = powerUps.length - 1; b >= 0; b--) { var powerUp = powerUps[b]; if (powerUp.y > 2732 + 100) { powerUp.destroy(); powerUps.splice(b, 1); } } // Cycle road segments for (var c = roadSegments.length - 1; c >= 0; c--) { var road = roadSegments[c]; if (road.y > 2732 + 150) { road.y = roadSegments[0].y - 300; roadSegments.push(roadSegments.splice(c, 1)[0]); } } // Spawn obstacles if (LK.ticks % Math.max(30, 90 - Math.floor(distance * 0.01)) === 0) { spawnObstacle(); } // Spawn power-ups if (LK.ticks % 240 === 0) { spawnPowerUp(); } // Check collisions checkCollisions(); // Update UI distanceText.setText('Distance: ' + Math.floor(distance)); var speedStatus = 'Normal'; if (speedBoostTimer > 0) speedStatus = 'BOOST!'; if (magnetTimer > 0) speedStatus += ' +MAGNET'; speedText.setText('Speed: ' + speedStatus); LK.setScore(Math.floor(distance)); };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,291 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Car = Container.expand(function () {
+ var self = Container.call(this);
+ var carGraphics = self.attachAsset('car', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.hasShield = false;
+ self.shieldGraphics = null;
+ self.activateShield = function () {
+ self.hasShield = true;
+ if (!self.shieldGraphics) {
+ self.shieldGraphics = self.attachAsset('shield', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 3,
+ scaleY: 3,
+ alpha: 0.5
+ });
+ }
+ self.shieldGraphics.visible = true;
+ };
+ self.removeShield = function () {
+ self.hasShield = false;
+ if (self.shieldGraphics) {
+ self.shieldGraphics.visible = false;
+ }
+ };
+ return self;
+});
+var Obstacle = Container.expand(function () {
+ var self = Container.call(this);
+ var obstacleGraphics = self.attachAsset('obstacle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 8;
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
+var PowerUp = Container.expand(function (type) {
+ var self = Container.call(this);
+ self.type = type || 'speed';
+ var assetId = 'speedBoost';
+ if (self.type === 'shield') assetId = 'shield';
+ if (self.type === 'magnet') assetId = 'magnet';
+ var powerUpGraphics = self.attachAsset(assetId, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 8;
+ self.collected = false;
+ self.update = function () {
+ self.y += self.speed;
+ self.rotation += 0.1;
+ };
+ return self;
+});
+var RoadSegment = Container.expand(function () {
+ var self = Container.call(this);
+ var roadGraphics = self.attachAsset('road', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 8;
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x27ae60
+});
+
+/****
+* Game Code
+****/
+var player;
+var obstacles = [];
+var powerUps = [];
+var roadSegments = [];
+var gameSpeed = 8;
+var baseSpeed = 8;
+var speedBoostTimer = 0;
+var magnetTimer = 0;
+var distance = 0;
+var isDragging = false;
+var dragStartX = 0;
+// Create player car
+player = game.addChild(new Car());
+player.x = 2048 / 2;
+player.y = 2732 - 200;
+// Create initial road segments
+for (var i = 0; i < 12; i++) {
+ var roadSegment = game.addChild(new RoadSegment());
+ roadSegment.x = 2048 / 2;
+ roadSegment.y = i * 300 - 600;
+ roadSegments.push(roadSegment);
+}
+// UI Elements
+var distanceText = new Text2('Distance: 0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+distanceText.anchor.set(0, 0);
+distanceText.x = 150;
+distanceText.y = 50;
+LK.gui.topLeft.addChild(distanceText);
+var speedText = new Text2('Speed: Normal', {
+ size: 40,
+ fill: 0xFFFFFF
+});
+speedText.anchor.set(1, 0);
+speedText.x = -20;
+speedText.y = 50;
+LK.gui.topRight.addChild(speedText);
+function spawnObstacle() {
+ var obstacle = new Obstacle();
+ var lanes = [400, 700, 1000, 1300, 1648];
+ obstacle.x = lanes[Math.floor(Math.random() * lanes.length)];
+ obstacle.y = -100;
+ obstacle.speed = gameSpeed;
+ obstacles.push(obstacle);
+ game.addChild(obstacle);
+}
+function spawnPowerUp() {
+ var types = ['speed', 'shield', 'magnet'];
+ var type = types[Math.floor(Math.random() * types.length)];
+ var powerUp = new PowerUp(type);
+ var lanes = [400, 700, 1000, 1300, 1648];
+ powerUp.x = lanes[Math.floor(Math.random() * lanes.length)];
+ powerUp.y = -100;
+ powerUp.speed = gameSpeed;
+ powerUps.push(powerUp);
+ game.addChild(powerUp);
+}
+function handleMove(x, y, obj) {
+ if (isDragging) {
+ var deltaX = x - dragStartX;
+ var newX = player.x + deltaX * 3;
+ // Keep player within screen bounds
+ if (newX >= 300 && newX <= 1748) {
+ player.x = newX;
+ }
+ dragStartX = x;
+ }
+}
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ isDragging = true;
+ dragStartX = x;
+};
+game.up = function (x, y, obj) {
+ isDragging = false;
+};
+function activatePowerUp(type) {
+ LK.getSound('powerup').play();
+ if (type === 'speed') {
+ speedBoostTimer = 180; // 3 seconds at 60fps
+ gameSpeed = baseSpeed * 1.8;
+ } else if (type === 'shield') {
+ player.activateShield();
+ } else if (type === 'magnet') {
+ magnetTimer = 300; // 5 seconds at 60fps
+ }
+}
+function checkCollisions() {
+ // Check obstacle collisions
+ for (var i = obstacles.length - 1; i >= 0; i--) {
+ var obstacle = obstacles[i];
+ if (player.intersects(obstacle)) {
+ if (player.hasShield) {
+ player.removeShield();
+ obstacle.destroy();
+ obstacles.splice(i, 1);
+ LK.effects.flashObject(player, 0xffffff, 500);
+ } else {
+ LK.getSound('crash').play();
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ }
+ // Check power-up collisions
+ for (var j = powerUps.length - 1; j >= 0; j--) {
+ var powerUp = powerUps[j];
+ if (!powerUp.collected && player.intersects(powerUp)) {
+ powerUp.collected = true;
+ activatePowerUp(powerUp.type);
+ powerUp.destroy();
+ powerUps.splice(j, 1);
+ LK.setScore(LK.getScore() + 10);
+ }
+ }
+ // Magnet effect
+ if (magnetTimer > 0) {
+ for (var k = 0; k < powerUps.length; k++) {
+ var magnetPowerUp = powerUps[k];
+ var dx = player.x - magnetPowerUp.x;
+ var dy = player.y - magnetPowerUp.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance < 200 && !magnetPowerUp.collected) {
+ magnetPowerUp.x += dx * 0.1;
+ magnetPowerUp.y += dy * 0.1;
+ }
+ }
+ }
+}
+game.update = function () {
+ // Update timers
+ if (speedBoostTimer > 0) {
+ speedBoostTimer--;
+ if (speedBoostTimer === 0) {
+ gameSpeed = baseSpeed;
+ }
+ }
+ if (magnetTimer > 0) {
+ magnetTimer--;
+ }
+ // Update speed based on distance
+ distance += gameSpeed * 0.1;
+ baseSpeed = Math.min(12, 8 + distance * 0.001);
+ if (speedBoostTimer === 0) {
+ gameSpeed = baseSpeed;
+ }
+ // Update all game objects speeds
+ for (var i = 0; i < obstacles.length; i++) {
+ obstacles[i].speed = gameSpeed;
+ }
+ for (var j = 0; j < powerUps.length; j++) {
+ powerUps[j].speed = gameSpeed;
+ }
+ for (var k = 0; k < roadSegments.length; k++) {
+ roadSegments[k].speed = gameSpeed;
+ }
+ // Remove off-screen obstacles
+ for (var a = obstacles.length - 1; a >= 0; a--) {
+ var obstacle = obstacles[a];
+ if (obstacle.y > 2732 + 100) {
+ obstacle.destroy();
+ obstacles.splice(a, 1);
+ }
+ }
+ // Remove off-screen power-ups
+ for (var b = powerUps.length - 1; b >= 0; b--) {
+ var powerUp = powerUps[b];
+ if (powerUp.y > 2732 + 100) {
+ powerUp.destroy();
+ powerUps.splice(b, 1);
+ }
+ }
+ // Cycle road segments
+ for (var c = roadSegments.length - 1; c >= 0; c--) {
+ var road = roadSegments[c];
+ if (road.y > 2732 + 150) {
+ road.y = roadSegments[0].y - 300;
+ roadSegments.push(roadSegments.splice(c, 1)[0]);
+ }
+ }
+ // Spawn obstacles
+ if (LK.ticks % Math.max(30, 90 - Math.floor(distance * 0.01)) === 0) {
+ spawnObstacle();
+ }
+ // Spawn power-ups
+ if (LK.ticks % 240 === 0) {
+ spawnPowerUp();
+ }
+ // Check collisions
+ checkCollisions();
+ // Update UI
+ distanceText.setText('Distance: ' + Math.floor(distance));
+ var speedStatus = 'Normal';
+ if (speedBoostTimer > 0) speedStatus = 'BOOST!';
+ if (magnetTimer > 0) speedStatus += ' +MAGNET';
+ speedText.setText('Speed: ' + speedStatus);
+ LK.setScore(Math.floor(distance));
+};
\ No newline at end of file
formela 1 car pointing up. In-Game asset. 2d. High contrast. No shadows
coin. In-Game asset. 2d. High contrast. No shadows
magnett. In-Game asset. 2d. High contrast. No shadows
fence gate. In-Game asset. 2d. High contrast. No shadows
force feild. In-Game asset. 2d. High contrast. No shadows
dobble arrow pionting up. In-Game asset. 2d. High contrast. No shadows