Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff Girls Musical Band
Initial prompt
The powerpuff girls: tap on blossom, or bubbles, or buttercup, or bliss to make blossom blow the trumpet, or make bubbles play the drum 🥁, or make buttercup play the accordion 🪗, or make bliss blow the party blower. (No levels).
/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
var PowerpuffGirl = Container.expand(function (girlType, instrumentType, soundId) {
	var self = Container.call(this);
	// Store girl properties
	self.girlType = girlType;
	self.instrumentType = instrumentType;
	self.soundId = soundId;
	self.isPlaying = false;
	// Create girl body
	var girlBody = self.attachAsset(girlType, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Create instrument
	var instrument = self.attachAsset(instrumentType, {
		anchorX: 0.5,
		anchorY: 0.5,
		x: 0,
		y: -80
	});
	// Initially hide instrument
	instrument.visible = false;
	// Store references
	self.girlBody = girlBody;
	self.instrument = instrument;
	// Method to play animation and sound
	self.playMusic = function () {
		if (self.isPlaying) return;
		self.isPlaying = true;
		// Show instrument
		self.instrument.visible = true;
		// Play sound
		LK.getSound(self.soundId).play();
		// Animate girl
		tween(self.girlBody, {
			scaleX: 1.2,
			scaleY: 1.2
		}, {
			duration: 200,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tween(self.girlBody, {
					scaleX: 1.0,
					scaleY: 1.0
				}, {
					duration: 200,
					easing: tween.easeIn
				});
			}
		});
		// Animate instrument based on type
		if (self.instrumentType === 'trumpet') {
			tween(self.instrument, {
				rotation: 0.2
			}, {
				duration: 300,
				easing: tween.easeInOut,
				onFinish: function onFinish() {
					tween(self.instrument, {
						rotation: 0
					}, {
						duration: 300,
						easing: tween.easeInOut
					});
				}
			});
		} else if (self.instrumentType === 'drums') {
			tween(self.instrument, {
				scaleX: 1.3,
				scaleY: 1.3
			}, {
				duration: 150,
				easing: tween.easeOut,
				onFinish: function onFinish() {
					tween(self.instrument, {
						scaleX: 1.0,
						scaleY: 1.0
					}, {
						duration: 150,
						easing: tween.easeIn
					});
				}
			});
		} else if (self.instrumentType === 'accordion') {
			tween(self.instrument, {
				scaleX: 0.8,
				scaleY: 1.2
			}, {
				duration: 250,
				easing: tween.easeInOut,
				onFinish: function onFinish() {
					tween(self.instrument, {
						scaleX: 1.0,
						scaleY: 1.0
					}, {
						duration: 250,
						easing: tween.easeInOut
					});
				}
			});
		} else if (self.instrumentType === 'partyblower') {
			tween(self.instrument, {
				scaleX: 1.5,
				rotation: 0.1
			}, {
				duration: 400,
				easing: tween.easeOut,
				onFinish: function onFinish() {
					tween(self.instrument, {
						scaleX: 1.0,
						rotation: 0
					}, {
						duration: 200,
						easing: tween.easeIn
					});
				}
			});
		}
		// Hide instrument after animation
		LK.setTimeout(function () {
			self.instrument.visible = false;
			self.isPlaying = false;
		}, 800);
	};
	// Touch handler
	self.down = function (x, y, obj) {
		self.playMusic();
	};
	// Idle animation
	self.startIdleAnimation = function () {
		var _idleAnimation = function idleAnimation() {
			if (!self.isPlaying) {
				tween(self.girlBody, {
					y: self.girlBody.y - 10
				}, {
					duration: 1000,
					easing: tween.easeInOut,
					onFinish: function onFinish() {
						tween(self.girlBody, {
							y: self.girlBody.y + 10
						}, {
							duration: 1000,
							easing: tween.easeInOut,
							onFinish: _idleAnimation
						});
					}
				});
			} else {
				LK.setTimeout(_idleAnimation, 100);
			}
		};
		_idleAnimation();
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB
});
/**** 
* Game Code
****/ 
game.setBackgroundColor(0xFFB6C1);
// Create title text
var titleText = new Text2('Powerpuff Girls Musical Band', {
	size: 120,
	fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
titleText.y = 50;
// Create instruction text
var instructionText = new Text2('Tap the Girls to Make Music!', {
	size: 80,
	fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(instructionText);
instructionText.y = -50;
// Create Powerpuff Girls
var blossom = new PowerpuffGirl('blossom', 'trumpet', 'trumpetSound');
var bubbles = new PowerpuffGirl('bubbles', 'drums', 'drumSound');
var buttercup = new PowerpuffGirl('buttercup', 'accordion', 'accordionSound');
var bliss = new PowerpuffGirl('bliss', 'partyblower', 'partyblowerSound');
// Position girls in a 2x2 grid
var centerX = 2048 / 2;
var centerY = 2732 / 2;
var spacing = 450;
// Top row
blossom.x = centerX - spacing / 2;
blossom.y = centerY - spacing / 2;
bubbles.x = centerX + spacing / 2;
bubbles.y = centerY - spacing / 2;
// Bottom row
buttercup.x = centerX - spacing / 2;
buttercup.y = centerY + spacing / 2;
bliss.x = centerX + spacing / 2;
bliss.y = centerY + spacing / 2;
// Add girls to game
game.addChild(blossom);
game.addChild(bubbles);
game.addChild(buttercup);
game.addChild(bliss);
// Start idle animations
blossom.startIdleAnimation();
LK.setTimeout(function () {
	bubbles.startIdleAnimation();
}, 500);
LK.setTimeout(function () {
	buttercup.startIdleAnimation();
}, 1000);
LK.setTimeout(function () {
	bliss.startIdleAnimation();
}, 1500);
// Game update loop
game.update = function () {
	// No specific updates needed for this musical game
	// All interactions are handled by touch events on individual girls
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,230 @@
-/****
+/**** 
+* Plugins
+****/ 
+var tween = LK.import("@upit/tween.v1");
+
+/**** 
+* Classes
+****/ 
+var PowerpuffGirl = Container.expand(function (girlType, instrumentType, soundId) {
+	var self = Container.call(this);
+	// Store girl properties
+	self.girlType = girlType;
+	self.instrumentType = instrumentType;
+	self.soundId = soundId;
+	self.isPlaying = false;
+	// Create girl body
+	var girlBody = self.attachAsset(girlType, {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	// Create instrument
+	var instrument = self.attachAsset(instrumentType, {
+		anchorX: 0.5,
+		anchorY: 0.5,
+		x: 0,
+		y: -80
+	});
+	// Initially hide instrument
+	instrument.visible = false;
+	// Store references
+	self.girlBody = girlBody;
+	self.instrument = instrument;
+	// Method to play animation and sound
+	self.playMusic = function () {
+		if (self.isPlaying) return;
+		self.isPlaying = true;
+		// Show instrument
+		self.instrument.visible = true;
+		// Play sound
+		LK.getSound(self.soundId).play();
+		// Animate girl
+		tween(self.girlBody, {
+			scaleX: 1.2,
+			scaleY: 1.2
+		}, {
+			duration: 200,
+			easing: tween.easeOut,
+			onFinish: function onFinish() {
+				tween(self.girlBody, {
+					scaleX: 1.0,
+					scaleY: 1.0
+				}, {
+					duration: 200,
+					easing: tween.easeIn
+				});
+			}
+		});
+		// Animate instrument based on type
+		if (self.instrumentType === 'trumpet') {
+			tween(self.instrument, {
+				rotation: 0.2
+			}, {
+				duration: 300,
+				easing: tween.easeInOut,
+				onFinish: function onFinish() {
+					tween(self.instrument, {
+						rotation: 0
+					}, {
+						duration: 300,
+						easing: tween.easeInOut
+					});
+				}
+			});
+		} else if (self.instrumentType === 'drums') {
+			tween(self.instrument, {
+				scaleX: 1.3,
+				scaleY: 1.3
+			}, {
+				duration: 150,
+				easing: tween.easeOut,
+				onFinish: function onFinish() {
+					tween(self.instrument, {
+						scaleX: 1.0,
+						scaleY: 1.0
+					}, {
+						duration: 150,
+						easing: tween.easeIn
+					});
+				}
+			});
+		} else if (self.instrumentType === 'accordion') {
+			tween(self.instrument, {
+				scaleX: 0.8,
+				scaleY: 1.2
+			}, {
+				duration: 250,
+				easing: tween.easeInOut,
+				onFinish: function onFinish() {
+					tween(self.instrument, {
+						scaleX: 1.0,
+						scaleY: 1.0
+					}, {
+						duration: 250,
+						easing: tween.easeInOut
+					});
+				}
+			});
+		} else if (self.instrumentType === 'partyblower') {
+			tween(self.instrument, {
+				scaleX: 1.5,
+				rotation: 0.1
+			}, {
+				duration: 400,
+				easing: tween.easeOut,
+				onFinish: function onFinish() {
+					tween(self.instrument, {
+						scaleX: 1.0,
+						rotation: 0
+					}, {
+						duration: 200,
+						easing: tween.easeIn
+					});
+				}
+			});
+		}
+		// Hide instrument after animation
+		LK.setTimeout(function () {
+			self.instrument.visible = false;
+			self.isPlaying = false;
+		}, 800);
+	};
+	// Touch handler
+	self.down = function (x, y, obj) {
+		self.playMusic();
+	};
+	// Idle animation
+	self.startIdleAnimation = function () {
+		var _idleAnimation = function idleAnimation() {
+			if (!self.isPlaying) {
+				tween(self.girlBody, {
+					y: self.girlBody.y - 10
+				}, {
+					duration: 1000,
+					easing: tween.easeInOut,
+					onFinish: function onFinish() {
+						tween(self.girlBody, {
+							y: self.girlBody.y + 10
+						}, {
+							duration: 1000,
+							easing: tween.easeInOut,
+							onFinish: _idleAnimation
+						});
+					}
+				});
+			} else {
+				LK.setTimeout(_idleAnimation, 100);
+			}
+		};
+		_idleAnimation();
+	};
+	return self;
+});
+
+/**** 
 * Initialize Game
-****/
+****/ 
 var game = new LK.Game({
-	backgroundColor: 0x000000
-});
\ No newline at end of file
+	backgroundColor: 0x87CEEB
+});
+
+/**** 
+* Game Code
+****/ 
+game.setBackgroundColor(0xFFB6C1);
+// Create title text
+var titleText = new Text2('Powerpuff Girls Musical Band', {
+	size: 120,
+	fill: 0xFFFFFF
+});
+titleText.anchor.set(0.5, 0);
+LK.gui.top.addChild(titleText);
+titleText.y = 50;
+// Create instruction text
+var instructionText = new Text2('Tap the Girls to Make Music!', {
+	size: 80,
+	fill: 0xFFFFFF
+});
+instructionText.anchor.set(0.5, 1);
+LK.gui.bottom.addChild(instructionText);
+instructionText.y = -50;
+// Create Powerpuff Girls
+var blossom = new PowerpuffGirl('blossom', 'trumpet', 'trumpetSound');
+var bubbles = new PowerpuffGirl('bubbles', 'drums', 'drumSound');
+var buttercup = new PowerpuffGirl('buttercup', 'accordion', 'accordionSound');
+var bliss = new PowerpuffGirl('bliss', 'partyblower', 'partyblowerSound');
+// Position girls in a 2x2 grid
+var centerX = 2048 / 2;
+var centerY = 2732 / 2;
+var spacing = 450;
+// Top row
+blossom.x = centerX - spacing / 2;
+blossom.y = centerY - spacing / 2;
+bubbles.x = centerX + spacing / 2;
+bubbles.y = centerY - spacing / 2;
+// Bottom row
+buttercup.x = centerX - spacing / 2;
+buttercup.y = centerY + spacing / 2;
+bliss.x = centerX + spacing / 2;
+bliss.y = centerY + spacing / 2;
+// Add girls to game
+game.addChild(blossom);
+game.addChild(bubbles);
+game.addChild(buttercup);
+game.addChild(bliss);
+// Start idle animations
+blossom.startIdleAnimation();
+LK.setTimeout(function () {
+	bubbles.startIdleAnimation();
+}, 500);
+LK.setTimeout(function () {
+	buttercup.startIdleAnimation();
+}, 1000);
+LK.setTimeout(function () {
+	bliss.startIdleAnimation();
+}, 1500);
+// Game update loop
+game.update = function () {
+	// No specific updates needed for this musical game
+	// All interactions are handled by touch events on individual girls
+};
\ No newline at end of file