/****
* Classes
****/
// Assets will be automatically created based on usage in the code.
// Bird class
var Bird = Container.expand(function () {
var self = Container.call(this);
var birdGraphics = self.attachAsset('bird', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedY = 10;
self.flyUp = false;
self._move_migrated = function () {
// Bird falls down
self.y += self.speedY;
// If bird is flying up, decrease its y position
if (self.flyUp) {
self.speedY -= 80;
if (self.speedY <= -10) {
self.flyUp = false;
}
} else {
self.speedY += 10;
if (self.speedY > 10) {
self.speedY = 11;
}
}
};
});
// Obstacle class
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5,
shape: 'ellipse'
});
self.speedX = -5;
self._move_migrated = function () {
// Obstacle moves from right to left
self.x += self.speedX;
// Rotate obstacle counterclockwise
// self.rotation -= 0.17;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Light blue background to simulate sky
});
/****
* Game Code
****/
// Add background to the game
var background = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2048 / 2
}));
var bird = game.addChild(new Bird());
bird.x = 350; // Start in the middle of the screen horizontally
bird.y = 1366; // Start in the middle of the screen vertically
// Add touch event listener to make bird move up and down smoothly
game.on('down', function (x, y, obj) {
bird.flyUp = true;
// bird.rotation += Math.PI / 2; // Rotate 90 degrees
bird.scale.y = 0.7; // Reduce bird size vertically by 10%
LK.setTimeout(function () {
bird.scale.y = 1; // Return bird to original size after 100ms
}, 100);
// Play 'Jump' sound when the screen is pressed
LK.getSound('Jump').play();
});
var obstacles = [];
var obstacleCreationCounter = 0;
var score = 0; // Add a variable to track the player's score
LK.on('tick', function () {
bird._move_migrated();
// Create a new obstacle every 42 ticks (approximately 0.7 seconds)
obstacleCreationCounter++;
if (score < 15 && obstacleCreationCounter >= 36 || score >= 15 && score < 30 && obstacleCreationCounter >= 30 || score >= 30 && score < 45 && obstacleCreationCounter >= 24 || score >= 45 && score < 60 && obstacleCreationCounter >= 24 || score >= 60 && obstacleCreationCounter >= 18) {
var newObstacle = game.addChild(new Obstacle());
newObstacle.x = 2048; // Start at the right edge of the screen
newObstacle.y = Math.random() * 2732; // Start at a random height
// After 10 points, randomly change obstacle speed between -4 and -9
if (score > 25) {
newObstacle.speedX = Math.floor(Math.random() * (-10 + 4 + 1)) + -4;
} else if (obstacles.length % 10 == 9) {
newObstacle.speedX = -13;
}
obstacles.push(newObstacle);
obstacleCreationCounter = 0;
}
// If the player's score is 13 or more, make the obstacles move up and down
if (score >= 13) {
for (var i = 0; i < obstacles.length; i++) {
var obstacle = obstacles[i];
obstacle.y += Math.sin(obstacle.x * 0.01) * 5; // Change the y position of the obstacle based on a sine wave
}
}
// Move each obstacle and check for collisions
for (var i = 0; i < obstacles.length; i++) {
var obstacle = obstacles[i];
obstacle._move_migrated();
// Check if bird has collided with the obstacle
var dx = bird.x - obstacle.x;
var dy = bird.y - obstacle.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < bird.width / 2 + obstacle.width / 2) {
// Play 'chainsaw' sound when the bird collides with an obstacle
LK.getSound('chainsaw').play();
// Flash screen red for 1 second (1000ms) to show game over.
LK.effects.flashScreen(0xff0000, 1000);
// Show game over. The game will be automatically paused while game over is showing.
LK.showGameOver();
}
}
// Check if bird has fallen off the screen or risen above the screen
var dx = bird.x - 2048 / 2;
var dy = bird.y - 2670 / 2;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 3000 / 2) {
// Flash screen red for 1 second (1000ms) to show game over.
LK.effects.flashScreen(0xff0000, 1000);
// Show game over. The game will be automatically paused while game over is showing.
LK.showGameOver();
}
});
// Initialize bird and obstacles
// Yellow bird
// Brown obstacles;
var obstacle = game.addChild(new Obstacle());
obstacle.x = 2120; // Start at the right edge of the screen
obstacle.y = Math.random() * 2732; // Start at a random height;
// Initialize score counter
var score = 0;
var scoreTxt = new Text2(score.toString(), {
size: 75,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(1, 0); // Anchor to the top right corner
LK.gui.topRight.addChild(scoreTxt);
// Update score every 2 seconds
LK.setInterval(function () {
score++;
scoreTxt.setText(score.toString());
// Save the score
LK.setScore(score);
}, 1300);
;