Code edit (1 edits merged)
Please save this source code
User prompt
Puppet Show Theater
Initial prompt
Toca puppet show 2 (2006). The powerpuff girls are inside the puppet show. Tap on the red curtain to make it go up for the beginning, they be Cody fox 🦊 and Lily fish 🐟 puppets scene at scene 1 twilight sparkle puppet scene at scene 2 pj masks puppets scene at scene 3 princess sofia puppet scene at scene 4 blossom bubbles and buttercup puppets scene at scene 5 so much Christmas text with snowfall and glitter sparkles scene at scene 6
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Puppet = Container.expand(function (assetId, startX, startY) {
var self = Container.call(this);
var puppetGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 1.0
});
self.x = startX;
self.y = startY;
self.alpha = 0;
self.scaleX = 0.8;
self.scaleY = 0.8;
self.appear = function () {
tween(self, {
alpha: 1,
scaleX: 1,
scaleY: 1
}, {
duration: 800,
easing: tween.easeOut
});
};
self.bobAnimation = function () {
tween(self, {
y: self.y - 30
}, {
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
y: self.y + 30
}, {
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
if (self.parent) {
self.bobAnimation();
}
}
});
}
});
};
self.disappear = function () {
tween(self, {
alpha: 0,
scaleX: 0.8,
scaleY: 0.8
}, {
duration: 500,
easing: tween.easeIn
});
};
return self;
});
var Snowflake = Container.expand(function () {
var self = Container.call(this);
var snowGraphics = self.attachAsset('snowflake', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = Math.random() * 2048;
self.y = -50;
self.speed = 2 + Math.random() * 3;
self.sway = Math.random() * 2 - 1;
self.update = function () {
self.y += self.speed;
self.x += self.sway;
if (self.y > 2732 + 50) {
self.y = -50;
self.x = Math.random() * 2048;
}
};
return self;
});
var Sparkle = Container.expand(function () {
var self = Container.call(this);
var sparkleGraphics = self.attachAsset('sparkle', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = Math.random() * 2048;
self.y = Math.random() * 2732;
self.alpha = 0;
self.scaleX = 0.5;
self.scaleY = 0.5;
self.sparkle = function () {
tween(self, {
alpha: 1,
scaleX: 2,
scaleY: 2
}, {
duration: 500,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 500,
easing: tween.easeIn
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2F1B14
});
/****
* Game Code
****/
var currentScene = 0;
var maxScenes = 6;
var sceneTimer = 0;
var sceneActive = false;
var curtainRaised = false;
var puppets = [];
var snowflakes = [];
var sparkles = [];
// Create theater stage
var stage = game.addChild(LK.getAsset('stage', {
anchorX: 0.5,
anchorY: 1.0,
x: 1024,
y: 2200
}));
// Create curtain
var curtain = game.addChild(LK.getAsset('curtain', {
anchorX: 0.5,
anchorY: 0.0,
x: 1024,
y: 900
}));
// Create curtain rope
var curtainRope = game.addChild(LK.getAsset('curtainRope', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 880
}));
// Create title text
var titleText = new Text2('Puppet Show Theater', {
size: 120,
fill: 0xFFD700
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 400;
game.addChild(titleText);
// Create tap instruction
var tapText = new Text2('Tap the red curtain to begin!', {
size: 80,
fill: 0xFFFFFF
});
tapText.anchor.set(0.5, 0.5);
tapText.x = 1024;
tapText.y = 600;
game.addChild(tapText);
// Create scene text
var sceneText = new Text2('', {
size: 100,
fill: 0xFFFFFF
});
sceneText.anchor.set(0.5, 0.5);
sceneText.x = 1024;
sceneText.y = 700;
sceneText.alpha = 0;
game.addChild(sceneText);
function raiseCurtain() {
if (!curtainRaised) {
curtainRaised = true;
LK.getSound('curtainUp').play();
tapText.alpha = 0;
tween(curtain, {
y: 600
}, {
duration: 1500,
easing: tween.easeOut,
onFinish: function onFinish() {
startScene();
}
});
tween(curtainRope, {
y: 580
}, {
duration: 1500,
easing: tween.easeOut
});
}
}
function startScene() {
sceneActive = true;
sceneTimer = 0;
// Clear previous puppets
for (var i = 0; i < puppets.length; i++) {
puppets[i].destroy();
}
puppets = [];
// Clear previous effects
for (var i = 0; i < snowflakes.length; i++) {
snowflakes[i].destroy();
}
snowflakes = [];
for (var i = 0; i < sparkles.length; i++) {
sparkles[i].destroy();
}
sparkles = [];
LK.getSound('sceneChange').play();
switch (currentScene) {
case 0:
showScene1();
break;
case 1:
showScene2();
break;
case 2:
showScene3();
break;
case 3:
showScene4();
break;
case 4:
showScene5();
break;
case 5:
showScene6();
break;
}
}
function showScene1() {
sceneText.setText('Cody Fox & Lily Fish');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var codfox = new Puppet('codfox', 800, 1600);
var lilyfish = new Puppet('lilyfish', 1200, 1600);
puppets.push(codfox);
puppets.push(lilyfish);
game.addChild(codfox);
game.addChild(lilyfish);
LK.setTimeout(function () {
codfox.appear();
codfox.bobAnimation();
}, 500);
LK.setTimeout(function () {
lilyfish.appear();
lilyfish.bobAnimation();
}, 1000);
}
function showScene2() {
sceneText.setText('Twilight Sparkle');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var twilight = new Puppet('twilight', 1024, 1600);
puppets.push(twilight);
game.addChild(twilight);
LK.setTimeout(function () {
twilight.appear();
twilight.bobAnimation();
}, 500);
}
function showScene3() {
sceneText.setText('PJ Masks Heroes');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var catboy = new Puppet('catboy', 700, 1600);
var owlette = new Puppet('owlette', 1024, 1600);
var gekko = new Puppet('gekko', 1300, 1600);
puppets.push(catboy);
puppets.push(owlette);
puppets.push(gekko);
game.addChild(catboy);
game.addChild(owlette);
game.addChild(gekko);
LK.setTimeout(function () {
catboy.appear();
catboy.bobAnimation();
}, 300);
LK.setTimeout(function () {
owlette.appear();
owlette.bobAnimation();
}, 600);
LK.setTimeout(function () {
gekko.appear();
gekko.bobAnimation();
}, 900);
}
function showScene4() {
sceneText.setText('Princess Sofia');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var sofia = new Puppet('sofia', 1024, 1600);
puppets.push(sofia);
game.addChild(sofia);
LK.setTimeout(function () {
sofia.appear();
sofia.bobAnimation();
}, 500);
}
function showScene5() {
sceneText.setText('Powerpuff Girls');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var blossom = new Puppet('blossom', 700, 1600);
var bubbles = new Puppet('bubbles', 1024, 1600);
var buttercup = new Puppet('buttercup', 1300, 1600);
puppets.push(blossom);
puppets.push(bubbles);
puppets.push(buttercup);
game.addChild(blossom);
game.addChild(bubbles);
game.addChild(buttercup);
LK.setTimeout(function () {
blossom.appear();
blossom.bobAnimation();
}, 300);
LK.setTimeout(function () {
bubbles.appear();
bubbles.bobAnimation();
}, 600);
LK.setTimeout(function () {
buttercup.appear();
buttercup.bobAnimation();
}, 900);
}
function showScene6() {
sceneText.setText('So Much Christmas');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
LK.getSound('christmas').play();
// Create snowfall
for (var i = 0; i < 30; i++) {
var snowflake = new Snowflake();
snowflake.y = Math.random() * 2732;
snowflakes.push(snowflake);
game.addChild(snowflake);
}
// Create sparkles
for (var i = 0; i < 20; i++) {
var sparkle = new Sparkle();
sparkles.push(sparkle);
game.addChild(sparkle);
LK.setTimeout(function () {
for (var j = 0; j < sparkles.length; j++) {
if (sparkles[j].parent) {
sparkles[j].sparkle();
}
}
}, i * 200);
}
}
function nextScene() {
if (sceneActive) {
sceneActive = false;
// Hide scene text
tween(sceneText, {
alpha: 0
}, {
duration: 500
});
// Hide puppets
for (var i = 0; i < puppets.length; i++) {
puppets[i].disappear();
}
currentScene++;
if (currentScene >= maxScenes) {
currentScene = 0;
}
LK.setTimeout(function () {
startScene();
}, 1000);
}
}
game.down = function (x, y, obj) {
if (!curtainRaised) {
raiseCurtain();
} else {
nextScene();
}
};
game.update = function () {
if (sceneActive) {
sceneTimer++;
// Auto advance scenes after 4 seconds
if (sceneTimer >= 240) {
nextScene();
}
}
}; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Puppet = Container.expand(function (assetId, startX, startY) {
var self = Container.call(this);
var puppetGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 1.0
});
self.x = startX;
self.y = startY;
self.alpha = 0;
self.scaleX = 0.8;
self.scaleY = 0.8;
self.appear = function () {
tween(self, {
alpha: 1,
scaleX: 1,
scaleY: 1
}, {
duration: 800,
easing: tween.easeOut
});
};
self.bobAnimation = function () {
tween(self, {
y: self.y - 30
}, {
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
y: self.y + 30
}, {
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
if (self.parent) {
self.bobAnimation();
}
}
});
}
});
};
self.disappear = function () {
tween(self, {
alpha: 0,
scaleX: 0.8,
scaleY: 0.8
}, {
duration: 500,
easing: tween.easeIn
});
};
return self;
});
var Snowflake = Container.expand(function () {
var self = Container.call(this);
var snowGraphics = self.attachAsset('snowflake', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = Math.random() * 2048;
self.y = -50;
self.speed = 2 + Math.random() * 3;
self.sway = Math.random() * 2 - 1;
self.update = function () {
self.y += self.speed;
self.x += self.sway;
if (self.y > 2732 + 50) {
self.y = -50;
self.x = Math.random() * 2048;
}
};
return self;
});
var Sparkle = Container.expand(function () {
var self = Container.call(this);
var sparkleGraphics = self.attachAsset('sparkle', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = Math.random() * 2048;
self.y = Math.random() * 2732;
self.alpha = 0;
self.scaleX = 0.5;
self.scaleY = 0.5;
self.sparkle = function () {
tween(self, {
alpha: 1,
scaleX: 2,
scaleY: 2
}, {
duration: 500,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 500,
easing: tween.easeIn
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2F1B14
});
/****
* Game Code
****/
var currentScene = 0;
var maxScenes = 6;
var sceneTimer = 0;
var sceneActive = false;
var curtainRaised = false;
var puppets = [];
var snowflakes = [];
var sparkles = [];
// Create theater stage
var stage = game.addChild(LK.getAsset('stage', {
anchorX: 0.5,
anchorY: 1.0,
x: 1024,
y: 2200
}));
// Create curtain
var curtain = game.addChild(LK.getAsset('curtain', {
anchorX: 0.5,
anchorY: 0.0,
x: 1024,
y: 900
}));
// Create curtain rope
var curtainRope = game.addChild(LK.getAsset('curtainRope', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 880
}));
// Create title text
var titleText = new Text2('Puppet Show Theater', {
size: 120,
fill: 0xFFD700
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 400;
game.addChild(titleText);
// Create tap instruction
var tapText = new Text2('Tap the red curtain to begin!', {
size: 80,
fill: 0xFFFFFF
});
tapText.anchor.set(0.5, 0.5);
tapText.x = 1024;
tapText.y = 600;
game.addChild(tapText);
// Create scene text
var sceneText = new Text2('', {
size: 100,
fill: 0xFFFFFF
});
sceneText.anchor.set(0.5, 0.5);
sceneText.x = 1024;
sceneText.y = 700;
sceneText.alpha = 0;
game.addChild(sceneText);
function raiseCurtain() {
if (!curtainRaised) {
curtainRaised = true;
LK.getSound('curtainUp').play();
tapText.alpha = 0;
tween(curtain, {
y: 600
}, {
duration: 1500,
easing: tween.easeOut,
onFinish: function onFinish() {
startScene();
}
});
tween(curtainRope, {
y: 580
}, {
duration: 1500,
easing: tween.easeOut
});
}
}
function startScene() {
sceneActive = true;
sceneTimer = 0;
// Clear previous puppets
for (var i = 0; i < puppets.length; i++) {
puppets[i].destroy();
}
puppets = [];
// Clear previous effects
for (var i = 0; i < snowflakes.length; i++) {
snowflakes[i].destroy();
}
snowflakes = [];
for (var i = 0; i < sparkles.length; i++) {
sparkles[i].destroy();
}
sparkles = [];
LK.getSound('sceneChange').play();
switch (currentScene) {
case 0:
showScene1();
break;
case 1:
showScene2();
break;
case 2:
showScene3();
break;
case 3:
showScene4();
break;
case 4:
showScene5();
break;
case 5:
showScene6();
break;
}
}
function showScene1() {
sceneText.setText('Cody Fox & Lily Fish');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var codfox = new Puppet('codfox', 800, 1600);
var lilyfish = new Puppet('lilyfish', 1200, 1600);
puppets.push(codfox);
puppets.push(lilyfish);
game.addChild(codfox);
game.addChild(lilyfish);
LK.setTimeout(function () {
codfox.appear();
codfox.bobAnimation();
}, 500);
LK.setTimeout(function () {
lilyfish.appear();
lilyfish.bobAnimation();
}, 1000);
}
function showScene2() {
sceneText.setText('Twilight Sparkle');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var twilight = new Puppet('twilight', 1024, 1600);
puppets.push(twilight);
game.addChild(twilight);
LK.setTimeout(function () {
twilight.appear();
twilight.bobAnimation();
}, 500);
}
function showScene3() {
sceneText.setText('PJ Masks Heroes');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var catboy = new Puppet('catboy', 700, 1600);
var owlette = new Puppet('owlette', 1024, 1600);
var gekko = new Puppet('gekko', 1300, 1600);
puppets.push(catboy);
puppets.push(owlette);
puppets.push(gekko);
game.addChild(catboy);
game.addChild(owlette);
game.addChild(gekko);
LK.setTimeout(function () {
catboy.appear();
catboy.bobAnimation();
}, 300);
LK.setTimeout(function () {
owlette.appear();
owlette.bobAnimation();
}, 600);
LK.setTimeout(function () {
gekko.appear();
gekko.bobAnimation();
}, 900);
}
function showScene4() {
sceneText.setText('Princess Sofia');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var sofia = new Puppet('sofia', 1024, 1600);
puppets.push(sofia);
game.addChild(sofia);
LK.setTimeout(function () {
sofia.appear();
sofia.bobAnimation();
}, 500);
}
function showScene5() {
sceneText.setText('Powerpuff Girls');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
var blossom = new Puppet('blossom', 700, 1600);
var bubbles = new Puppet('bubbles', 1024, 1600);
var buttercup = new Puppet('buttercup', 1300, 1600);
puppets.push(blossom);
puppets.push(bubbles);
puppets.push(buttercup);
game.addChild(blossom);
game.addChild(bubbles);
game.addChild(buttercup);
LK.setTimeout(function () {
blossom.appear();
blossom.bobAnimation();
}, 300);
LK.setTimeout(function () {
bubbles.appear();
bubbles.bobAnimation();
}, 600);
LK.setTimeout(function () {
buttercup.appear();
buttercup.bobAnimation();
}, 900);
}
function showScene6() {
sceneText.setText('So Much Christmas');
tween(sceneText, {
alpha: 1
}, {
duration: 500
});
LK.getSound('christmas').play();
// Create snowfall
for (var i = 0; i < 30; i++) {
var snowflake = new Snowflake();
snowflake.y = Math.random() * 2732;
snowflakes.push(snowflake);
game.addChild(snowflake);
}
// Create sparkles
for (var i = 0; i < 20; i++) {
var sparkle = new Sparkle();
sparkles.push(sparkle);
game.addChild(sparkle);
LK.setTimeout(function () {
for (var j = 0; j < sparkles.length; j++) {
if (sparkles[j].parent) {
sparkles[j].sparkle();
}
}
}, i * 200);
}
}
function nextScene() {
if (sceneActive) {
sceneActive = false;
// Hide scene text
tween(sceneText, {
alpha: 0
}, {
duration: 500
});
// Hide puppets
for (var i = 0; i < puppets.length; i++) {
puppets[i].disappear();
}
currentScene++;
if (currentScene >= maxScenes) {
currentScene = 0;
}
LK.setTimeout(function () {
startScene();
}, 1000);
}
}
game.down = function (x, y, obj) {
if (!curtainRaised) {
raiseCurtain();
} else {
nextScene();
}
};
game.update = function () {
if (sceneActive) {
sceneTimer++;
// Auto advance scenes after 4 seconds
if (sceneTimer >= 240) {
nextScene();
}
}
};