/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Fruit = Container.expand(function () { var self = Container.call(this); // Randomly select a fruit type var fruitTypes = ['Apple', 'Banana', 'pineapple', 'sleeve']; var randomFruit = fruitTypes[Math.floor(Math.random() * fruitTypes.length)]; // Attach the selected fruit image asset to the container var fruitGraphics = self.attachAsset(randomFruit, { anchorX: 0.5, anchorY: 0.5, scaleX: 5, // Scale fruit 5x horizontally scaleY: 5 // Scale fruit 5x vertically }); // Set initial position of the fruit in the middle of the screen self.x = 1024; // Center horizontally self.y = 1366; // Center vertically // Add update method to move the fruit left and right self.update = function () { // Move fruit left and right if (self.x <= 0 || self.x >= 2048) { self.speed = -self.speed; // Reverse direction when hitting screen edges } self.x += self.speed; }; // Randomly set initial direction of the fruit self.speed = Math.random() < 0.5 ? 20 : -20; // Initial speed of the fruit, faster than the pencil }); var Pencil = Container.expand(function () { var self = Container.call(this); // Attach the pencil image asset to the container var pencilGraphics = self.attachAsset('Pencil', { anchorX: 0.5, anchorY: 0.5 }); // Set initial position of the pencil self.x = 1024; // Center horizontally self.y = 0; // Position at the top of the screen // Add update method to move the pencil left and right self.update = function () { // Move pencil left and right if (self.x <= 0 || self.x >= 2048) { self.speed = -self.speed; // Reverse direction when hitting screen edges } self.x += self.speed; }; self.speed = 15; // Initial speed of the pencil }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var bg = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2048 / 100, // Scale to fit the screen width scaleY: 2732 / 100, // Scale to fit the screen height // Scale to fit 720p height x: 2048 / 2, // Center horizontally y: 2732 / 2 // Center vertically }); game.addChild(bg); var pencil = game.addChild(new Pencil()); var fruit = game.addChild(new Fruit()); // Initialize score display var scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); fruit.lastWasIntersecting = false; // Add event listener for screen touch to throw the pencil down game.down = function (x, y, obj) { pencil.speed = 20; // Set a downward speed for the pencil pencil.update = function () { // Move pencil down pencil.y += pencil.speed; }; }; // Ensure the game updates the pencil's position every tick game.update = function () { pencil.update(); fruit.update(); // Check if the pencil has missed the target (e.g., gone off-screen) if (pencil.y > 2732) { // Trigger game over if the pencil misses the target LK.showGameOver(); } else if (fruit.lastWasIntersecting === false && pencil.intersects(fruit)) { // Destroy the pencil after it touches a fruit pencil.destroy(); // Double the pencil speed with each fruit destroyed pencil.speed *= 2; // Play hit sound LK.getSound('Hit').play(); // Darken the screen var darkOverlay = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2048 / 100, scaleY: 2732 / 100, x: 2048 / 2, y: 2732 / 2, tint: 0x000000, alpha: 0.5 }); game.addChild(darkOverlay); // Remove dark overlay after a short duration LK.setTimeout(function () { darkOverlay.destroy(); }, 1000); // Update score LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // Check if 10 fruits have been destroyed if (LK.getScore() % 10 === 0) { // Increase fruit speed for a dash effect fruit.speed *= 2; // Reset fruit speed after a short duration LK.setTimeout(function () { fruit.speed /= 2; }, 1000); // Darken the screen var darkOverlay = LK.getAsset('Bg', { anchorX: 0.5, anchorY: 0.5, scaleX: 2048 / 100, scaleY: 2732 / 100, x: 2048 / 2, y: 2732 / 2, tint: 0x000000, alpha: 0.8 }); game.addChild(darkOverlay); // Add light effect to the fruit var light = LK.getAsset('Light', { anchorX: 0.5, anchorY: 0.5, scaleX: 10, scaleY: 10, x: fruit.x, y: fruit.y }); game.addChild(light); // Animate light effect tween(light, { alpha: 0 }, { duration: 1000, onFinish: function onFinish() { light.destroy(); } }); // Remove dark overlay after a short duration LK.setTimeout(function () { darkOverlay.destroy(); }, 1000); } // Create a new pencil pencil = game.addChild(new Pencil()); // Bounce animation on fruit hit tween(fruit, { scaleX: 6, scaleY: 6 }, { duration: 300, easing: tween.bounceOut, onFinish: function onFinish() { tween(fruit, { scaleX: 5, scaleY: 5 }, { duration: 300, easing: tween.bounceIn, onFinish: function onFinish() { // Create a new fruit after the animation finishes fruit.destroy(); fruit = game.addChild(new Fruit()); // Add light effect to the fruit var light = LK.getAsset('Light', { anchorX: 0.5, anchorY: 0.5, scaleX: 10, scaleY: 10, x: fruit.x, y: fruit.y }); game.addChild(light); // Animate light effect tween(light, { alpha: 0 }, { duration: 1000, onFinish: function onFinish() { light.destroy(); } }); } }); } }); } fruit.lastWasIntersecting = pencil.intersects(fruit); };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Fruit = Container.expand(function () {
var self = Container.call(this);
// Randomly select a fruit type
var fruitTypes = ['Apple', 'Banana', 'pineapple', 'sleeve'];
var randomFruit = fruitTypes[Math.floor(Math.random() * fruitTypes.length)];
// Attach the selected fruit image asset to the container
var fruitGraphics = self.attachAsset(randomFruit, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 5,
// Scale fruit 5x horizontally
scaleY: 5 // Scale fruit 5x vertically
});
// Set initial position of the fruit in the middle of the screen
self.x = 1024; // Center horizontally
self.y = 1366; // Center vertically
// Add update method to move the fruit left and right
self.update = function () {
// Move fruit left and right
if (self.x <= 0 || self.x >= 2048) {
self.speed = -self.speed; // Reverse direction when hitting screen edges
}
self.x += self.speed;
};
// Randomly set initial direction of the fruit
self.speed = Math.random() < 0.5 ? 20 : -20; // Initial speed of the fruit, faster than the pencil
});
var Pencil = Container.expand(function () {
var self = Container.call(this);
// Attach the pencil image asset to the container
var pencilGraphics = self.attachAsset('Pencil', {
anchorX: 0.5,
anchorY: 0.5
});
// Set initial position of the pencil
self.x = 1024; // Center horizontally
self.y = 0; // Position at the top of the screen
// Add update method to move the pencil left and right
self.update = function () {
// Move pencil left and right
if (self.x <= 0 || self.x >= 2048) {
self.speed = -self.speed; // Reverse direction when hitting screen edges
}
self.x += self.speed;
};
self.speed = 15; // Initial speed of the pencil
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var bg = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2048 / 100,
// Scale to fit the screen width
scaleY: 2732 / 100,
// Scale to fit the screen height
// Scale to fit 720p height
x: 2048 / 2,
// Center horizontally
y: 2732 / 2 // Center vertically
});
game.addChild(bg);
var pencil = game.addChild(new Pencil());
var fruit = game.addChild(new Fruit());
// Initialize score display
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
fruit.lastWasIntersecting = false;
// Add event listener for screen touch to throw the pencil down
game.down = function (x, y, obj) {
pencil.speed = 20; // Set a downward speed for the pencil
pencil.update = function () {
// Move pencil down
pencil.y += pencil.speed;
};
};
// Ensure the game updates the pencil's position every tick
game.update = function () {
pencil.update();
fruit.update();
// Check if the pencil has missed the target (e.g., gone off-screen)
if (pencil.y > 2732) {
// Trigger game over if the pencil misses the target
LK.showGameOver();
} else if (fruit.lastWasIntersecting === false && pencil.intersects(fruit)) {
// Destroy the pencil after it touches a fruit
pencil.destroy();
// Double the pencil speed with each fruit destroyed
pencil.speed *= 2;
// Play hit sound
LK.getSound('Hit').play();
// Darken the screen
var darkOverlay = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2048 / 100,
scaleY: 2732 / 100,
x: 2048 / 2,
y: 2732 / 2,
tint: 0x000000,
alpha: 0.5
});
game.addChild(darkOverlay);
// Remove dark overlay after a short duration
LK.setTimeout(function () {
darkOverlay.destroy();
}, 1000);
// Update score
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// Check if 10 fruits have been destroyed
if (LK.getScore() % 10 === 0) {
// Increase fruit speed for a dash effect
fruit.speed *= 2;
// Reset fruit speed after a short duration
LK.setTimeout(function () {
fruit.speed /= 2;
}, 1000);
// Darken the screen
var darkOverlay = LK.getAsset('Bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2048 / 100,
scaleY: 2732 / 100,
x: 2048 / 2,
y: 2732 / 2,
tint: 0x000000,
alpha: 0.8
});
game.addChild(darkOverlay);
// Add light effect to the fruit
var light = LK.getAsset('Light', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 10,
scaleY: 10,
x: fruit.x,
y: fruit.y
});
game.addChild(light);
// Animate light effect
tween(light, {
alpha: 0
}, {
duration: 1000,
onFinish: function onFinish() {
light.destroy();
}
});
// Remove dark overlay after a short duration
LK.setTimeout(function () {
darkOverlay.destroy();
}, 1000);
}
// Create a new pencil
pencil = game.addChild(new Pencil());
// Bounce animation on fruit hit
tween(fruit, {
scaleX: 6,
scaleY: 6
}, {
duration: 300,
easing: tween.bounceOut,
onFinish: function onFinish() {
tween(fruit, {
scaleX: 5,
scaleY: 5
}, {
duration: 300,
easing: tween.bounceIn,
onFinish: function onFinish() {
// Create a new fruit after the animation finishes
fruit.destroy();
fruit = game.addChild(new Fruit());
// Add light effect to the fruit
var light = LK.getAsset('Light', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 10,
scaleY: 10,
x: fruit.x,
y: fruit.y
});
game.addChild(light);
// Animate light effect
tween(light, {
alpha: 0
}, {
duration: 1000,
onFinish: function onFinish() {
light.destroy();
}
});
}
});
}
});
}
fruit.lastWasIntersecting = pencil.intersects(fruit);
};
Pencil. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
picnic bg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
heart icon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
mango fruit with eye and mouth animation.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Banana with eye and mouth animation.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
picnic bg in a night sky. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows