/**** * Classes ****/ //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Ball class to represent falling balls var Ball = Container.expand(function (color) { var self = Container.call(this); var ballGraphics = self.attachAsset(color + 'Ball', { anchorX: 0.5, anchorY: 0.5 }); self.color = color; self.speed = 5; // Speed of falling balls self.update = function () { self.y += self.speed; }; }); // Bucket class to represent buckets at the bottom var Bucket = Container.expand(function (color, xPosition) { var self = Container.call(this); var bucketGraphics = self.attachAsset(color + 'Bucket', { anchorX: 0.5, anchorY: 0.5 }); self.color = color; self.x = xPosition; self.y = 2600; // Position buckets at the bottom }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize arrays and variables var balls = []; var buckets = []; var score = 0; var scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create buckets buckets.push(game.addChild(new Bucket('red', 512))); buckets.push(game.addChild(new Bucket('blue', 1024))); buckets.push(game.addChild(new Bucket('green', 1536))); // Function to spawn a new ball function spawnBall() { var colors = ['red', 'blue', 'green']; var color = colors[Math.floor(Math.random() * colors.length)]; var newBall = new Ball(color); newBall.x = Math.random() * 2048; newBall.y = 0; balls.push(newBall); game.addChild(newBall); } // Handle game update game.update = function () { for (var i = balls.length - 1; i >= 0; i--) { balls[i].update(); // Check if ball is in a bucket for (var j = 0; j < buckets.length; j++) { if (balls[i].intersects(buckets[j])) { if (balls[i].color === buckets[j].color) { score++; scoreTxt.setText(score); } else { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } balls[i].destroy(); balls.splice(i, 1); break; } } // Remove balls that fall off the screen if (balls[i] && balls[i].y > 2732) { balls[i].destroy(); balls.splice(i, 1); } } // Spawn a new ball every 60 ticks if (LK.ticks % 60 === 0) { spawnBall(); } }; // Handle touch/mouse events to direct balls game.down = function (x, y, obj) { for (var i = 0; i < balls.length; i++) { if (balls[i].containsPoint({ x: x, y: y })) { balls[i].x = x; balls[i].y = y; } } }; game.move = function (x, y, obj) { for (var i = 0; i < balls.length; i++) { if (balls[i].containsPoint({ x: x, y: y })) { balls[i].x = x; balls[i].y = y; } } }; game.up = function (x, y, obj) { // No specific action needed on release };
/****
* Classes
****/
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Ball class to represent falling balls
var Ball = Container.expand(function (color) {
var self = Container.call(this);
var ballGraphics = self.attachAsset(color + 'Ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.color = color;
self.speed = 5; // Speed of falling balls
self.update = function () {
self.y += self.speed;
};
});
// Bucket class to represent buckets at the bottom
var Bucket = Container.expand(function (color, xPosition) {
var self = Container.call(this);
var bucketGraphics = self.attachAsset(color + 'Bucket', {
anchorX: 0.5,
anchorY: 0.5
});
self.color = color;
self.x = xPosition;
self.y = 2600; // Position buckets at the bottom
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Initialize arrays and variables
var balls = [];
var buckets = [];
var score = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create buckets
buckets.push(game.addChild(new Bucket('red', 512)));
buckets.push(game.addChild(new Bucket('blue', 1024)));
buckets.push(game.addChild(new Bucket('green', 1536)));
// Function to spawn a new ball
function spawnBall() {
var colors = ['red', 'blue', 'green'];
var color = colors[Math.floor(Math.random() * colors.length)];
var newBall = new Ball(color);
newBall.x = Math.random() * 2048;
newBall.y = 0;
balls.push(newBall);
game.addChild(newBall);
}
// Handle game update
game.update = function () {
for (var i = balls.length - 1; i >= 0; i--) {
balls[i].update();
// Check if ball is in a bucket
for (var j = 0; j < buckets.length; j++) {
if (balls[i].intersects(buckets[j])) {
if (balls[i].color === buckets[j].color) {
score++;
scoreTxt.setText(score);
} else {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
balls[i].destroy();
balls.splice(i, 1);
break;
}
}
// Remove balls that fall off the screen
if (balls[i] && balls[i].y > 2732) {
balls[i].destroy();
balls.splice(i, 1);
}
}
// Spawn a new ball every 60 ticks
if (LK.ticks % 60 === 0) {
spawnBall();
}
};
// Handle touch/mouse events to direct balls
game.down = function (x, y, obj) {
for (var i = 0; i < balls.length; i++) {
if (balls[i].containsPoint({
x: x,
y: y
})) {
balls[i].x = x;
balls[i].y = y;
}
}
};
game.move = function (x, y, obj) {
for (var i = 0; i < balls.length; i++) {
if (balls[i].containsPoint({
x: x,
y: y
})) {
balls[i].x = x;
balls[i].y = y;
}
}
};
game.up = function (x, y, obj) {
// No specific action needed on release
};
A red ball with the words bonus. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A Green ball written bonus. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Metallic marron clear background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.