User prompt
Just make the line on 1 middle like an real road
User prompt
When you miss 1 car you lose and make white lines on middle
Code edit (1 edits merged)
Please save this source code
User prompt
Crash Course
Initial prompt
Make an car game with an road add some little traffic your goal is to crash the car you are driving
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var PlayerCar = Container.expand(function () {
var self = Container.call(this);
var carGraphics = self.attachAsset('playerCar', {
anchorX: 0.5,
anchorY: 0.5
});
self.isDestroyed = false;
return self;
});
var TrafficVehicle = Container.expand(function (type) {
var self = Container.call(this);
self.type = type || 'car';
self.speed = 4 + Math.random() * 3;
self.points = self.type === 'truck' ? 20 : 10;
self.hasCollided = false;
var vehicleGraphics = self.attachAsset(self.type === 'truck' ? 'truck' : 'trafficCar', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x333333
});
/****
* Game Code
****/
// Game variables
var player;
var trafficVehicles = [];
var lanes = [400, 600, 800, 1000, 1200, 1400, 1648]; // 7 lanes across the screen
var spawnTimer = 0;
var spawnDelay = 60; // frames between spawns
var gameSpeed = 1;
var speedIncreaseTimer = 0;
var dragActive = false;
// UI Elements
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var instructionTxt = new Text2('Drag to crash into traffic!', {
size: 60,
fill: 0xFFFF00
});
instructionTxt.anchor.set(0.5, 0);
instructionTxt.y = 100;
LK.gui.top.addChild(instructionTxt);
// Initialize player
player = game.addChild(new PlayerCar());
player.x = 1024; // Center horizontally
player.y = 2500; // Near bottom of screen
// Spawn traffic vehicle
function spawnTrafficVehicle() {
var laneIndex = Math.floor(Math.random() * lanes.length);
var vehicleType = Math.random() < 0.3 ? 'truck' : 'car';
var vehicle = new TrafficVehicle(vehicleType);
vehicle.x = lanes[laneIndex];
vehicle.y = -100; // Start above screen
trafficVehicles.push(vehicle);
game.addChild(vehicle);
}
// Handle collision
function handleCollision(vehicle) {
if (vehicle.hasCollided) return;
vehicle.hasCollided = true;
var points = vehicle.points;
// Check for bonus multi-vehicle crashes
var nearbyVehicles = 0;
for (var i = 0; i < trafficVehicles.length; i++) {
var other = trafficVehicles[i];
if (other !== vehicle && !other.hasCollided) {
var distance = Math.sqrt(Math.pow(vehicle.x - other.x, 2) + Math.pow(vehicle.y - other.y, 2));
if (distance < 150) {
nearbyVehicles++;
other.hasCollided = true;
points += other.points;
}
}
}
// Bonus for multi-vehicle crashes
if (nearbyVehicles > 0) {
points += nearbyVehicles * 5;
LK.getSound('bonus').play();
} else {
LK.getSound('crash').play();
}
// Update score
LK.setScore(LK.getScore() + points);
scoreTxt.setText('Score: ' + LK.getScore());
// Visual effects
LK.effects.flashObject(vehicle, 0xff0000, 500);
LK.effects.flashObject(player, 0xffff00, 300);
// Tween crashed vehicle
tween(vehicle, {
alpha: 0.3,
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 500,
easing: tween.easeOut
});
}
// Touch controls
game.down = function (x, y, obj) {
dragActive = true;
player.x = x;
};
game.move = function (x, y, obj) {
if (dragActive) {
player.x = Math.max(200, Math.min(1848, x)); // Keep within screen bounds
}
};
game.up = function (x, y, obj) {
dragActive = false;
};
// Main game loop
game.update = function () {
// Spawn traffic vehicles
spawnTimer++;
if (spawnTimer >= spawnDelay) {
spawnTrafficVehicle();
spawnTimer = 0;
}
// Increase difficulty over time
speedIncreaseTimer++;
if (speedIncreaseTimer >= 1800) {
// Every 30 seconds
gameSpeed += 0.1;
spawnDelay = Math.max(20, spawnDelay - 2);
speedIncreaseTimer = 0;
}
// Update traffic vehicles
for (var i = trafficVehicles.length - 1; i >= 0; i--) {
var vehicle = trafficVehicles[i];
// Check collision with player
if (!vehicle.hasCollided && player.intersects(vehicle)) {
handleCollision(vehicle);
}
// Remove vehicles that are off screen
if (vehicle.y > 2800) {
vehicle.destroy();
trafficVehicles.splice(i, 1);
}
}
// Hide instruction text after first crash
if (LK.getScore() > 0 && instructionTxt.alpha > 0) {
tween(instructionTxt, {
alpha: 0
}, {
duration: 1000
});
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,172 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var PlayerCar = Container.expand(function () {
+ var self = Container.call(this);
+ var carGraphics = self.attachAsset('playerCar', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.isDestroyed = false;
+ return self;
+});
+var TrafficVehicle = Container.expand(function (type) {
+ var self = Container.call(this);
+ self.type = type || 'car';
+ self.speed = 4 + Math.random() * 3;
+ self.points = self.type === 'truck' ? 20 : 10;
+ self.hasCollided = false;
+ var vehicleGraphics = self.attachAsset(self.type === 'truck' ? 'truck' : 'trafficCar', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ 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: 0x333333
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var player;
+var trafficVehicles = [];
+var lanes = [400, 600, 800, 1000, 1200, 1400, 1648]; // 7 lanes across the screen
+var spawnTimer = 0;
+var spawnDelay = 60; // frames between spawns
+var gameSpeed = 1;
+var speedIncreaseTimer = 0;
+var dragActive = false;
+// UI Elements
+var scoreTxt = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var instructionTxt = new Text2('Drag to crash into traffic!', {
+ size: 60,
+ fill: 0xFFFF00
+});
+instructionTxt.anchor.set(0.5, 0);
+instructionTxt.y = 100;
+LK.gui.top.addChild(instructionTxt);
+// Initialize player
+player = game.addChild(new PlayerCar());
+player.x = 1024; // Center horizontally
+player.y = 2500; // Near bottom of screen
+// Spawn traffic vehicle
+function spawnTrafficVehicle() {
+ var laneIndex = Math.floor(Math.random() * lanes.length);
+ var vehicleType = Math.random() < 0.3 ? 'truck' : 'car';
+ var vehicle = new TrafficVehicle(vehicleType);
+ vehicle.x = lanes[laneIndex];
+ vehicle.y = -100; // Start above screen
+ trafficVehicles.push(vehicle);
+ game.addChild(vehicle);
+}
+// Handle collision
+function handleCollision(vehicle) {
+ if (vehicle.hasCollided) return;
+ vehicle.hasCollided = true;
+ var points = vehicle.points;
+ // Check for bonus multi-vehicle crashes
+ var nearbyVehicles = 0;
+ for (var i = 0; i < trafficVehicles.length; i++) {
+ var other = trafficVehicles[i];
+ if (other !== vehicle && !other.hasCollided) {
+ var distance = Math.sqrt(Math.pow(vehicle.x - other.x, 2) + Math.pow(vehicle.y - other.y, 2));
+ if (distance < 150) {
+ nearbyVehicles++;
+ other.hasCollided = true;
+ points += other.points;
+ }
+ }
+ }
+ // Bonus for multi-vehicle crashes
+ if (nearbyVehicles > 0) {
+ points += nearbyVehicles * 5;
+ LK.getSound('bonus').play();
+ } else {
+ LK.getSound('crash').play();
+ }
+ // Update score
+ LK.setScore(LK.getScore() + points);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ // Visual effects
+ LK.effects.flashObject(vehicle, 0xff0000, 500);
+ LK.effects.flashObject(player, 0xffff00, 300);
+ // Tween crashed vehicle
+ tween(vehicle, {
+ alpha: 0.3,
+ scaleX: 1.5,
+ scaleY: 1.5
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+}
+// Touch controls
+game.down = function (x, y, obj) {
+ dragActive = true;
+ player.x = x;
+};
+game.move = function (x, y, obj) {
+ if (dragActive) {
+ player.x = Math.max(200, Math.min(1848, x)); // Keep within screen bounds
+ }
+};
+game.up = function (x, y, obj) {
+ dragActive = false;
+};
+// Main game loop
+game.update = function () {
+ // Spawn traffic vehicles
+ spawnTimer++;
+ if (spawnTimer >= spawnDelay) {
+ spawnTrafficVehicle();
+ spawnTimer = 0;
+ }
+ // Increase difficulty over time
+ speedIncreaseTimer++;
+ if (speedIncreaseTimer >= 1800) {
+ // Every 30 seconds
+ gameSpeed += 0.1;
+ spawnDelay = Math.max(20, spawnDelay - 2);
+ speedIncreaseTimer = 0;
+ }
+ // Update traffic vehicles
+ for (var i = trafficVehicles.length - 1; i >= 0; i--) {
+ var vehicle = trafficVehicles[i];
+ // Check collision with player
+ if (!vehicle.hasCollided && player.intersects(vehicle)) {
+ handleCollision(vehicle);
+ }
+ // Remove vehicles that are off screen
+ if (vehicle.y > 2800) {
+ vehicle.destroy();
+ trafficVehicles.splice(i, 1);
+ }
+ }
+ // Hide instruction text after first crash
+ if (LK.getScore() > 0 && instructionTxt.alpha > 0) {
+ tween(instructionTxt, {
+ alpha: 0
+ }, {
+ duration: 1000
+ });
+ }
+};
\ No newline at end of file