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