/**** * Classes ****/ //<Assets used in the game will automatically appear here> // Fruit class to represent each fruit coming from the right side var Fruit = Container.expand(function () { var self = Container.call(this); // Attach a fruit asset, assuming a generic fruit shape is available var fruitTypes = ['mango', 'apple', 'banana', 'grape']; var randomFruit = fruitTypes[Math.floor(Math.random() * fruitTypes.length)]; var fruitGraphics = self.attachAsset(randomFruit, { anchorX: 0.5, anchorY: 0.5 }); // Set initial speed for the fruit self.speed = -5; // Update function to move the fruit leftwards self.update = function () { self.x += self.speed; }; }); var Knife = Container.expand(function () { var self = Container.call(this); var knifeGraphics = self.attachAsset('knife', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { self.y += self.speed; }; }); var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); self.speed = -5; self.update = function () { self.x += self.speed; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x00FFFF // Set background color to cyan }); /**** * Game Code ****/ // Play background music LK.playMusic('LIFE', { loop: true }); var fruits = []; var knife = game.addChild(new Knife()); knife.x = 2048 / 2; knife.y = 2732 / 2; var fruitCount = 0; var maxFruits = 10000; // Create and display the score text var scoreTxt = new Text2('0', { size: 150, fill: "#ff0000", fontWeight: "bold" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Add a small text that says 'DO NOT TOUCH ROCK' var warningTxt = new Text2('DO NOT TOUCH ROCK', { size: 50, fill: "#ffffff" }); warningTxt.anchor.set(0.5, 0); LK.gui.bottom.addChild(warningTxt); // Function to update the score display function updateScoreDisplay() { scoreTxt.setText(LK.getScore()); } // Function to handle game updates var dragNode = null; function handleMove(x, y, obj) { if (dragNode) { dragNode.x = x; dragNode.y = y; } } game.move = handleMove; game.down = function (x, y, obj) { dragNode = knife; handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; }; game.update = function () { // Create new fruits at regular intervals if (LK.ticks % 30 == 0 && fruitCount < maxFruits) { var newFruit = new Fruit(); newFruit.x = 2048; // Start from the right side newFruit.y = Math.random() * 2732; // Random y position fruits.push(newFruit); game.addChild(newFruit); fruitCount++; } // Update each fruit's position for (var i = fruits.length - 1; i >= 0; i--) { fruits[i].update(); // Remove fruits that have moved off the left side of the screen if (fruits[i].x < -50) { fruits[i].destroy(); fruits.splice(i, 1); } // Add points for cutting fruits if (knife.intersects(fruits[i])) { fruits[i].destroy(); fruits.splice(i, 1); if (fruits[i] && fruits[i].assetId === '670be8300c26e18447ad576e') { // Check if the fruit is a banana LK.setScore(LK.getScore() + 10); // Add 10 points for cutting a banana } else { LK.setScore(LK.getScore() + 1); // Add 1 point for other fruits } updateScoreDisplay(); } } // Create new obstacles at regular intervals if (LK.ticks % 60 == 0) { var newObstacle = new Obstacle(); newObstacle.x = 2048; // Start from the right side newObstacle.y = Math.random() * 2732; // Random y position game.addChild(newObstacle); } // Update each obstacle's position for (var j = game.children.length - 1; j >= 0; j--) { if (game.children[j] instanceof Obstacle) { game.children[j].update(); // Remove obstacles that have moved off the left side of the screen if (game.children[j].x < -50) { game.children[j].destroy(); game.children.splice(j, 1); } // End game if knife intersects with an obstacle if (knife.intersects(game.children[j])) { LK.showGameOver(); } } } // End the game after 20 seconds if (LK.ticks >= 1200) { // 20 seconds * 60 FPS = 1200 ticks LK.showGameOver(); } };
/****
* Classes
****/
//<Assets used in the game will automatically appear here>
// Fruit class to represent each fruit coming from the right side
var Fruit = Container.expand(function () {
var self = Container.call(this);
// Attach a fruit asset, assuming a generic fruit shape is available
var fruitTypes = ['mango', 'apple', 'banana', 'grape'];
var randomFruit = fruitTypes[Math.floor(Math.random() * fruitTypes.length)];
var fruitGraphics = self.attachAsset(randomFruit, {
anchorX: 0.5,
anchorY: 0.5
});
// Set initial speed for the fruit
self.speed = -5;
// Update function to move the fruit leftwards
self.update = function () {
self.x += self.speed;
};
});
var Knife = Container.expand(function () {
var self = Container.call(this);
var knifeGraphics = self.attachAsset('knife', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
self.y += self.speed;
};
});
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = -5;
self.update = function () {
self.x += self.speed;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x00FFFF // Set background color to cyan
});
/****
* Game Code
****/
// Play background music
LK.playMusic('LIFE', {
loop: true
});
var fruits = [];
var knife = game.addChild(new Knife());
knife.x = 2048 / 2;
knife.y = 2732 / 2;
var fruitCount = 0;
var maxFruits = 10000;
// Create and display the score text
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ff0000",
fontWeight: "bold"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Add a small text that says 'DO NOT TOUCH ROCK'
var warningTxt = new Text2('DO NOT TOUCH ROCK', {
size: 50,
fill: "#ffffff"
});
warningTxt.anchor.set(0.5, 0);
LK.gui.bottom.addChild(warningTxt);
// Function to update the score display
function updateScoreDisplay() {
scoreTxt.setText(LK.getScore());
}
// Function to handle game updates
var dragNode = null;
function handleMove(x, y, obj) {
if (dragNode) {
dragNode.x = x;
dragNode.y = y;
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
dragNode = knife;
handleMove(x, y, obj);
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.update = function () {
// Create new fruits at regular intervals
if (LK.ticks % 30 == 0 && fruitCount < maxFruits) {
var newFruit = new Fruit();
newFruit.x = 2048; // Start from the right side
newFruit.y = Math.random() * 2732; // Random y position
fruits.push(newFruit);
game.addChild(newFruit);
fruitCount++;
}
// Update each fruit's position
for (var i = fruits.length - 1; i >= 0; i--) {
fruits[i].update();
// Remove fruits that have moved off the left side of the screen
if (fruits[i].x < -50) {
fruits[i].destroy();
fruits.splice(i, 1);
}
// Add points for cutting fruits
if (knife.intersects(fruits[i])) {
fruits[i].destroy();
fruits.splice(i, 1);
if (fruits[i] && fruits[i].assetId === '670be8300c26e18447ad576e') {
// Check if the fruit is a banana
LK.setScore(LK.getScore() + 10); // Add 10 points for cutting a banana
} else {
LK.setScore(LK.getScore() + 1); // Add 1 point for other fruits
}
updateScoreDisplay();
}
}
// Create new obstacles at regular intervals
if (LK.ticks % 60 == 0) {
var newObstacle = new Obstacle();
newObstacle.x = 2048; // Start from the right side
newObstacle.y = Math.random() * 2732; // Random y position
game.addChild(newObstacle);
}
// Update each obstacle's position
for (var j = game.children.length - 1; j >= 0; j--) {
if (game.children[j] instanceof Obstacle) {
game.children[j].update();
// Remove obstacles that have moved off the left side of the screen
if (game.children[j].x < -50) {
game.children[j].destroy();
game.children.splice(j, 1);
}
// End game if knife intersects with an obstacle
if (knife.intersects(game.children[j])) {
LK.showGameOver();
}
}
}
// End the game after 20 seconds
if (LK.ticks >= 1200) {
// 20 seconds * 60 FPS = 1200 ticks
LK.showGameOver();
}
};