/**** * Classes ****/ // BonusEgg class for falling bonus eggs var BonusEgg = Container.expand(function () { var self = Container.call(this); var bonusEggGraphics = self.attachAsset('bonuseg', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 5 + 2 + Math.floor(score / 100); self.update = function () { self.y += self.speed; }; }); // Egg class for falling eggs var Egg = Container.expand(function () { var self = Container.call(this); var eggGraphics = self.attachAsset('egg', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 5 + 2 + Math.floor(score / 100); self.update = function () { self.y += self.speed; }; }); // GoldenEgg class for falling golden eggs var GoldenEgg = Container.expand(function () { var self = Container.call(this); var goldenEggGraphics = self.attachAsset('goldenegg', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 5 + 2 + Math.floor(score / 100); self.update = function () { self.y += self.speed; }; }); //<Assets used in the game will automatically appear here> // Live class for falling lives var Live = Container.expand(function () { var self = Container.call(this); var liveGraphics = self.attachAsset('live', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 5 + 2 + Math.floor(score / 100); self.update = function () { self.y += self.speed; }; }); // RottenEgg class for falling rotten eggs var RottenEgg = Container.expand(function () { var self = Container.call(this); var rottenEggGraphics = self.attachAsset('rottenEgg', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 5 + 2; self.update = function () { self.y += self.speed; }; }); // Wolf class to control the player character var Wolf = Container.expand(function () { var self = Container.call(this); var wolfGraphics = self.attachAsset('wolf', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Update the wolf's y position based on the gravity this.y += this.gravity; // Apply gravity this.gravity += 1; // Make sure the wolf doesn't fall through the ground if (this.y > 2732 - 200) { this.y = 2732 - 200; this.gravity = 0; this.isJumping = false; // Wolf is not jumping anymore } }; self.gravity = 0; self.isJumping = false; // Add a new property to check if the wolf is jumping self.jump = function () { // Define the jump height var jumpHeight = 40; // Make sure the wolf is not already jumping if (!this.isJumping) { // Make the wolf jump this.gravity = -jumpHeight; this.isJumping = true; // Wolf is now jumping } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2271b3 //Init game with black background }); /**** * Game Code ****/ // Play the main theme music when the game starts and repeat until game over var music = LK.getSound('music'); music.play(); music.loop = true; game.on('gameOver', function () { music.stop(); }); var background = game.attachAsset('background', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); // Add three chickens at the background var chicken1 = game.attachAsset('chicken', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 300 }); // Initialize game variables var wolf = game.addChild(new Wolf()); wolf.x = 2048 / 2; wolf.y = 2732 - 200; var eggs = []; var rottenEggs = []; var goldenEggs = []; var livesArray = []; var score = 0; var lastBonusScore = 0; var lives = 3; var bonusEggs = []; var protectionTimer = 0; // Display score var scoreTxt = new Text2('Score: 0', { size: 100, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Display lives var livesTxt = new Text2('Lives: ' + lives, { size: 100, fill: "#ffffff" }); livesTxt.anchor.set(0.5, 0); livesTxt.y = 100; // Move the life counter some down LK.gui.top.addChild(livesTxt); // Add a pause button var pauseButton = new Text2('Pause', { size: 100, fill: "#ffffff" }); pauseButton.anchor.set(0.5, 0); pauseButton.x = 2048 - 200; // Position the pause button at the top right corner LK.gui.top.addChild(pauseButton); // Handle pause button click pauseButton.down = function (x, y, obj) { LK.pauseGame(); }; // Handle wolf movement game.move = function (x, y, obj) { if (x > wolf.x) { wolf.scaleX = 1; // face right } else if (x < wolf.x) { wolf.scaleX = -1; // face left } wolf.x = x; }; game.down = function (x, y, obj) { wolf.jump(); }; // Update game state game.update = function () { // Spawn eggs and rotten eggs if (LK.ticks % 60 == 0) { var newEgg = new Egg(); newEgg.x = Math.random() * 2048; newEgg.y = -50; eggs.push(newEgg); game.addChild(newEgg); } if (LK.ticks % (360 - Math.floor(score / 10)) == 0) { var newRottenEgg = new RottenEgg(); newRottenEgg.x = Math.random() * 2048; newRottenEgg.y = -50; rottenEggs.push(newRottenEgg); game.addChild(newRottenEgg); } if (score % 15 == 0 && score > 0) { var newGoldenEgg = new GoldenEgg(); newGoldenEgg.x = Math.random() * 2048; newGoldenEgg.y = -50; goldenEggs.push(newGoldenEgg); game.addChild(newGoldenEgg); } if (score != 0 && score % 400 == 0 && score != lastBonusScore) { var newBonusEgg = new BonusEgg(); newBonusEgg.x = Math.random() * 2048; newBonusEgg.y = -50; bonusEggs.push(newBonusEgg); game.addChild(newBonusEgg); lastBonusScore = score; } if (score != 0 && score % 100 == 0 && livesArray.length < 3) { var newLive = new Live(); newLive.x = Math.random() * 2048; newLive.y = -50; livesArray.push(newLive); game.addChild(newLive); } // Update eggs and check for collisions for (var i = eggs.length - 1; i >= 0; i--) { eggs[i].update(); if (eggs[i].intersects(wolf)) { score += 1; scoreTxt.setText('Score: ' + score); eggs[i].destroy(); eggs.splice(i, 1); } else if (eggs[i].y > 2732) { lives -= 1; livesTxt.setText('Lives: ' + lives); LK.effects.flashObject(wolf, 0xff0000, 1000); LK.getSound('heat').play(); eggs[i].destroy(); eggs.splice(i, 1); if (lives <= 0) { LK.effects.flashScreen(0xff0000, 1000); console.log("Game Over! Your score was: " + score); music.stop(); LK.showGameOver(); } } } // Update rotten eggs and check for collisions for (var i = rottenEggs.length - 1; i >= 0; i--) { rottenEggs[i].update(); if (rottenEggs[i].intersects(wolf)) { if (protectionTimer <= 0) { lives -= 1; livesTxt.setText('Lives: ' + lives); LK.effects.flashObject(wolf, 0xff0000, 1000); LK.getSound('heat').play(); rottenEggs[i].destroy(); rottenEggs.splice(i, 1); if (lives <= 0) { LK.effects.flashScreen(0xff0000, 1000); console.log("Game Over! Your score was: " + score); music.stop(); LK.showGameOver(); } } else { rottenEggs[i].destroy(); rottenEggs.splice(i, 1); } } if (rottenEggs[i] && rottenEggs[i].y > 2732) { rottenEggs[i].destroy(); rottenEggs.splice(i, 1); } } for (var i = goldenEggs.length - 1; i >= 0; i--) { goldenEggs[i].update(); if (goldenEggs[i].intersects(wolf)) { score += 2; // Double points for golden egg scoreTxt.setText('Score: ' + score); goldenEggs[i].destroy(); goldenEggs.splice(i, 1); } if (goldenEggs[i] && goldenEggs[i].y > 2732) { goldenEggs[i].destroy(); goldenEggs.splice(i, 1); } } for (var i = bonusEggs.length - 1; i >= 0; i--) { bonusEggs[i].update(); if (bonusEggs[i].intersects(wolf)) { protectionTimer = 900; // 15 seconds of protection at 60 FPS bonusEggs[i].destroy(); bonusEggs.splice(i, 1); } else if (bonusEggs[i].y > 2732) { bonusEggs[i].destroy(); bonusEggs.splice(i, 1); } } for (var i = livesArray.length - 1; i >= 0; i--) { livesArray[i].update(); if (livesArray[i].intersects(wolf)) { lives += 1; livesTxt.setText('Lives: ' + lives); livesArray[i].destroy(); livesArray.splice(i, 1); } if (livesArray[i] && livesArray[i].y > 2732) { livesArray[i].destroy(); livesArray.splice(i, 1); } } if (protectionTimer > 0) { protectionTimer--; wolf.alpha = 0.5; // Indicate protection with transparency } else { wolf.alpha = 1; // Reset wolf transparency } };
/****
* Classes
****/
// BonusEgg class for falling bonus eggs
var BonusEgg = Container.expand(function () {
var self = Container.call(this);
var bonusEggGraphics = self.attachAsset('bonuseg', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 5 + 2 + Math.floor(score / 100);
self.update = function () {
self.y += self.speed;
};
});
// Egg class for falling eggs
var Egg = Container.expand(function () {
var self = Container.call(this);
var eggGraphics = self.attachAsset('egg', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 5 + 2 + Math.floor(score / 100);
self.update = function () {
self.y += self.speed;
};
});
// GoldenEgg class for falling golden eggs
var GoldenEgg = Container.expand(function () {
var self = Container.call(this);
var goldenEggGraphics = self.attachAsset('goldenegg', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 5 + 2 + Math.floor(score / 100);
self.update = function () {
self.y += self.speed;
};
});
//<Assets used in the game will automatically appear here>
// Live class for falling lives
var Live = Container.expand(function () {
var self = Container.call(this);
var liveGraphics = self.attachAsset('live', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 5 + 2 + Math.floor(score / 100);
self.update = function () {
self.y += self.speed;
};
});
// RottenEgg class for falling rotten eggs
var RottenEgg = Container.expand(function () {
var self = Container.call(this);
var rottenEggGraphics = self.attachAsset('rottenEgg', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 5 + 2;
self.update = function () {
self.y += self.speed;
};
});
// Wolf class to control the player character
var Wolf = Container.expand(function () {
var self = Container.call(this);
var wolfGraphics = self.attachAsset('wolf', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Update the wolf's y position based on the gravity
this.y += this.gravity;
// Apply gravity
this.gravity += 1;
// Make sure the wolf doesn't fall through the ground
if (this.y > 2732 - 200) {
this.y = 2732 - 200;
this.gravity = 0;
this.isJumping = false; // Wolf is not jumping anymore
}
};
self.gravity = 0;
self.isJumping = false; // Add a new property to check if the wolf is jumping
self.jump = function () {
// Define the jump height
var jumpHeight = 40;
// Make sure the wolf is not already jumping
if (!this.isJumping) {
// Make the wolf jump
this.gravity = -jumpHeight;
this.isJumping = true; // Wolf is now jumping
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2271b3 //Init game with black background
});
/****
* Game Code
****/
// Play the main theme music when the game starts and repeat until game over
var music = LK.getSound('music');
music.play();
music.loop = true;
game.on('gameOver', function () {
music.stop();
});
var background = game.attachAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add three chickens at the background
var chicken1 = game.attachAsset('chicken', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2 + 300
});
// Initialize game variables
var wolf = game.addChild(new Wolf());
wolf.x = 2048 / 2;
wolf.y = 2732 - 200;
var eggs = [];
var rottenEggs = [];
var goldenEggs = [];
var livesArray = [];
var score = 0;
var lastBonusScore = 0;
var lives = 3;
var bonusEggs = [];
var protectionTimer = 0;
// Display score
var scoreTxt = new Text2('Score: 0', {
size: 100,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Display lives
var livesTxt = new Text2('Lives: ' + lives, {
size: 100,
fill: "#ffffff"
});
livesTxt.anchor.set(0.5, 0);
livesTxt.y = 100; // Move the life counter some down
LK.gui.top.addChild(livesTxt);
// Add a pause button
var pauseButton = new Text2('Pause', {
size: 100,
fill: "#ffffff"
});
pauseButton.anchor.set(0.5, 0);
pauseButton.x = 2048 - 200; // Position the pause button at the top right corner
LK.gui.top.addChild(pauseButton);
// Handle pause button click
pauseButton.down = function (x, y, obj) {
LK.pauseGame();
};
// Handle wolf movement
game.move = function (x, y, obj) {
if (x > wolf.x) {
wolf.scaleX = 1; // face right
} else if (x < wolf.x) {
wolf.scaleX = -1; // face left
}
wolf.x = x;
};
game.down = function (x, y, obj) {
wolf.jump();
};
// Update game state
game.update = function () {
// Spawn eggs and rotten eggs
if (LK.ticks % 60 == 0) {
var newEgg = new Egg();
newEgg.x = Math.random() * 2048;
newEgg.y = -50;
eggs.push(newEgg);
game.addChild(newEgg);
}
if (LK.ticks % (360 - Math.floor(score / 10)) == 0) {
var newRottenEgg = new RottenEgg();
newRottenEgg.x = Math.random() * 2048;
newRottenEgg.y = -50;
rottenEggs.push(newRottenEgg);
game.addChild(newRottenEgg);
}
if (score % 15 == 0 && score > 0) {
var newGoldenEgg = new GoldenEgg();
newGoldenEgg.x = Math.random() * 2048;
newGoldenEgg.y = -50;
goldenEggs.push(newGoldenEgg);
game.addChild(newGoldenEgg);
}
if (score != 0 && score % 400 == 0 && score != lastBonusScore) {
var newBonusEgg = new BonusEgg();
newBonusEgg.x = Math.random() * 2048;
newBonusEgg.y = -50;
bonusEggs.push(newBonusEgg);
game.addChild(newBonusEgg);
lastBonusScore = score;
}
if (score != 0 && score % 100 == 0 && livesArray.length < 3) {
var newLive = new Live();
newLive.x = Math.random() * 2048;
newLive.y = -50;
livesArray.push(newLive);
game.addChild(newLive);
}
// Update eggs and check for collisions
for (var i = eggs.length - 1; i >= 0; i--) {
eggs[i].update();
if (eggs[i].intersects(wolf)) {
score += 1;
scoreTxt.setText('Score: ' + score);
eggs[i].destroy();
eggs.splice(i, 1);
} else if (eggs[i].y > 2732) {
lives -= 1;
livesTxt.setText('Lives: ' + lives);
LK.effects.flashObject(wolf, 0xff0000, 1000);
LK.getSound('heat').play();
eggs[i].destroy();
eggs.splice(i, 1);
if (lives <= 0) {
LK.effects.flashScreen(0xff0000, 1000);
console.log("Game Over! Your score was: " + score);
music.stop();
LK.showGameOver();
}
}
}
// Update rotten eggs and check for collisions
for (var i = rottenEggs.length - 1; i >= 0; i--) {
rottenEggs[i].update();
if (rottenEggs[i].intersects(wolf)) {
if (protectionTimer <= 0) {
lives -= 1;
livesTxt.setText('Lives: ' + lives);
LK.effects.flashObject(wolf, 0xff0000, 1000);
LK.getSound('heat').play();
rottenEggs[i].destroy();
rottenEggs.splice(i, 1);
if (lives <= 0) {
LK.effects.flashScreen(0xff0000, 1000);
console.log("Game Over! Your score was: " + score);
music.stop();
LK.showGameOver();
}
} else {
rottenEggs[i].destroy();
rottenEggs.splice(i, 1);
}
}
if (rottenEggs[i] && rottenEggs[i].y > 2732) {
rottenEggs[i].destroy();
rottenEggs.splice(i, 1);
}
}
for (var i = goldenEggs.length - 1; i >= 0; i--) {
goldenEggs[i].update();
if (goldenEggs[i].intersects(wolf)) {
score += 2; // Double points for golden egg
scoreTxt.setText('Score: ' + score);
goldenEggs[i].destroy();
goldenEggs.splice(i, 1);
}
if (goldenEggs[i] && goldenEggs[i].y > 2732) {
goldenEggs[i].destroy();
goldenEggs.splice(i, 1);
}
}
for (var i = bonusEggs.length - 1; i >= 0; i--) {
bonusEggs[i].update();
if (bonusEggs[i].intersects(wolf)) {
protectionTimer = 900; // 15 seconds of protection at 60 FPS
bonusEggs[i].destroy();
bonusEggs.splice(i, 1);
} else if (bonusEggs[i].y > 2732) {
bonusEggs[i].destroy();
bonusEggs.splice(i, 1);
}
}
for (var i = livesArray.length - 1; i >= 0; i--) {
livesArray[i].update();
if (livesArray[i].intersects(wolf)) {
lives += 1;
livesTxt.setText('Lives: ' + lives);
livesArray[i].destroy();
livesArray.splice(i, 1);
}
if (livesArray[i] && livesArray[i].y > 2732) {
livesArray[i].destroy();
livesArray.splice(i, 1);
}
}
if (protectionTimer > 0) {
protectionTimer--;
wolf.alpha = 0.5; // Indicate protection with transparency
} else {
wolf.alpha = 1; // Reset wolf transparency
}
};
Cartoon wolf. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon rotten egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon golden egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon egg with big heart. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon scared chicken. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon bonus egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.