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();
		}
	}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,421 @@
-/****
+/**** 
+* 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: 0x000000
-});
\ No newline at end of file
+	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();
+		}
+	}
+};
\ No newline at end of file