Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff Girls Surprise Toy Basket
Initial prompt
Toca presents 3 (2003). The powerpuff girls have a toy basket. Tap on 6 gifts to open. It will be a toy Violet cat, or toy frog, or toy monkey, or party blower, or maraca, or toy dinosaur inside. Tap on your present to see what it does. Tap on your present and see what happens.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var GiftBox = Container.expand(function (toyType, boxColor) { var self = Container.call(this); self.toyType = toyType; self.isOpened = false; self.toy = null; var boxGraphics = self.attachAsset(boxColor, { anchorX: 0.5, anchorY: 0.5 }); // Ribbon decoration var ribbon = self.attachAsset('sparkle', { anchorX: 0.5, anchorY: 0.5, scaleX: 5, scaleY: 0.5, y: -20 }); self.down = function (x, y, obj) { if (!self.isOpened) { self.openGift(); } }; self.openGift = function () { self.isOpened = true; // Play unwrap sound LK.getSound('unwrap').play(); // Box opening animation tween(boxGraphics, { scaleX: 1.3, scaleY: 1.3, alpha: 0.3 }, { duration: 300 }); tween(ribbon, { alpha: 0 }, { duration: 200 }); // Create and show toy var toyAsset; switch (self.toyType) { case 'violetCat': toyAsset = 'violetCat'; break; case 'frog': toyAsset = 'frog'; break; case 'monkey': toyAsset = 'monkey'; break; case 'partyBlower': toyAsset = 'partyBlower'; break; case 'maraca': toyAsset = 'maraca'; break; case 'dinosaur': toyAsset = 'dinosaur'; break; } self.toy = self.attachAsset(toyAsset, { anchorX: 0.5, anchorY: 0.5, alpha: 0, scaleX: 0.3, scaleY: 0.3 }); // Toy reveal animation tween(self.toy, { alpha: 1, scaleX: 1, scaleY: 1 }, { duration: 500, easing: tween.elasticOut, onFinish: function onFinish() { checkAllBoxesOpened(); } }); // Sparkle effects createSparkles(self.x, self.y); }; return self; }); var Toy = Container.expand(function (toyType, originalX, originalY) { var self = Container.call(this); self.toyType = toyType; self.originalX = originalX; self.originalY = originalY; self.isAnimating = false; var toyAsset; switch (toyType) { case 'violetCat': toyAsset = 'violetCat'; break; case 'frog': toyAsset = 'frog'; break; case 'monkey': toyAsset = 'monkey'; break; case 'partyBlower': toyAsset = 'partyBlower'; break; case 'maraca': toyAsset = 'maraca'; break; case 'dinosaur': toyAsset = 'dinosaur'; break; } var toyGraphics = self.attachAsset(toyAsset, { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { if (!self.isAnimating) { self.playAnimation(); } }; self.playAnimation = function () { self.isAnimating = true; switch (self.toyType) { case 'violetCat': LK.getSound('catPurr').play(); // Purr and wiggle animation tween(toyGraphics, { rotation: 0.2 }, { duration: 200 }); tween(toyGraphics, { rotation: -0.2 }, { duration: 200 }); tween(toyGraphics, { rotation: 0 }, { duration: 200, onFinish: function onFinish() { self.isAnimating = false; } }); break; case 'frog': LK.getSound('frogHop').play(); // Hop animation tween(toyGraphics, { y: -50, scaleY: 1.2 }, { duration: 300, easing: tween.easeOut }); tween(toyGraphics, { y: 0, scaleY: 1 }, { duration: 300, easing: tween.bounceOut, onFinish: function onFinish() { self.isAnimating = false; } }); break; case 'monkey': LK.getSound('monkeyChatter').play(); // Flip animation tween(toyGraphics, { rotation: Math.PI * 2, scaleX: 1.3 }, { duration: 800, easing: tween.easeInOut, onFinish: function onFinish() { toyGraphics.rotation = 0; toyGraphics.scaleX = 1; self.isAnimating = false; } }); break; case 'partyBlower': LK.getSound('partyBlower').play(); // Extend animation tween(toyGraphics, { scaleX: 2, tint: 0xFF69B4 }, { duration: 400 }); tween(toyGraphics, { scaleX: 1, tint: 0xFFFFFF }, { duration: 400, onFinish: function onFinish() { self.isAnimating = false; } }); break; case 'maraca': LK.getSound('maracaShake').play(); // Shake animation var shakeCount = 0; var shakeInterval = LK.setInterval(function () { toyGraphics.x = (Math.random() - 0.5) * 20; shakeCount++; if (shakeCount > 10) { LK.clearInterval(shakeInterval); toyGraphics.x = 0; self.isAnimating = false; } }, 50); break; case 'dinosaur': LK.getSound('dinosaurRoar').play(); // Roar and stomp animation tween(toyGraphics, { scaleX: 1.4, scaleY: 1.4, tint: 0xFF0000 }, { duration: 300 }); tween(toyGraphics, { scaleX: 1, scaleY: 1, tint: 0xFFFFFF }, { duration: 500, onFinish: function onFinish() { // Screen shake effect LK.effects.flashScreen(0x666666, 200); self.isAnimating = false; } }); break; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Sounds // Sparkle effect // Toys // Gift boxes and basket // Game variables var giftBoxes = []; var toys = []; var allBoxesOpened = false; var toyTypes = ['violetCat', 'frog', 'monkey', 'partyBlower', 'maraca', 'dinosaur']; var boxColors = ['giftBox', 'giftBoxBlue', 'giftBoxGreen', 'giftBoxYellow', 'giftBoxPurple', 'giftBoxOrange']; // Shuffle toy types for random assignment function shuffleArray(array) { var shuffled = array.slice(); for (var i = shuffled.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = shuffled[i]; shuffled[i] = shuffled[j]; shuffled[j] = temp; } return shuffled; } var shuffledToys = shuffleArray(toyTypes); // Create basket var basket = game.attachAsset('basket', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 800 }); // Title text var titleText = new Text2('Powerpuff Girls Surprise Toy Basket', { size: 80, fill: 0xFF1493 }); titleText.anchor.set(0.5, 0); titleText.x = 1024; titleText.y = 100; game.addChild(titleText); // Instruction text var instructionText = new Text2('Tap the gift boxes to discover surprise toys!', { size: 50, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0); instructionText.x = 1024; instructionText.y = 200; game.addChild(instructionText); // Create gift boxes in basket formation var boxPositions = [{ x: 724, y: 700 }, { x: 924, y: 650 }, { x: 1124, y: 650 }, { x: 1324, y: 700 }, { x: 824, y: 850 }, { x: 1224, y: 850 }]; for (var i = 0; i < 6; i++) { var giftBox = new GiftBox(shuffledToys[i], boxColors[i]); giftBox.x = boxPositions[i].x; giftBox.y = boxPositions[i].y; giftBoxes.push(giftBox); game.addChild(giftBox); } // Function to create sparkle effects function createSparkles(x, y) { for (var i = 0; i < 8; i++) { var sparkle = game.attachAsset('sparkle', { anchorX: 0.5, anchorY: 0.5, x: x + (Math.random() - 0.5) * 100, y: y + (Math.random() - 0.5) * 100, scaleX: Math.random() * 2 + 0.5, scaleY: Math.random() * 2 + 0.5 }); tween(sparkle, { alpha: 0, scaleX: 0, scaleY: 0 }, { duration: 1000, onFinish: function onFinish() { sparkle.destroy(); } }); } } // Function to check if all boxes are opened function checkAllBoxesOpened() { var openedCount = 0; for (var i = 0; i < giftBoxes.length; i++) { if (giftBoxes[i].isOpened) { openedCount++; } } if (openedCount === 6 && !allBoxesOpened) { allBoxesOpened = true; // Hide instruction text and show play instruction tween(instructionText, { alpha: 0 }, { duration: 500 }); var playText = new Text2('Tap your toys to see them come alive!', { size: 50, fill: 0xFFFF00 }); playText.anchor.set(0.5, 0); playText.x = 1024; playText.y = 200; playText.alpha = 0; game.addChild(playText); tween(playText, { alpha: 1 }, { duration: 500 }); // Move toys to play area LK.setTimeout(function () { moveToysToPlayArea(); }, 1000); } } // Function to move toys to play area function moveToysToPlayArea() { var playPositions = [{ x: 400, y: 1400 }, { x: 700, y: 1300 }, { x: 1000, y: 1300 }, { x: 1300, y: 1400 }, { x: 1600, y: 1300 }, { x: 850, y: 1500 }]; for (var i = 0; i < giftBoxes.length; i++) { if (giftBoxes[i].toy) { var toy = new Toy(giftBoxes[i].toyType, playPositions[i].x, playPositions[i].y); toy.x = giftBoxes[i].x; toy.y = giftBoxes[i].y; toys.push(toy); game.addChild(toy); // Animate to play position tween(toy, { x: playPositions[i].x, y: playPositions[i].y }, { duration: 1000, easing: tween.easeInOut }); } } // Hide basket and gift boxes tween(basket, { alpha: 0.3 }, { duration: 1000 }); for (var j = 0; j < giftBoxes.length; j++) { tween(giftBoxes[j], { alpha: 0.2 }, { duration: 1000 }); } } // Game update loop game.update = function () { // No continuous updates needed for this game };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,451 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var GiftBox = Container.expand(function (toyType, boxColor) {
+ var self = Container.call(this);
+ self.toyType = toyType;
+ self.isOpened = false;
+ self.toy = null;
+ var boxGraphics = self.attachAsset(boxColor, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Ribbon decoration
+ var ribbon = self.attachAsset('sparkle', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 5,
+ scaleY: 0.5,
+ y: -20
+ });
+ self.down = function (x, y, obj) {
+ if (!self.isOpened) {
+ self.openGift();
+ }
+ };
+ self.openGift = function () {
+ self.isOpened = true;
+ // Play unwrap sound
+ LK.getSound('unwrap').play();
+ // Box opening animation
+ tween(boxGraphics, {
+ scaleX: 1.3,
+ scaleY: 1.3,
+ alpha: 0.3
+ }, {
+ duration: 300
+ });
+ tween(ribbon, {
+ alpha: 0
+ }, {
+ duration: 200
+ });
+ // Create and show toy
+ var toyAsset;
+ switch (self.toyType) {
+ case 'violetCat':
+ toyAsset = 'violetCat';
+ break;
+ case 'frog':
+ toyAsset = 'frog';
+ break;
+ case 'monkey':
+ toyAsset = 'monkey';
+ break;
+ case 'partyBlower':
+ toyAsset = 'partyBlower';
+ break;
+ case 'maraca':
+ toyAsset = 'maraca';
+ break;
+ case 'dinosaur':
+ toyAsset = 'dinosaur';
+ break;
+ }
+ self.toy = self.attachAsset(toyAsset, {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0,
+ scaleX: 0.3,
+ scaleY: 0.3
+ });
+ // Toy reveal animation
+ tween(self.toy, {
+ alpha: 1,
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 500,
+ easing: tween.elasticOut,
+ onFinish: function onFinish() {
+ checkAllBoxesOpened();
+ }
+ });
+ // Sparkle effects
+ createSparkles(self.x, self.y);
+ };
+ return self;
+});
+var Toy = Container.expand(function (toyType, originalX, originalY) {
+ var self = Container.call(this);
+ self.toyType = toyType;
+ self.originalX = originalX;
+ self.originalY = originalY;
+ self.isAnimating = false;
+ var toyAsset;
+ switch (toyType) {
+ case 'violetCat':
+ toyAsset = 'violetCat';
+ break;
+ case 'frog':
+ toyAsset = 'frog';
+ break;
+ case 'monkey':
+ toyAsset = 'monkey';
+ break;
+ case 'partyBlower':
+ toyAsset = 'partyBlower';
+ break;
+ case 'maraca':
+ toyAsset = 'maraca';
+ break;
+ case 'dinosaur':
+ toyAsset = 'dinosaur';
+ break;
+ }
+ var toyGraphics = self.attachAsset(toyAsset, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.down = function (x, y, obj) {
+ if (!self.isAnimating) {
+ self.playAnimation();
+ }
+ };
+ self.playAnimation = function () {
+ self.isAnimating = true;
+ switch (self.toyType) {
+ case 'violetCat':
+ LK.getSound('catPurr').play();
+ // Purr and wiggle animation
+ tween(toyGraphics, {
+ rotation: 0.2
+ }, {
+ duration: 200
+ });
+ tween(toyGraphics, {
+ rotation: -0.2
+ }, {
+ duration: 200
+ });
+ tween(toyGraphics, {
+ rotation: 0
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ self.isAnimating = false;
+ }
+ });
+ break;
+ case 'frog':
+ LK.getSound('frogHop').play();
+ // Hop animation
+ tween(toyGraphics, {
+ y: -50,
+ scaleY: 1.2
+ }, {
+ duration: 300,
+ easing: tween.easeOut
+ });
+ tween(toyGraphics, {
+ y: 0,
+ scaleY: 1
+ }, {
+ duration: 300,
+ easing: tween.bounceOut,
+ onFinish: function onFinish() {
+ self.isAnimating = false;
+ }
+ });
+ break;
+ case 'monkey':
+ LK.getSound('monkeyChatter').play();
+ // Flip animation
+ tween(toyGraphics, {
+ rotation: Math.PI * 2,
+ scaleX: 1.3
+ }, {
+ duration: 800,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ toyGraphics.rotation = 0;
+ toyGraphics.scaleX = 1;
+ self.isAnimating = false;
+ }
+ });
+ break;
+ case 'partyBlower':
+ LK.getSound('partyBlower').play();
+ // Extend animation
+ tween(toyGraphics, {
+ scaleX: 2,
+ tint: 0xFF69B4
+ }, {
+ duration: 400
+ });
+ tween(toyGraphics, {
+ scaleX: 1,
+ tint: 0xFFFFFF
+ }, {
+ duration: 400,
+ onFinish: function onFinish() {
+ self.isAnimating = false;
+ }
+ });
+ break;
+ case 'maraca':
+ LK.getSound('maracaShake').play();
+ // Shake animation
+ var shakeCount = 0;
+ var shakeInterval = LK.setInterval(function () {
+ toyGraphics.x = (Math.random() - 0.5) * 20;
+ shakeCount++;
+ if (shakeCount > 10) {
+ LK.clearInterval(shakeInterval);
+ toyGraphics.x = 0;
+ self.isAnimating = false;
+ }
+ }, 50);
+ break;
+ case 'dinosaur':
+ LK.getSound('dinosaurRoar').play();
+ // Roar and stomp animation
+ tween(toyGraphics, {
+ scaleX: 1.4,
+ scaleY: 1.4,
+ tint: 0xFF0000
+ }, {
+ duration: 300
+ });
+ tween(toyGraphics, {
+ scaleX: 1,
+ scaleY: 1,
+ tint: 0xFFFFFF
+ }, {
+ duration: 500,
+ onFinish: function onFinish() {
+ // Screen shake effect
+ LK.effects.flashScreen(0x666666, 200);
+ self.isAnimating = false;
+ }
+ });
+ break;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+// Sounds
+// Sparkle effect
+// Toys
+// Gift boxes and basket
+// Game variables
+var giftBoxes = [];
+var toys = [];
+var allBoxesOpened = false;
+var toyTypes = ['violetCat', 'frog', 'monkey', 'partyBlower', 'maraca', 'dinosaur'];
+var boxColors = ['giftBox', 'giftBoxBlue', 'giftBoxGreen', 'giftBoxYellow', 'giftBoxPurple', 'giftBoxOrange'];
+// Shuffle toy types for random assignment
+function shuffleArray(array) {
+ var shuffled = array.slice();
+ for (var i = shuffled.length - 1; i > 0; i--) {
+ var j = Math.floor(Math.random() * (i + 1));
+ var temp = shuffled[i];
+ shuffled[i] = shuffled[j];
+ shuffled[j] = temp;
+ }
+ return shuffled;
+}
+var shuffledToys = shuffleArray(toyTypes);
+// Create basket
+var basket = game.attachAsset('basket', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 800
+});
+// Title text
+var titleText = new Text2('Powerpuff Girls Surprise Toy Basket', {
+ size: 80,
+ fill: 0xFF1493
+});
+titleText.anchor.set(0.5, 0);
+titleText.x = 1024;
+titleText.y = 100;
+game.addChild(titleText);
+// Instruction text
+var instructionText = new Text2('Tap the gift boxes to discover surprise toys!', {
+ size: 50,
+ fill: 0xFFFFFF
+});
+instructionText.anchor.set(0.5, 0);
+instructionText.x = 1024;
+instructionText.y = 200;
+game.addChild(instructionText);
+// Create gift boxes in basket formation
+var boxPositions = [{
+ x: 724,
+ y: 700
+}, {
+ x: 924,
+ y: 650
+}, {
+ x: 1124,
+ y: 650
+}, {
+ x: 1324,
+ y: 700
+}, {
+ x: 824,
+ y: 850
+}, {
+ x: 1224,
+ y: 850
+}];
+for (var i = 0; i < 6; i++) {
+ var giftBox = new GiftBox(shuffledToys[i], boxColors[i]);
+ giftBox.x = boxPositions[i].x;
+ giftBox.y = boxPositions[i].y;
+ giftBoxes.push(giftBox);
+ game.addChild(giftBox);
+}
+// Function to create sparkle effects
+function createSparkles(x, y) {
+ for (var i = 0; i < 8; i++) {
+ var sparkle = game.attachAsset('sparkle', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: x + (Math.random() - 0.5) * 100,
+ y: y + (Math.random() - 0.5) * 100,
+ scaleX: Math.random() * 2 + 0.5,
+ scaleY: Math.random() * 2 + 0.5
+ });
+ tween(sparkle, {
+ alpha: 0,
+ scaleX: 0,
+ scaleY: 0
+ }, {
+ duration: 1000,
+ onFinish: function onFinish() {
+ sparkle.destroy();
+ }
+ });
+ }
+}
+// Function to check if all boxes are opened
+function checkAllBoxesOpened() {
+ var openedCount = 0;
+ for (var i = 0; i < giftBoxes.length; i++) {
+ if (giftBoxes[i].isOpened) {
+ openedCount++;
+ }
+ }
+ if (openedCount === 6 && !allBoxesOpened) {
+ allBoxesOpened = true;
+ // Hide instruction text and show play instruction
+ tween(instructionText, {
+ alpha: 0
+ }, {
+ duration: 500
+ });
+ var playText = new Text2('Tap your toys to see them come alive!', {
+ size: 50,
+ fill: 0xFFFF00
+ });
+ playText.anchor.set(0.5, 0);
+ playText.x = 1024;
+ playText.y = 200;
+ playText.alpha = 0;
+ game.addChild(playText);
+ tween(playText, {
+ alpha: 1
+ }, {
+ duration: 500
+ });
+ // Move toys to play area
+ LK.setTimeout(function () {
+ moveToysToPlayArea();
+ }, 1000);
+ }
+}
+// Function to move toys to play area
+function moveToysToPlayArea() {
+ var playPositions = [{
+ x: 400,
+ y: 1400
+ }, {
+ x: 700,
+ y: 1300
+ }, {
+ x: 1000,
+ y: 1300
+ }, {
+ x: 1300,
+ y: 1400
+ }, {
+ x: 1600,
+ y: 1300
+ }, {
+ x: 850,
+ y: 1500
+ }];
+ for (var i = 0; i < giftBoxes.length; i++) {
+ if (giftBoxes[i].toy) {
+ var toy = new Toy(giftBoxes[i].toyType, playPositions[i].x, playPositions[i].y);
+ toy.x = giftBoxes[i].x;
+ toy.y = giftBoxes[i].y;
+ toys.push(toy);
+ game.addChild(toy);
+ // Animate to play position
+ tween(toy, {
+ x: playPositions[i].x,
+ y: playPositions[i].y
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut
+ });
+ }
+ }
+ // Hide basket and gift boxes
+ tween(basket, {
+ alpha: 0.3
+ }, {
+ duration: 1000
+ });
+ for (var j = 0; j < giftBoxes.length; j++) {
+ tween(giftBoxes[j], {
+ alpha: 0.2
+ }, {
+ duration: 1000
+ });
+ }
+}
+// Game update loop
+game.update = function () {
+ // No continuous updates needed for this game
+};
\ No newline at end of file