/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var BackButton = Container.expand(function () { var self = Container.call(this); var buttonBg = self.attachAsset('backButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2("Back", { size: 40, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.x = 1024; self.y = 2600; self.down = function (x, y, obj) { tween(self, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); showSceneSelection(); }; self.up = function (x, y, obj) { tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100 }); }; return self; }); var Balloon = Container.expand(function (x, y) { var self = Container.call(this); var balloonGraphic = self.attachAsset('balloon', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; self.originalScale = 0.5; self.scaleX = self.originalScale; self.scaleY = self.originalScale; self.pump = function () { var targetScale = self.originalScale + Math.random() * 0.8; tween(self, { scaleX: targetScale, scaleY: targetScale }, { duration: 300, easing: tween.bounceOut }); }; return self; }); var Bubble = Container.expand(function (x, y) { var self = Container.call(this); var bubbleGraphic = self.attachAsset('bubble', { anchorX: 0.5, anchorY: 0.5 }); bubbleGraphic.alpha = 0.7; self.x = x; self.y = y; self.speedY = -2 - Math.random() * 3; self.speedX = (Math.random() - 0.5) * 2; self.update = function () { self.y += self.speedY; self.x += self.speedX; if (self.y < -100) { self.y = 2832; self.x = Math.random() * 2048; } }; return self; }); var Particle = Container.expand(function (x, y) { var self = Container.call(this); var particleGraphic = self.attachAsset('particle', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; self.speedX = (Math.random() - 0.5) * 10; self.speedY = (Math.random() - 0.5) * 10; self.life = 60; self.update = function () { self.x += self.speedX; self.y += self.speedY; self.life--; if (self.life <= 0) { self.destroy(); for (var i = particles.length - 1; i >= 0; i--) { if (particles[i] === self) { particles.splice(i, 1); break; } } } }; return self; }); var Rocket = Container.expand(function (x, y) { var self = Container.call(this); var rocketGraphic = self.attachAsset('rocket', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; self.launched = false; self.launch = function () { if (!self.launched) { self.launched = true; tween(self, { y: -200, rotation: Math.PI * 0.1 }, { duration: 2000, easing: tween.easeOut }); } }; return self; }); var SceneCard = Container.expand(function (sceneNumber, title, x, y) { var self = Container.call(this); var cardBg = self.attachAsset('sceneCard', { anchorX: 0.5, anchorY: 0.5 }); var titleText = new Text2(title, { size: 60, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 0; titleText.y = -100; self.addChild(titleText); var sceneText = new Text2("Scene " + sceneNumber, { size: 40, fill: 0xFFFFFF }); sceneText.anchor.set(0.5, 0.5); sceneText.x = 0; sceneText.y = 80; self.addChild(sceneText); self.x = x; self.y = y; self.sceneNumber = sceneNumber; self.down = function (x, y, obj) { tween(self, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); currentScene = self.sceneNumber; showScene(self.sceneNumber); }; self.up = function (x, y, obj) { tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100 }); }; return self; }); var SpyGadget = Container.expand(function (x, y) { var self = Container.call(this); var gadgetGraphic = self.attachAsset('spyGadget', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; self.active = false; self.activate = function () { if (!self.active) { self.active = true; tween(self, { scaleX: 1.5, scaleY: 1.5 }, { duration: 200, onFinish: function onFinish() { tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 200 }); } }); } }; return self; }); var WreckingBall = Container.expand(function (x, y) { var self = Container.call(this); var chain = self.attachAsset('wreckingChain', { anchorX: 0.5, anchorY: 0.0 }); chain.y = -150; var ball = self.attachAsset('wreckingBall', { anchorX: 0.5, anchorY: 0.5 }); ball.y = 150; self.x = x; self.y = y; self.swinging = false; self.swing = function () { if (!self.swinging) { self.swinging = true; tween(self, { rotation: Math.PI * 0.3 }, { duration: 800, easing: tween.easeInOut, onFinish: function onFinish() { tween(self, { rotation: -Math.PI * 0.3 }, { duration: 800, easing: tween.easeInOut, onFinish: function onFinish() { tween(self, { rotation: 0 }, { duration: 400, easing: tween.easeOut }); } }); } }); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var currentScene = 0; var sceneCards = []; var balloons = []; var bubbles = []; var rockets = []; var particles = []; var wreckingBalls = []; var spyGadgets = []; var backButton; var numberblock4; var numberblock9; // Scene titles var sceneTitles = ["Balloon Fun", "Bath Time", "Rocket Launch", "Cake Explosion", "Wrecking Ball", "Spy Mission"]; function showSceneSelection() { // Clear all scene objects clearSceneObjects(); // Create scene cards in a 2x3 grid for (var i = 0; i < 6; i++) { var cardX = 512 + i % 2 * 1024; var cardY = 600 + Math.floor(i / 2) * 500; var card = new SceneCard(i + 1, sceneTitles[i], cardX, cardY); sceneCards.push(card); game.addChild(card); } currentScene = 0; } function clearSceneObjects() { // Remove all scene cards for (var i = sceneCards.length - 1; i >= 0; i--) { sceneCards[i].destroy(); } sceneCards = []; // Remove all balloons for (var i = balloons.length - 1; i >= 0; i--) { balloons[i].destroy(); } balloons = []; // Remove all bubbles for (var i = bubbles.length - 1; i >= 0; i--) { bubbles[i].destroy(); } bubbles = []; // Remove all rockets for (var i = rockets.length - 1; i >= 0; i--) { rockets[i].destroy(); } rockets = []; // Remove all particles for (var i = particles.length - 1; i >= 0; i--) { particles[i].destroy(); } particles = []; // Remove all wrecking balls for (var i = wreckingBalls.length - 1; i >= 0; i--) { wreckingBalls[i].destroy(); } wreckingBalls = []; // Remove all spy gadgets for (var i = spyGadgets.length - 1; i >= 0; i--) { spyGadgets[i].destroy(); } spyGadgets = []; // Remove numberblocks if (numberblock4) { numberblock4.destroy(); numberblock4 = null; } if (numberblock9) { numberblock9.destroy(); numberblock9 = null; } // Remove back button if (backButton) { backButton.destroy(); backButton = null; } } function showScene(sceneNumber) { clearSceneObjects(); // Create back button backButton = new BackButton(); game.addChild(backButton); // Create numberblocks numberblock4 = game.addChild(LK.getAsset('numberblock4', { anchorX: 0.5, anchorY: 0.5, x: 300, y: 1366 })); numberblock9 = game.addChild(LK.getAsset('numberblock9', { anchorX: 0.5, anchorY: 0.5, x: 1748, y: 1366 })); switch (sceneNumber) { case 1: setupBalloonScene(); break; case 2: setupBathScene(); break; case 3: setupRocketScene(); break; case 4: setupCakeScene(); break; case 5: setupWreckingScene(); break; case 6: setupSpyScene(); break; } } function setupBalloonScene() { for (var i = 0; i < 8; i++) { var balloonX = 300 + i % 4 * 400; var balloonY = 800 + Math.floor(i / 4) * 300; var balloon = new Balloon(balloonX, balloonY); balloons.push(balloon); game.addChild(balloon); } } function setupBathScene() { for (var i = 0; i < 20; i++) { var bubbleX = Math.random() * 2048; var bubbleY = Math.random() * 2732; var bubble = new Bubble(bubbleX, bubbleY); bubbles.push(bubble); game.addChild(bubble); } } function setupRocketScene() { for (var i = 0; i < 3; i++) { var rocketX = 500 + i * 500; var rocketY = 1800; var rocket = new Rocket(rocketX, rocketY); rockets.push(rocket); game.addChild(rocket); } } function setupCakeScene() { var cake = game.addChild(LK.getAsset('cake', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366 })); } function setupWreckingScene() { var wreckingBall = new WreckingBall(1024, 800); wreckingBalls.push(wreckingBall); game.addChild(wreckingBall); } function setupSpyScene() { for (var i = 0; i < 6; i++) { var gadgetX = 400 + i % 3 * 600; var gadgetY = 1000 + Math.floor(i / 3) * 400; var gadget = new SpyGadget(gadgetX, gadgetY); spyGadgets.push(gadget); game.addChild(gadget); } } function createExplosionParticles(x, y) { for (var i = 0; i < 20; i++) { var particle = new Particle(x, y); particles.push(particle); game.addChild(particle); } } game.down = function (x, y, obj) { if (currentScene === 1) { // Balloon scene - pump balloons for (var i = 0; i < balloons.length; i++) { balloons[i].pump(); } LK.getSound('balloonPump').play(); } else if (currentScene === 2) { // Bath scene - create new bubbles for (var i = 0; i < 5; i++) { var bubble = new Bubble(x + (Math.random() - 0.5) * 200, y); bubbles.push(bubble); game.addChild(bubble); } LK.getSound('bathSplash').play(); } else if (currentScene === 3) { // Rocket scene - launch rockets for (var i = 0; i < rockets.length; i++) { rockets[i].launch(); } LK.getSound('rocketLaunch').play(); } else if (currentScene === 4) { // Cake scene - explode cake createExplosionParticles(1024, 1366); LK.getSound('cakeExplode').play(); } else if (currentScene === 5) { // Wrecking scene - swing ball for (var i = 0; i < wreckingBalls.length; i++) { wreckingBalls[i].swing(); } LK.getSound('wreckingHit').play(); } else if (currentScene === 6) { // Spy scene - activate gadgets for (var i = 0; i < spyGadgets.length; i++) { spyGadgets[i].activate(); } LK.getSound('spyBeep').play(); } }; game.update = function () { // Update bubbles for (var i = bubbles.length - 1; i >= 0; i--) { bubbles[i].update(); } // Update particles for (var i = particles.length - 1; i >= 0; i--) { particles[i].update(); } }; // Initialize the game with scene selection showSceneSelection();
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var BackButton = Container.expand(function () {
var self = Container.call(this);
var buttonBg = self.attachAsset('backButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2("Back", {
size: 40,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.x = 1024;
self.y = 2600;
self.down = function (x, y, obj) {
tween(self, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100
});
showSceneSelection();
};
self.up = function (x, y, obj) {
tween(self, {
scaleX: 1.0,
scaleY: 1.0
}, {
duration: 100
});
};
return self;
});
var Balloon = Container.expand(function (x, y) {
var self = Container.call(this);
var balloonGraphic = self.attachAsset('balloon', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = x;
self.y = y;
self.originalScale = 0.5;
self.scaleX = self.originalScale;
self.scaleY = self.originalScale;
self.pump = function () {
var targetScale = self.originalScale + Math.random() * 0.8;
tween(self, {
scaleX: targetScale,
scaleY: targetScale
}, {
duration: 300,
easing: tween.bounceOut
});
};
return self;
});
var Bubble = Container.expand(function (x, y) {
var self = Container.call(this);
var bubbleGraphic = self.attachAsset('bubble', {
anchorX: 0.5,
anchorY: 0.5
});
bubbleGraphic.alpha = 0.7;
self.x = x;
self.y = y;
self.speedY = -2 - Math.random() * 3;
self.speedX = (Math.random() - 0.5) * 2;
self.update = function () {
self.y += self.speedY;
self.x += self.speedX;
if (self.y < -100) {
self.y = 2832;
self.x = Math.random() * 2048;
}
};
return self;
});
var Particle = Container.expand(function (x, y) {
var self = Container.call(this);
var particleGraphic = self.attachAsset('particle', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = x;
self.y = y;
self.speedX = (Math.random() - 0.5) * 10;
self.speedY = (Math.random() - 0.5) * 10;
self.life = 60;
self.update = function () {
self.x += self.speedX;
self.y += self.speedY;
self.life--;
if (self.life <= 0) {
self.destroy();
for (var i = particles.length - 1; i >= 0; i--) {
if (particles[i] === self) {
particles.splice(i, 1);
break;
}
}
}
};
return self;
});
var Rocket = Container.expand(function (x, y) {
var self = Container.call(this);
var rocketGraphic = self.attachAsset('rocket', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = x;
self.y = y;
self.launched = false;
self.launch = function () {
if (!self.launched) {
self.launched = true;
tween(self, {
y: -200,
rotation: Math.PI * 0.1
}, {
duration: 2000,
easing: tween.easeOut
});
}
};
return self;
});
var SceneCard = Container.expand(function (sceneNumber, title, x, y) {
var self = Container.call(this);
var cardBg = self.attachAsset('sceneCard', {
anchorX: 0.5,
anchorY: 0.5
});
var titleText = new Text2(title, {
size: 60,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 0;
titleText.y = -100;
self.addChild(titleText);
var sceneText = new Text2("Scene " + sceneNumber, {
size: 40,
fill: 0xFFFFFF
});
sceneText.anchor.set(0.5, 0.5);
sceneText.x = 0;
sceneText.y = 80;
self.addChild(sceneText);
self.x = x;
self.y = y;
self.sceneNumber = sceneNumber;
self.down = function (x, y, obj) {
tween(self, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100
});
currentScene = self.sceneNumber;
showScene(self.sceneNumber);
};
self.up = function (x, y, obj) {
tween(self, {
scaleX: 1.0,
scaleY: 1.0
}, {
duration: 100
});
};
return self;
});
var SpyGadget = Container.expand(function (x, y) {
var self = Container.call(this);
var gadgetGraphic = self.attachAsset('spyGadget', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = x;
self.y = y;
self.active = false;
self.activate = function () {
if (!self.active) {
self.active = true;
tween(self, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 200,
onFinish: function onFinish() {
tween(self, {
scaleX: 1.0,
scaleY: 1.0
}, {
duration: 200
});
}
});
}
};
return self;
});
var WreckingBall = Container.expand(function (x, y) {
var self = Container.call(this);
var chain = self.attachAsset('wreckingChain', {
anchorX: 0.5,
anchorY: 0.0
});
chain.y = -150;
var ball = self.attachAsset('wreckingBall', {
anchorX: 0.5,
anchorY: 0.5
});
ball.y = 150;
self.x = x;
self.y = y;
self.swinging = false;
self.swing = function () {
if (!self.swinging) {
self.swinging = true;
tween(self, {
rotation: Math.PI * 0.3
}, {
duration: 800,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
rotation: -Math.PI * 0.3
}, {
duration: 800,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
rotation: 0
}, {
duration: 400,
easing: tween.easeOut
});
}
});
}
});
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
var currentScene = 0;
var sceneCards = [];
var balloons = [];
var bubbles = [];
var rockets = [];
var particles = [];
var wreckingBalls = [];
var spyGadgets = [];
var backButton;
var numberblock4;
var numberblock9;
// Scene titles
var sceneTitles = ["Balloon Fun", "Bath Time", "Rocket Launch", "Cake Explosion", "Wrecking Ball", "Spy Mission"];
function showSceneSelection() {
// Clear all scene objects
clearSceneObjects();
// Create scene cards in a 2x3 grid
for (var i = 0; i < 6; i++) {
var cardX = 512 + i % 2 * 1024;
var cardY = 600 + Math.floor(i / 2) * 500;
var card = new SceneCard(i + 1, sceneTitles[i], cardX, cardY);
sceneCards.push(card);
game.addChild(card);
}
currentScene = 0;
}
function clearSceneObjects() {
// Remove all scene cards
for (var i = sceneCards.length - 1; i >= 0; i--) {
sceneCards[i].destroy();
}
sceneCards = [];
// Remove all balloons
for (var i = balloons.length - 1; i >= 0; i--) {
balloons[i].destroy();
}
balloons = [];
// Remove all bubbles
for (var i = bubbles.length - 1; i >= 0; i--) {
bubbles[i].destroy();
}
bubbles = [];
// Remove all rockets
for (var i = rockets.length - 1; i >= 0; i--) {
rockets[i].destroy();
}
rockets = [];
// Remove all particles
for (var i = particles.length - 1; i >= 0; i--) {
particles[i].destroy();
}
particles = [];
// Remove all wrecking balls
for (var i = wreckingBalls.length - 1; i >= 0; i--) {
wreckingBalls[i].destroy();
}
wreckingBalls = [];
// Remove all spy gadgets
for (var i = spyGadgets.length - 1; i >= 0; i--) {
spyGadgets[i].destroy();
}
spyGadgets = [];
// Remove numberblocks
if (numberblock4) {
numberblock4.destroy();
numberblock4 = null;
}
if (numberblock9) {
numberblock9.destroy();
numberblock9 = null;
}
// Remove back button
if (backButton) {
backButton.destroy();
backButton = null;
}
}
function showScene(sceneNumber) {
clearSceneObjects();
// Create back button
backButton = new BackButton();
game.addChild(backButton);
// Create numberblocks
numberblock4 = game.addChild(LK.getAsset('numberblock4', {
anchorX: 0.5,
anchorY: 0.5,
x: 300,
y: 1366
}));
numberblock9 = game.addChild(LK.getAsset('numberblock9', {
anchorX: 0.5,
anchorY: 0.5,
x: 1748,
y: 1366
}));
switch (sceneNumber) {
case 1:
setupBalloonScene();
break;
case 2:
setupBathScene();
break;
case 3:
setupRocketScene();
break;
case 4:
setupCakeScene();
break;
case 5:
setupWreckingScene();
break;
case 6:
setupSpyScene();
break;
}
}
function setupBalloonScene() {
for (var i = 0; i < 8; i++) {
var balloonX = 300 + i % 4 * 400;
var balloonY = 800 + Math.floor(i / 4) * 300;
var balloon = new Balloon(balloonX, balloonY);
balloons.push(balloon);
game.addChild(balloon);
}
}
function setupBathScene() {
for (var i = 0; i < 20; i++) {
var bubbleX = Math.random() * 2048;
var bubbleY = Math.random() * 2732;
var bubble = new Bubble(bubbleX, bubbleY);
bubbles.push(bubble);
game.addChild(bubble);
}
}
function setupRocketScene() {
for (var i = 0; i < 3; i++) {
var rocketX = 500 + i * 500;
var rocketY = 1800;
var rocket = new Rocket(rocketX, rocketY);
rockets.push(rocket);
game.addChild(rocket);
}
}
function setupCakeScene() {
var cake = game.addChild(LK.getAsset('cake', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366
}));
}
function setupWreckingScene() {
var wreckingBall = new WreckingBall(1024, 800);
wreckingBalls.push(wreckingBall);
game.addChild(wreckingBall);
}
function setupSpyScene() {
for (var i = 0; i < 6; i++) {
var gadgetX = 400 + i % 3 * 600;
var gadgetY = 1000 + Math.floor(i / 3) * 400;
var gadget = new SpyGadget(gadgetX, gadgetY);
spyGadgets.push(gadget);
game.addChild(gadget);
}
}
function createExplosionParticles(x, y) {
for (var i = 0; i < 20; i++) {
var particle = new Particle(x, y);
particles.push(particle);
game.addChild(particle);
}
}
game.down = function (x, y, obj) {
if (currentScene === 1) {
// Balloon scene - pump balloons
for (var i = 0; i < balloons.length; i++) {
balloons[i].pump();
}
LK.getSound('balloonPump').play();
} else if (currentScene === 2) {
// Bath scene - create new bubbles
for (var i = 0; i < 5; i++) {
var bubble = new Bubble(x + (Math.random() - 0.5) * 200, y);
bubbles.push(bubble);
game.addChild(bubble);
}
LK.getSound('bathSplash').play();
} else if (currentScene === 3) {
// Rocket scene - launch rockets
for (var i = 0; i < rockets.length; i++) {
rockets[i].launch();
}
LK.getSound('rocketLaunch').play();
} else if (currentScene === 4) {
// Cake scene - explode cake
createExplosionParticles(1024, 1366);
LK.getSound('cakeExplode').play();
} else if (currentScene === 5) {
// Wrecking scene - swing ball
for (var i = 0; i < wreckingBalls.length; i++) {
wreckingBalls[i].swing();
}
LK.getSound('wreckingHit').play();
} else if (currentScene === 6) {
// Spy scene - activate gadgets
for (var i = 0; i < spyGadgets.length; i++) {
spyGadgets[i].activate();
}
LK.getSound('spyBeep').play();
}
};
game.update = function () {
// Update bubbles
for (var i = bubbles.length - 1; i >= 0; i--) {
bubbles[i].update();
}
// Update particles
for (var i = particles.length - 1; i >= 0; i--) {
particles[i].update();
}
};
// Initialize the game with scene selection
showSceneSelection();