User prompt
incease the number of enemy car 1,2 and 3.
Code edit (1 edits merged)
Please save this source code
User prompt
Avoid the Cars
Initial prompt
🚗 5. Avoid the Cars Concept: The player controls a car moving left/right to avoid incoming traffic. Goal: Survive as long as possible. Tools: Pygame Bonus idea: Add increasing speed every 10 seconds.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var EnemyCar = Container.expand(function () {
var self = Container.call(this);
var carTypes = ['enemyCar1', 'enemyCar2', 'enemyCar3', 'enemyCar4', 'enemyCar5', 'enemyCar6'];
var randomType = carTypes[Math.floor(Math.random() * carTypes.length)];
var carGraphics = self.attachAsset(randomType, {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8 + Math.random() * 6;
self.update = function () {
self.y += self.speed * gameSpeedMultiplier;
};
return self;
});
var PlayerCar = Container.expand(function () {
var self = Container.call(this);
var carGraphics = self.attachAsset('playerCar', {
anchorX: 0.5,
anchorY: 0.5
});
self.targetX = 1024;
self.update = function () {
var diff = self.targetX - self.x;
self.x += diff * 0.15;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x34495e
});
/****
* Game Code
****/
var gameSpeedMultiplier = 1;
var enemyCars = [];
var lastSpawnTime = 0;
var spawnInterval = 1000;
var gameStartTime = LK.ticks;
var speedIncreaseInterval = 600;
var lastSpeedIncrease = 0;
// Create road background
var roadBg = game.addChild(LK.getAsset('road', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
scaleY: 9
}));
// Create lane dividers
var lanes = [512, 1024, 1536];
for (var i = 0; i < lanes.length - 1; i++) {
var laneDivider = game.addChild(LK.getAsset('lane', {
anchorX: 0.5,
anchorY: 0.5,
x: lanes[i] + (lanes[i + 1] - lanes[i]) / 2,
y: 1366,
alpha: 0.5
}));
}
// Create player car
var player = game.addChild(new PlayerCar());
player.x = 1024;
player.y = 2400;
player.targetX = 1024;
// Create score display
var scoreTxt = new Text2('0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Speed indicator
var speedTxt = new Text2('Speed: 1x', {
size: 60,
fill: 0xFFFFFF
});
speedTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(speedTxt);
var dragNode = null;
function handleMove(x, y, obj) {
if (dragNode) {
var lanes = [512, 1024, 1536];
var closestLane = lanes[0];
var minDistance = Math.abs(x - lanes[0]);
for (var i = 1; i < lanes.length; i++) {
var distance = Math.abs(x - lanes[i]);
if (distance < minDistance) {
minDistance = distance;
closestLane = lanes[i];
}
}
dragNode.targetX = closestLane;
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
dragNode = player;
handleMove(x, y, obj);
};
game.up = function (x, y, obj) {
dragNode = null;
};
function spawnEnemyCar() {
var lanes = [512, 1024, 1536];
var randomLane = lanes[Math.floor(Math.random() * lanes.length)];
var enemyCar = new EnemyCar();
enemyCar.x = randomLane;
enemyCar.y = -100;
enemyCar.lastY = enemyCar.y;
enemyCar.lastIntersecting = false;
enemyCars.push(enemyCar);
game.addChild(enemyCar);
}
game.update = function () {
var currentTime = LK.ticks;
// Update score based on survival time
var score = Math.floor((currentTime - gameStartTime) / 60);
LK.setScore(score);
scoreTxt.setText('Score: ' + LK.getScore());
// Increase game speed every 10 seconds
if (currentTime - lastSpeedIncrease > speedIncreaseInterval) {
gameSpeedMultiplier += 0.3;
lastSpeedIncrease = currentTime;
speedTxt.setText('Speed: ' + gameSpeedMultiplier.toFixed(1) + 'x');
// Decrease spawn interval to increase difficulty
spawnInterval = Math.max(400, spawnInterval - 50);
}
// Spawn enemy cars
if (currentTime - lastSpawnTime > spawnInterval / gameSpeedMultiplier) {
spawnEnemyCar();
lastSpawnTime = currentTime;
}
// Update enemy cars and check for collisions/cleanup
for (var i = enemyCars.length - 1; i >= 0; i--) {
var enemyCar = enemyCars[i];
// Initialize last states if needed
if (enemyCar.lastY === undefined) enemyCar.lastY = enemyCar.y;
if (enemyCar.lastIntersecting === undefined) enemyCar.lastIntersecting = false;
// Check if car went off screen
if (enemyCar.lastY <= 2800 && enemyCar.y > 2800) {
enemyCar.destroy();
enemyCars.splice(i, 1);
continue;
}
// Check for collision with player
var currentIntersecting = enemyCar.intersects(player);
if (!enemyCar.lastIntersecting && currentIntersecting) {
// Collision detected!
LK.getSound('crash').play();
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
// Update last states
enemyCar.lastY = enemyCar.y;
enemyCar.lastIntersecting = currentIntersecting;
}
};
// Start background music
LK.playMusic('bgmusic'); ===================================================================
--- original.js
+++ change.js
@@ -7,9 +7,9 @@
* Classes
****/
var EnemyCar = Container.expand(function () {
var self = Container.call(this);
- var carTypes = ['enemyCar1', 'enemyCar2', 'enemyCar3'];
+ var carTypes = ['enemyCar1', 'enemyCar2', 'enemyCar3', 'enemyCar4', 'enemyCar5', 'enemyCar6'];
var randomType = carTypes[Math.floor(Math.random() * carTypes.length)];
var carGraphics = self.attachAsset(randomType, {
anchorX: 0.5,
anchorY: 0.5