/****
* Classes
****/
//<Assets used in the game will automatically appear here>
// Car class representing the player's vehicle
var Car = Container.expand(function () {
var self = Container.call(this);
var carGraphics = self.attachAsset('car', {
anchorX: 0.5,
anchorY: 0.5
});
});
// FuelTank class representing fuel tanks on the road
var FuelTank = Container.expand(function () {
var self = Container.call(this);
var fuelTankGraphics = self.attachAsset('fuelTank', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.destroy();
}
};
});
// Obstacle class representing obstacles on the road
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;
if (self.y > 2732) {
self.destroy();
}
};
});
// PowerUp class representing power-ups on the road
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.destroy();
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x333333 // Set background color to a dark gray resembling a road
});
/****
* Game Code
****/
// Initialize player car
var playerCar = game.addChild(new Car());
playerCar.x = 2048 / 2;
playerCar.y = 2732 - 200;
// Arrays to keep track of obstacles and power-ups
var obstacles = [];
var powerUps = [];
// Array to keep track of fuel tanks
var fuelTanks = [];
// Spawn new fuel tanks
if (LK.ticks % 80 == 0) {
var newFuelTank = new FuelTank();
newFuelTank.x = Math.random() * 2048;
newFuelTank.y = -100;
fuelTanks.push(newFuelTank);
game.addChild(newFuelTank);
}
function handleMove(x, y, obj) {
playerCar.x = x;
playerCar.y = y;
}
// Event listeners for touch/mouse events
game.down = function (x, y, obj) {
handleMove(x, y, obj);
};
game.move = function (x, y, obj) {
handleMove(x, y, obj);
};
// Game update loop
game.update = function () {
// Update obstacles
for (var i = obstacles.length - 1; i >= 0; i--) {
if (obstacles[i].intersects(playerCar)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
if (obstacles[i].y > 2732) {
obstacles[i].destroy();
obstacles.splice(i, 1);
}
}
// Update power-ups
for (var j = powerUps.length - 1; j >= 0; j--) {
if (powerUps[j].intersects(playerCar)) {
// Play a sound or animation for collecting power-up
LK.setScore(LK.getScore() + 10);
scoreTxt.setText(LK.getScore());
powerUps[j].destroy();
powerUps.splice(j, 1);
// Increase speed every 10 points
if (LK.getScore() % 10 === 0) {
for (var k = 0; k < obstacles.length; k++) {
obstacles[k].speed += 1;
}
for (var l = 0; l < powerUps.length; l++) {
powerUps[l].speed += 1;
}
}
}
if (powerUps[j] && powerUps[j].y > 2732) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
powerUps[j].destroy();
powerUps.splice(j, 1);
}
}
// Update fuel tanks
for (var f = fuelTanks.length - 1; f >= 0; f--) {
if (fuelTanks[f].intersects(playerCar)) {
// Logic for collecting fuel tank
fuelTanks[f].destroy();
fuelTanks.splice(f, 1);
}
if (fuelTanks[f] && fuelTanks[f].y > 2732) {
fuelTanks[f].destroy();
fuelTanks.splice(f, 1);
}
}
// Spawn new obstacles
if (LK.ticks % 40 == 0) {
// Increase the number of obstacles spawned
for (var m = 0; m < 2; m++) {
// Spawn two obstacles instead of one
var newObstacle = new Obstacle();
newObstacle.x = Math.random() * 2048;
newObstacle.y = -100;
obstacles.push(newObstacle);
game.addChild(newObstacle);
}
}
// Spawn new power-ups
if (LK.ticks % 60 == 0) {
var newPowerUp = new PowerUp();
newPowerUp.x = Math.random() * 2048;
newPowerUp.y = -100;
powerUps.push(newPowerUp);
game.addChild(newPowerUp);
}
};
// Display score
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.setText(LK.getScore());
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);