/****
* Classes
****/
// Chicken class
var Chicken = Container.expand(function () {
var self = Container.call(this);
var chickenGraphics = self.attachAsset('chicken', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
// Update logic for chicken
};
self.move = function (x, y) {
var tempX = x;
var tempY = y;
if (self.x !== tempX || self.y !== tempY) {
self.x += (tempX - self.x) * 0.2;
self.y += (tempY - self.y) * 0.2;
}
};
});
//<Assets used in the game will automatically appear here>
// ChickenWing class
var ChickenWing = Container.expand(function () {
var self = Container.call(this);
var wingGraphics = self.attachAsset('chickenWing', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.y = -50;
self.x = Math.random() * 2048;
// No initial creation of chicken wings
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xF0EAD6 //Init game with egg-white background
});
/****
* Game Code
****/
function unlockMenuBar() {
var menuBar = new Container();
var menuBarGraphics = menuBar.attachAsset('menuBar', {
anchorX: 0.5,
anchorY: 0.5
});
menuBar.y = 2732 - 75; // Position menu bar at the bottom of the screen
menuBar.x = 2048 / 2; // Center the menu bar horizontally
for (var i = 0; i < 5; i++) {
var slot = new Container();
slot.width = 200;
slot.height = 200;
slot.x = (i - 2) * 220; // Space slots evenly, centered on the menu bar
slot.attachAsset('slot', {
anchorX: 0.5,
anchorY: 0.5
});
if (i === 0) {
var sword = slot.attachAsset('sword', {
anchorX: 0.5,
anchorY: 0.5
});
// Removed sword click event
}
menuBar.addChild(slot);
}
game.addChild(menuBar);
if (!tipMessageShown) {
// Show tip text for 10 seconds
var tipText = new Text2('Tip: Click to Chick', {
size: 100,
fill: "#8B4513"
});
tipText.anchor.set(0.5, 0.5);
tipText.x = 2048 / 2;
tipText.y = 2732 / 2;
game.addChild(tipText);
LK.setTimeout(function () {
tipText.destroy();
}, 10000);
tipMessageShown = true;
}
}
var chickenWingCount = 0;
var scoreIncrement = 1;
var scoreNeededForReset = 100;
var initialPlay = true;
var chickenWingInterval;
var menuBarUnlocked = false;
var tipMessageShown = false;
var chicken;
var tipText;
var score = 0;
var scoreTxt;
var chickenTxt;
// Initialize game elements
function initGame() {
// Clear previous game state
game.children.forEach(function (child) {
if (child instanceof Chicken) {
chicken = null;
}
child.destroy();
});
LK.gui.top.children.forEach(function (child) {
child.destroy();
});
if (scoreTxt) {
scoreTxt.destroy();
scoreTxt = null;
}
if (chickenTxt) {
chickenTxt.destroy();
chickenTxt = null;
}
if (chickenTxt) {
chickenTxt.destroy();
chickenTxt = null;
}
score = 0;
if (initialPlay) {
scoreIncrement = 1;
scoreNeededForReset = 100;
initialPlay = false;
} else {
scoreIncrement += 1; // Increase score increment by 1
scoreNeededForReset += 100; // Increase score needed for reset by 100
}
chickenWingCount = 0;
menuBarUnlocked = false;
tipMessageShown = false;
// Initialize chickenWingInterval for controlling the frequency of chicken wings falling
chickenWingInterval = LK.setInterval(function () {
var numberOfWings = Math.floor(Math.random() * 3) + 1; // Randomly decide to drop 1 to 3 wings
for (var i = 0; i < numberOfWings; i++) {
var wing = game.addChild(new ChickenWing());
wing.x = Math.random() * 2048;
wing.y = -50;
}
}, 2000);
if (chicken) {
chicken.destroy();
chicken = null;
}
chicken = game.addChild(new Chicken());
chicken.rotating = false;
chicken.x = 2048 / 2;
chicken.y = 2732 - 200;
chickenTxt = new Text2('Chicken', {
size: 100,
fill: "#000000"
});
chickenTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(chickenTxt);
scoreTxt = new Text2('Score: 0', {
size: 100,
fill: "#000000"
});
scoreTxt.anchor.set(0.5, 0);
scoreTxt.y = chickenTxt.height; // Position score text below 'Chicken' text
LK.gui.top.addChild(scoreTxt);
}
// Update game elements
game.update = function () {
chicken.update();
var moveInterval = LK.setInterval(function () {
chicken.move(chicken.x, chicken.y);
}, 8); // 120 FPS
game.children.forEach(function (child) {
if (child instanceof ChickenWing) {
child.update();
if (chicken.intersects(child)) {
child.destroy();
score += scoreIncrement;
scoreTxt.setText('Score: ' + score);
if (score % 10 === 0 && score !== 0 && !chicken.rotating) {
chicken.rotating = true;
var originalRotation = chicken.rotation;
chicken.rotation += Math.PI / 2; // Rotate chicken by 90 degrees
LK.setTimeout(function () {
chicken.rotation = originalRotation;
chicken.rotating = false;
}, 1000); // Reset rotation after 1 second
}
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
// Shake effect
var originalX = chicken.x;
var originalY = chicken.y;
var shakeMagnitude = 5;
var shakeDuration = 500;
var shakeInterval = 50;
var shakeCount = shakeDuration / shakeInterval;
var shakeStep = 0;
var shake = LK.setInterval(function () {
if (shakeStep < shakeCount) {
chicken.x = originalX + (Math.random() - 0.5) * shakeMagnitude;
chicken.y = originalY + (Math.random() - 0.5) * shakeMagnitude;
shakeStep++;
} else {
LK.clearInterval(shake);
chicken.x = originalX;
chicken.y = originalY;
}
}, shakeInterval);
if (score >= 5 && !game.menuBarUnlocked) {
game.menuBarUnlocked = true;
unlockMenuBar();
}
// Increase chicken size more drastically at every milestone of ten score
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
// Increase the frequency of chicken wings falling from the top of the screen once the player gets 15 score
if (score >= 15) {
LK.clearInterval(chickenWingInterval);
chickenWingInterval = LK.setInterval(function () {
var numberOfWings = Math.floor(Math.random() * 3) + 1; // Randomly decide to drop 1 to 3 wings
for (var i = 0; i < numberOfWings; i++) {
var wing = game.addChild(new ChickenWing());
wing.x = Math.random() * 2048;
wing.y = -50;
}
}, 1000); // Increase frequency to every 1 second
}
if (score >= scoreNeededForReset) {
score = 0;
chicken.scale.set(1, 1);
initGame(); // Reinitialize game elements
}
}
}
});
};
// Handle touch events
game.down = function (x, y, obj) {
var tempX = x;
var tempY = y;
if (chicken.x !== tempX || chicken.y !== tempY) {
if (chicken.x !== tempX || chicken.y !== tempY) {
chicken.move(tempX, tempY);
var moveInterval = LK.setInterval(function () {
chicken.move(tempX, tempY);
if (Math.abs(chicken.x - tempX) < 1 && Math.abs(chicken.y - tempY) < 1) {
LK.clearInterval(moveInterval);
}
}, 8); // 120 FPS
}
}
var chickenWingCount = 0;
if (menuBarUnlocked) {
game.children.forEach(function (child) {
if (child instanceof ChickenWing) {
child.destroy();
chickenWingCount += 1;
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
}
});
}
if (score >= 100) {
score += chickenWingCount * 2;
} else {
score += chickenWingCount;
}
scoreTxt.setText('Score: ' + score);
// Shake effect
var originalX = chicken.x;
var originalY = chicken.y;
var shakeMagnitude = 5;
var shakeDuration = 500;
var shakeInterval = 50;
var shakeCount = shakeDuration / shakeInterval;
var shakeStep = 0;
var shake = LK.setInterval(function () {
if (shakeStep < shakeCount) {
chicken.x = originalX + (Math.random() - 0.5) * shakeMagnitude;
chicken.y = originalY + (Math.random() - 0.5) * shakeMagnitude;
shakeStep++;
} else {
LK.clearInterval(shake);
chicken.x = originalX;
chicken.y = originalY;
}
}, shakeInterval);
if (score >= 5 && !menuBarUnlocked) {
menuBarUnlocked = true;
unlockMenuBar();
}
};
game.move = function (x, y, obj) {
var tempX = x;
var tempY = y;
chicken.move(tempX, tempY);
var moveInterval = LK.setInterval(function () {
chicken.move(tempX, tempY);
if (Math.abs(chicken.x - tempX) < 1 && Math.abs(chicken.y - tempY) < 1) {
LK.clearInterval(moveInterval);
}
}, 16); // 60 FPS
};
game.up = function (x, y, obj) {
// No action needed on touch up
};
// Initialize the game
initGame(); /****
* Classes
****/
// Chicken class
var Chicken = Container.expand(function () {
var self = Container.call(this);
var chickenGraphics = self.attachAsset('chicken', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
// Update logic for chicken
};
self.move = function (x, y) {
var tempX = x;
var tempY = y;
if (self.x !== tempX || self.y !== tempY) {
self.x += (tempX - self.x) * 0.2;
self.y += (tempY - self.y) * 0.2;
}
};
});
//<Assets used in the game will automatically appear here>
// ChickenWing class
var ChickenWing = Container.expand(function () {
var self = Container.call(this);
var wingGraphics = self.attachAsset('chickenWing', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.y = -50;
self.x = Math.random() * 2048;
// No initial creation of chicken wings
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xF0EAD6 //Init game with egg-white background
});
/****
* Game Code
****/
function unlockMenuBar() {
var menuBar = new Container();
var menuBarGraphics = menuBar.attachAsset('menuBar', {
anchorX: 0.5,
anchorY: 0.5
});
menuBar.y = 2732 - 75; // Position menu bar at the bottom of the screen
menuBar.x = 2048 / 2; // Center the menu bar horizontally
for (var i = 0; i < 5; i++) {
var slot = new Container();
slot.width = 200;
slot.height = 200;
slot.x = (i - 2) * 220; // Space slots evenly, centered on the menu bar
slot.attachAsset('slot', {
anchorX: 0.5,
anchorY: 0.5
});
if (i === 0) {
var sword = slot.attachAsset('sword', {
anchorX: 0.5,
anchorY: 0.5
});
// Removed sword click event
}
menuBar.addChild(slot);
}
game.addChild(menuBar);
if (!tipMessageShown) {
// Show tip text for 10 seconds
var tipText = new Text2('Tip: Click to Chick', {
size: 100,
fill: "#8B4513"
});
tipText.anchor.set(0.5, 0.5);
tipText.x = 2048 / 2;
tipText.y = 2732 / 2;
game.addChild(tipText);
LK.setTimeout(function () {
tipText.destroy();
}, 10000);
tipMessageShown = true;
}
}
var chickenWingCount = 0;
var scoreIncrement = 1;
var scoreNeededForReset = 100;
var initialPlay = true;
var chickenWingInterval;
var menuBarUnlocked = false;
var tipMessageShown = false;
var chicken;
var tipText;
var score = 0;
var scoreTxt;
var chickenTxt;
// Initialize game elements
function initGame() {
// Clear previous game state
game.children.forEach(function (child) {
if (child instanceof Chicken) {
chicken = null;
}
child.destroy();
});
LK.gui.top.children.forEach(function (child) {
child.destroy();
});
if (scoreTxt) {
scoreTxt.destroy();
scoreTxt = null;
}
if (chickenTxt) {
chickenTxt.destroy();
chickenTxt = null;
}
if (chickenTxt) {
chickenTxt.destroy();
chickenTxt = null;
}
score = 0;
if (initialPlay) {
scoreIncrement = 1;
scoreNeededForReset = 100;
initialPlay = false;
} else {
scoreIncrement += 1; // Increase score increment by 1
scoreNeededForReset += 100; // Increase score needed for reset by 100
}
chickenWingCount = 0;
menuBarUnlocked = false;
tipMessageShown = false;
// Initialize chickenWingInterval for controlling the frequency of chicken wings falling
chickenWingInterval = LK.setInterval(function () {
var numberOfWings = Math.floor(Math.random() * 3) + 1; // Randomly decide to drop 1 to 3 wings
for (var i = 0; i < numberOfWings; i++) {
var wing = game.addChild(new ChickenWing());
wing.x = Math.random() * 2048;
wing.y = -50;
}
}, 2000);
if (chicken) {
chicken.destroy();
chicken = null;
}
chicken = game.addChild(new Chicken());
chicken.rotating = false;
chicken.x = 2048 / 2;
chicken.y = 2732 - 200;
chickenTxt = new Text2('Chicken', {
size: 100,
fill: "#000000"
});
chickenTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(chickenTxt);
scoreTxt = new Text2('Score: 0', {
size: 100,
fill: "#000000"
});
scoreTxt.anchor.set(0.5, 0);
scoreTxt.y = chickenTxt.height; // Position score text below 'Chicken' text
LK.gui.top.addChild(scoreTxt);
}
// Update game elements
game.update = function () {
chicken.update();
var moveInterval = LK.setInterval(function () {
chicken.move(chicken.x, chicken.y);
}, 8); // 120 FPS
game.children.forEach(function (child) {
if (child instanceof ChickenWing) {
child.update();
if (chicken.intersects(child)) {
child.destroy();
score += scoreIncrement;
scoreTxt.setText('Score: ' + score);
if (score % 10 === 0 && score !== 0 && !chicken.rotating) {
chicken.rotating = true;
var originalRotation = chicken.rotation;
chicken.rotation += Math.PI / 2; // Rotate chicken by 90 degrees
LK.setTimeout(function () {
chicken.rotation = originalRotation;
chicken.rotating = false;
}, 1000); // Reset rotation after 1 second
}
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
// Shake effect
var originalX = chicken.x;
var originalY = chicken.y;
var shakeMagnitude = 5;
var shakeDuration = 500;
var shakeInterval = 50;
var shakeCount = shakeDuration / shakeInterval;
var shakeStep = 0;
var shake = LK.setInterval(function () {
if (shakeStep < shakeCount) {
chicken.x = originalX + (Math.random() - 0.5) * shakeMagnitude;
chicken.y = originalY + (Math.random() - 0.5) * shakeMagnitude;
shakeStep++;
} else {
LK.clearInterval(shake);
chicken.x = originalX;
chicken.y = originalY;
}
}, shakeInterval);
if (score >= 5 && !game.menuBarUnlocked) {
game.menuBarUnlocked = true;
unlockMenuBar();
}
// Increase chicken size more drastically at every milestone of ten score
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
// Increase the frequency of chicken wings falling from the top of the screen once the player gets 15 score
if (score >= 15) {
LK.clearInterval(chickenWingInterval);
chickenWingInterval = LK.setInterval(function () {
var numberOfWings = Math.floor(Math.random() * 3) + 1; // Randomly decide to drop 1 to 3 wings
for (var i = 0; i < numberOfWings; i++) {
var wing = game.addChild(new ChickenWing());
wing.x = Math.random() * 2048;
wing.y = -50;
}
}, 1000); // Increase frequency to every 1 second
}
if (score >= scoreNeededForReset) {
score = 0;
chicken.scale.set(1, 1);
initGame(); // Reinitialize game elements
}
}
}
});
};
// Handle touch events
game.down = function (x, y, obj) {
var tempX = x;
var tempY = y;
if (chicken.x !== tempX || chicken.y !== tempY) {
if (chicken.x !== tempX || chicken.y !== tempY) {
chicken.move(tempX, tempY);
var moveInterval = LK.setInterval(function () {
chicken.move(tempX, tempY);
if (Math.abs(chicken.x - tempX) < 1 && Math.abs(chicken.y - tempY) < 1) {
LK.clearInterval(moveInterval);
}
}, 8); // 120 FPS
}
}
var chickenWingCount = 0;
if (menuBarUnlocked) {
game.children.forEach(function (child) {
if (child instanceof ChickenWing) {
child.destroy();
chickenWingCount += 1;
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
chicken.scale.x += 0.1;
chicken.scale.y += 0.1;
}
});
}
if (score >= 100) {
score += chickenWingCount * 2;
} else {
score += chickenWingCount;
}
scoreTxt.setText('Score: ' + score);
// Shake effect
var originalX = chicken.x;
var originalY = chicken.y;
var shakeMagnitude = 5;
var shakeDuration = 500;
var shakeInterval = 50;
var shakeCount = shakeDuration / shakeInterval;
var shakeStep = 0;
var shake = LK.setInterval(function () {
if (shakeStep < shakeCount) {
chicken.x = originalX + (Math.random() - 0.5) * shakeMagnitude;
chicken.y = originalY + (Math.random() - 0.5) * shakeMagnitude;
shakeStep++;
} else {
LK.clearInterval(shake);
chicken.x = originalX;
chicken.y = originalY;
}
}, shakeInterval);
if (score >= 5 && !menuBarUnlocked) {
menuBarUnlocked = true;
unlockMenuBar();
}
};
game.move = function (x, y, obj) {
var tempX = x;
var tempY = y;
chicken.move(tempX, tempY);
var moveInterval = LK.setInterval(function () {
chicken.move(tempX, tempY);
if (Math.abs(chicken.x - tempX) < 1 && Math.abs(chicken.y - tempY) < 1) {
LK.clearInterval(moveInterval);
}
}, 16); // 60 FPS
};
game.up = function (x, y, obj) {
// No action needed on touch up
};
// Initialize the game
initGame();