Code edit (1 edits merged)
Please save this source code
User prompt
Numberblock Adventures: The Big Fun Movie
Initial prompt
Toca big fun showtime (2014). The powerpuff girls are outside having a garden party. Tap on the play button to make the tv come to life. It will be a movie called “Numberblock 4 and Numberblock 9’s adventures”. They be balloon pumping scene at scene 1 farting in the bath scene at scene 2 Numberblock 9 in a rocket scene at scene 3 cake exploding scene at scene 4 wrecking ball scene at scene 5 spies scene at scene 6
/****
* 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();