/**** * Classes ****/ // Bike class to represent the player's bike var Bike = Container.expand(function () { var self = Container.call(this); self.attachAsset('bike', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 0; // Remove player bike acceleration and deceleration methods // Update method to move the bike self.update = function () { // self.x += self.speed; // Remove automatic movement }; }); // Bomb class to represent bombs falling randomly var Bomb = Container.expand(function () { var self = Container.call(this); self.attachAsset('bomb', { anchorX: 0.5, anchorY: 0.5 }); self.x = Math.random() * 2048; // Randomize x position self.y = Math.random() * 600; // Randomize y position self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3 // Update method to move the bomb self.update = function () { self.y += self.speed; // Move bomb downward based on speed if (self.y > 2732) { // Check if it goes off the bottom of the screen self.y = -50; // Start from the top self.x = Math.random() * 2048; // Randomize x position } }; }); // OpponentBike class to represent opponent bikes var OpponentBike = Container.expand(function () { var self = Container.call(this); self.attachAsset('opponentBike', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 3; // Random speed between 3 and 5 // Update method to move the opponent bike self.update = function () { self.y += self.speed; // Move bike downward based on speed if (self.y > 2732) { // Reset if it goes off screen self.y = -50; // Start from the top self.x = Math.random() * 2048; // Randomize x position } }; }); // PowerUp class to represent power-up items var PowerUp = Container.expand(function () { var self = Container.call(this); self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); self.x = Math.random() * 2048; // Randomize x position self.y = Math.random() * 600; // Randomize y position self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3 // Method to check if bike intersects with the power-up self.checkCollision = function (bike) { return bike.intersects(self); }; // Update method to move the power-up self.update = function () { self.y += self.speed; // Move power-up downward based on speed if (self.y > 2732) { // Check if it goes off the bottom of the screen self.y = -50; // Start from the top self.x = Math.random() * 2048; // Randomize x position } }; }); var RedBall = Container.expand(function () { var self = Container.call(this); self.attachAsset('redBall', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3 self.update = function () { self.y += self.speed; if (self.y > 2732) { self.y = -50; self.x = Math.random() * 2048; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xFFFFFF }); /**** * Game Code ****/ // Init game with white background LK.setScore(0); // Initialize score to zero LK.setScore(0); // Initialize score to zero // Play race start sound LK.getSound('race_start').play(); // Create and display score text on the screen var scoreTxt = new Text2('0', { size: 150, fill: "#000000" // Set score text color to black }); scoreTxt.anchor.set(0.5, 0); // Center the score text horizontally LK.gui.top.addChild(scoreTxt); // Add the score text to the GUI overlay // Initialize arrays and variables var playerBike = game.addChild(new Bike()); playerBike.x = 2048 / 2; // Center player bike playerBike.y = 2500; // Position player bike a little above the bottom var opponentBikes = []; var powerUps = []; var redBalls = []; var bombs = []; // Create red balls and add them to the game for (var i = 0; i < 5; i++) { var redBall = new RedBall(); redBall.x = Math.random() * 2048; // Randomize position redBall.y = -100 * (i + 1); // Stagger red balls redBalls.push(redBall); game.addChild(redBall); } ; // Create opponent bikes and add them to the game for (var i = 0; i < 5; i++) { var opponentBike = new OpponentBike(); opponentBike.x = Math.random() * 2048; // Randomize position opponentBike.y = -100 * (i + 1); // Stagger opponent bikes opponentBikes.push(opponentBike); game.addChild(opponentBike); } // Create bombs and add them to the game for (var i = 0; i < 3; i++) { var bomb = new Bomb(); bomb.x = Math.random() * 2048; // Randomize position bomb.y = -100 * (i + 1); // Stagger bombs bombs.push(bomb); game.addChild(bomb); } // Create power-ups and add them to the game for (var i = 0; i < 3; i++) { var powerUp = new PowerUp(); powerUp.x = Math.random() * 2048; // Randomize position powerUp.y = -100 * (i + 1); // Stagger power-ups powerUps.push(powerUp); game.addChild(powerUp); } // Handle player movement game.move = function (x) { playerBike.x = x; // Move player bike left or right }; // Remove player bike acceleration and deceleration event handlers // Update game state game.update = function () { playerBike.update(); // Update player bike // Update opponent bikes for (var i = 0; i < opponentBikes.length; i++) { opponentBikes[i].update(); // Check for collision with player bike if (playerBike.intersects(opponentBikes[i])) { LK.getSound('crash').play(); // Play crash sound LK.effects.flashScreen(0xff0000, 1000); // Flash screen red LK.showGameOver(); // Show game over screen } } // Update power-ups and check for collisions for (var i = powerUps.length - 1; i >= 0; i--) { powerUps[i].update(); // Update power-up position if (powerUps[i].checkCollision(playerBike)) { LK.getSound('power_up').play(); // Play power-up sound powerUps[i].destroy(); // Remove power-up from game LK.setScore(LK.getScore() + 1); // Update score scoreTxt.setText(LK.getScore()); // Update score text powerUps.splice(i, 1); // Remove from array var newPowerUp = new PowerUp(); // Create a new power-up powerUps.push(newPowerUp); // Add new power-up to array game.addChild(newPowerUp); // Add new power-up to game } } // Update power-ups for (var i = 0; i < powerUps.length; i++) { powerUps[i].update(); } // Update red balls for (var i = 0; i < redBalls.length; i++) { redBalls[i].update(); } // Update bombs for (var i = 0; i < bombs.length; i++) { bombs[i].update(); } };
/****
* Classes
****/
// Bike class to represent the player's bike
var Bike = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('bike', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
// Remove player bike acceleration and deceleration methods
// Update method to move the bike
self.update = function () {
// self.x += self.speed; // Remove automatic movement
};
});
// Bomb class to represent bombs falling randomly
var Bomb = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('bomb', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = Math.random() * 2048; // Randomize x position
self.y = Math.random() * 600; // Randomize y position
self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3
// Update method to move the bomb
self.update = function () {
self.y += self.speed; // Move bomb downward based on speed
if (self.y > 2732) {
// Check if it goes off the bottom of the screen
self.y = -50; // Start from the top
self.x = Math.random() * 2048; // Randomize x position
}
};
});
// OpponentBike class to represent opponent bikes
var OpponentBike = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('opponentBike', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 3; // Random speed between 3 and 5
// Update method to move the opponent bike
self.update = function () {
self.y += self.speed; // Move bike downward based on speed
if (self.y > 2732) {
// Reset if it goes off screen
self.y = -50; // Start from the top
self.x = Math.random() * 2048; // Randomize x position
}
};
});
// PowerUp class to represent power-up items
var PowerUp = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = Math.random() * 2048; // Randomize x position
self.y = Math.random() * 600; // Randomize y position
self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3
// Method to check if bike intersects with the power-up
self.checkCollision = function (bike) {
return bike.intersects(self);
};
// Update method to move the power-up
self.update = function () {
self.y += self.speed; // Move power-up downward based on speed
if (self.y > 2732) {
// Check if it goes off the bottom of the screen
self.y = -50; // Start from the top
self.x = Math.random() * 2048; // Randomize x position
}
};
});
var RedBall = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('redBall', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 1; // Random speed between 1 and 3
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.y = -50;
self.x = Math.random() * 2048;
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xFFFFFF
});
/****
* Game Code
****/
// Init game with white background
LK.setScore(0); // Initialize score to zero
LK.setScore(0); // Initialize score to zero
// Play race start sound
LK.getSound('race_start').play();
// Create and display score text on the screen
var scoreTxt = new Text2('0', {
size: 150,
fill: "#000000" // Set score text color to black
});
scoreTxt.anchor.set(0.5, 0); // Center the score text horizontally
LK.gui.top.addChild(scoreTxt); // Add the score text to the GUI overlay
// Initialize arrays and variables
var playerBike = game.addChild(new Bike());
playerBike.x = 2048 / 2; // Center player bike
playerBike.y = 2500; // Position player bike a little above the bottom
var opponentBikes = [];
var powerUps = [];
var redBalls = [];
var bombs = [];
// Create red balls and add them to the game
for (var i = 0; i < 5; i++) {
var redBall = new RedBall();
redBall.x = Math.random() * 2048; // Randomize position
redBall.y = -100 * (i + 1); // Stagger red balls
redBalls.push(redBall);
game.addChild(redBall);
}
;
// Create opponent bikes and add them to the game
for (var i = 0; i < 5; i++) {
var opponentBike = new OpponentBike();
opponentBike.x = Math.random() * 2048; // Randomize position
opponentBike.y = -100 * (i + 1); // Stagger opponent bikes
opponentBikes.push(opponentBike);
game.addChild(opponentBike);
}
// Create bombs and add them to the game
for (var i = 0; i < 3; i++) {
var bomb = new Bomb();
bomb.x = Math.random() * 2048; // Randomize position
bomb.y = -100 * (i + 1); // Stagger bombs
bombs.push(bomb);
game.addChild(bomb);
}
// Create power-ups and add them to the game
for (var i = 0; i < 3; i++) {
var powerUp = new PowerUp();
powerUp.x = Math.random() * 2048; // Randomize position
powerUp.y = -100 * (i + 1); // Stagger power-ups
powerUps.push(powerUp);
game.addChild(powerUp);
}
// Handle player movement
game.move = function (x) {
playerBike.x = x; // Move player bike left or right
};
// Remove player bike acceleration and deceleration event handlers
// Update game state
game.update = function () {
playerBike.update(); // Update player bike
// Update opponent bikes
for (var i = 0; i < opponentBikes.length; i++) {
opponentBikes[i].update();
// Check for collision with player bike
if (playerBike.intersects(opponentBikes[i])) {
LK.getSound('crash').play(); // Play crash sound
LK.effects.flashScreen(0xff0000, 1000); // Flash screen red
LK.showGameOver(); // Show game over screen
}
}
// Update power-ups and check for collisions
for (var i = powerUps.length - 1; i >= 0; i--) {
powerUps[i].update(); // Update power-up position
if (powerUps[i].checkCollision(playerBike)) {
LK.getSound('power_up').play(); // Play power-up sound
powerUps[i].destroy(); // Remove power-up from game
LK.setScore(LK.getScore() + 1); // Update score
scoreTxt.setText(LK.getScore()); // Update score text
powerUps.splice(i, 1); // Remove from array
var newPowerUp = new PowerUp(); // Create a new power-up
powerUps.push(newPowerUp); // Add new power-up to array
game.addChild(newPowerUp); // Add new power-up to game
}
}
// Update power-ups
for (var i = 0; i < powerUps.length; i++) {
powerUps[i].update();
}
// Update red balls
for (var i = 0; i < redBalls.length; i++) {
redBalls[i].update();
}
// Update bombs
for (var i = 0; i < bombs.length; i++) {
bombs[i].update();
}
};