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