/**** * Classes ****/ // Coin class representing coins for the penguin to pick var Coin = Container.expand(function () { var self = Container.call(this); var coinGraphics = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -5; self.value = 10; self.update = function () { self.x += self.speed; self.y += Math.sin(self.x / 100) * 10; // Add a sine wave movement to the y position if (self.x < -100) { self.destroy(); } }; }); // HighCoin class representing higher coins for the penguin to pick var HighCoin = Coin.expand(function () { var self = Coin.call(this); if (self) { self.value = 5; } }); // Level2Obstacle class representing level 2 obstacles on the path var Level2Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -7; // Increase speed for level 2 self.update = function () { self.x += self.speed; if (self.x < -100) { self.destroy(); } }; }); // Obstacle class representing obstacles on the path var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -5; self.update = function () { self.x += self.speed; if (self.x < -100) { self.destroy(); } }; }); //<Assets used in the game will automatically appear here> // Penguin class representing the player character var Penguin = Container.expand(function () { var self = Container.call(this); var penguinGraphics = self.attachAsset('penguin', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.jumpHeight = 55; self.isJumping = false; self.update = function () { if (self.isJumping) { self.y -= self.speed; if (self.y <= self.jumpHeight) { self.isJumping = false; self.jumpHeight = Math.random() * 200; // Randomize jump height between 0 and 200 } } else if (self.y < 2732 / 2) { self.y += self.speed; } }; self.jump = function () { if (!self.isJumping) { self.isJumping = true; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000080 // Set the background color to navy blue to represent underwater }); /**** * Game Code ****/ // Add the ocean as the background var ocean = game.addChild(LK.getAsset('Ocean', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 })); // Set initial ocean wave direction ocean.waveDirection = 1; // Initialize game variables var penguin = game.addChild(new Penguin()); penguin.x = 2048 / 2; penguin.y = 2732 / 2; var obstacles = []; var coins = []; var score = 0; var scoreTxt = new Text2('0', { size: 100, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var alternate = false; // Function to handle game updates game.update = function () { // Animate the ocean to give the illusion of underwater waves ocean.y += ocean.waveDirection; if (ocean.y > 2732 / 2 + 5 || ocean.y < 2732 / 2 - 5) { ocean.waveDirection *= -1; } penguin.update(); for (var i = obstacles.length - 1; i >= 0; i--) { obstacles[i].update(); if (penguin.intersects(obstacles[i])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } if (LK.ticks % 60 == 0) { var newObstacle = new Obstacle(); newObstacle.x = 2048; newObstacle.y = alternate ? 2732 / 3 : 2732 / 2; obstacles.push(newObstacle); game.addChild(newObstacle); alternate = !alternate; } // Add level 2 obstacles every 90 ticks if (LK.ticks % 90 == 0) { var newLevel2Obstacle = new Level2Obstacle(); newLevel2Obstacle.x = 2048; newLevel2Obstacle.y = alternate ? 2732 / 2 : 2732 / 3; obstacles.push(newLevel2Obstacle); game.addChild(newLevel2Obstacle); } // Add coins every 90 ticks if (LK.ticks % 90 == 0) { var newCoin = alternate ? new HighCoin() : new Coin(); newCoin.x = 2048; newCoin.y = alternate ? 2732 / 3 : 2732 / 2; // Position coins near the pingos coins.push(newCoin); game.addChild(newCoin); } // Update the score when the penguin picks a coin for (var i = coins.length - 1; i >= 0; i--) { if (penguin.intersects(coins[i])) { score += coins[i].value; coins[i].destroy(); coins.splice(i, 1); } } scoreTxt.setText(score); }; // Event listener for touch down to make the penguin jump game.down = function (x, y, obj) { penguin.jump(); }; // Change the color of the background once the player hits 50 points if (score >= 50) { game.setBackgroundColor(0x00FFFF); // Change the background color to blue } // Increase the speed of the obstacles and the coins once the user collects points worth 100 points if (score >= 100) { for (var i = 0; i < obstacles.length; i++) { obstacles[i].speed += 2; } for (var i = 0; i < coins.length; i++) { coins[i].speed += 2; } } // End the game when the player reaches 500 points if (score >= 500) { LK.showGameOver(); }
/****
* Classes
****/
// Coin class representing coins for the penguin to pick
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinGraphics = self.attachAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -5;
self.value = 10;
self.update = function () {
self.x += self.speed;
self.y += Math.sin(self.x / 100) * 10; // Add a sine wave movement to the y position
if (self.x < -100) {
self.destroy();
}
};
});
// HighCoin class representing higher coins for the penguin to pick
var HighCoin = Coin.expand(function () {
var self = Coin.call(this);
if (self) {
self.value = 5;
}
});
// Level2Obstacle class representing level 2 obstacles on the path
var Level2Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -7; // Increase speed for level 2
self.update = function () {
self.x += self.speed;
if (self.x < -100) {
self.destroy();
}
};
});
// Obstacle class representing obstacles on the path
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -5;
self.update = function () {
self.x += self.speed;
if (self.x < -100) {
self.destroy();
}
};
});
//<Assets used in the game will automatically appear here>
// Penguin class representing the player character
var Penguin = Container.expand(function () {
var self = Container.call(this);
var penguinGraphics = self.attachAsset('penguin', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.jumpHeight = 55;
self.isJumping = false;
self.update = function () {
if (self.isJumping) {
self.y -= self.speed;
if (self.y <= self.jumpHeight) {
self.isJumping = false;
self.jumpHeight = Math.random() * 200; // Randomize jump height between 0 and 200
}
} else if (self.y < 2732 / 2) {
self.y += self.speed;
}
};
self.jump = function () {
if (!self.isJumping) {
self.isJumping = true;
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000080 // Set the background color to navy blue to represent underwater
});
/****
* Game Code
****/
// Add the ocean as the background
var ocean = game.addChild(LK.getAsset('Ocean', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
}));
// Set initial ocean wave direction
ocean.waveDirection = 1;
// Initialize game variables
var penguin = game.addChild(new Penguin());
penguin.x = 2048 / 2;
penguin.y = 2732 / 2;
var obstacles = [];
var coins = [];
var score = 0;
var scoreTxt = new Text2('0', {
size: 100,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var alternate = false;
// Function to handle game updates
game.update = function () {
// Animate the ocean to give the illusion of underwater waves
ocean.y += ocean.waveDirection;
if (ocean.y > 2732 / 2 + 5 || ocean.y < 2732 / 2 - 5) {
ocean.waveDirection *= -1;
}
penguin.update();
for (var i = obstacles.length - 1; i >= 0; i--) {
obstacles[i].update();
if (penguin.intersects(obstacles[i])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
if (LK.ticks % 60 == 0) {
var newObstacle = new Obstacle();
newObstacle.x = 2048;
newObstacle.y = alternate ? 2732 / 3 : 2732 / 2;
obstacles.push(newObstacle);
game.addChild(newObstacle);
alternate = !alternate;
}
// Add level 2 obstacles every 90 ticks
if (LK.ticks % 90 == 0) {
var newLevel2Obstacle = new Level2Obstacle();
newLevel2Obstacle.x = 2048;
newLevel2Obstacle.y = alternate ? 2732 / 2 : 2732 / 3;
obstacles.push(newLevel2Obstacle);
game.addChild(newLevel2Obstacle);
}
// Add coins every 90 ticks
if (LK.ticks % 90 == 0) {
var newCoin = alternate ? new HighCoin() : new Coin();
newCoin.x = 2048;
newCoin.y = alternate ? 2732 / 3 : 2732 / 2; // Position coins near the pingos
coins.push(newCoin);
game.addChild(newCoin);
}
// Update the score when the penguin picks a coin
for (var i = coins.length - 1; i >= 0; i--) {
if (penguin.intersects(coins[i])) {
score += coins[i].value;
coins[i].destroy();
coins.splice(i, 1);
}
}
scoreTxt.setText(score);
};
// Event listener for touch down to make the penguin jump
game.down = function (x, y, obj) {
penguin.jump();
};
// Change the color of the background once the player hits 50 points
if (score >= 50) {
game.setBackgroundColor(0x00FFFF); // Change the background color to blue
}
// Increase the speed of the obstacles and the coins once the user collects points worth 100 points
if (score >= 100) {
for (var i = 0; i < obstacles.length; i++) {
obstacles[i].speed += 2;
}
for (var i = 0; i < coins.length; i++) {
coins[i].speed += 2;
}
}
// End the game when the player reaches 500 points
if (score >= 500) {
LK.showGameOver();
}