Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff Bedtime Adventure
Initial prompt
Toca seeing Santa (2012). Tap to find blossom 🩷 bubbles 💙 and buttercup 💚 to make them say shhh, it’s bedtime for the powerpuff girls tap on them to make them go zzzzz, the sun is out use your finger to drag the 3 coloured gifts onto the matching powerpuff girls, tap on 3 gifts to make them open, it is kite on blossom’s gift, it is a toy car on buttercup’s gift, and it is a doll on bubbles’s gift
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Gift = Container.expand(function (color, giftType, toyType) { var self = Container.call(this); var giftGraphics = self.attachAsset(giftType, { anchorX: 0.5, anchorY: 0.5 }); self.color = color; self.toyType = toyType; self.isOpened = false; self.assignedGirl = null; self.originalX = 0; self.originalY = 0; self.isDragging = false; self.down = function (x, y, obj) { if (!self.assignedGirl) { self.isDragging = true; dragGift = self; } else if (!self.isOpened) { // Open gift self.openGift(); } }; self.openGift = function () { if (self.isOpened || !self.assignedGirl) return; self.isOpened = true; LK.getSound('giftOpen').play(); // Hide gift and show toy tween(giftGraphics, { alpha: 0, scaleX: 0.1, scaleY: 0.1 }, { duration: 300, onFinish: function onFinish() { var toy = self.attachAsset(self.toyType, { anchorX: 0.5, anchorY: 0.5, alpha: 0, scaleX: 0.1, scaleY: 0.1 }); tween(toy, { alpha: 1, scaleX: 1, scaleY: 1 }, { duration: 500 }); } }); self.assignedGirl.giftOpened = true; checkGameComplete(); }; return self; }); var PowerpuffGirl = Container.expand(function (name, color, sleepState) { var self = Container.call(this); var characterGraphics = self.attachAsset(name, { anchorX: 0.5, anchorY: 0.5 }); self.sleepState = sleepState || 'awake'; // 'awake', 'shhh', 'sleeping' self.name = name; self.color = color; self.hasGift = false; self.giftOpened = false; // Text for sleep states var sleepText = new Text2('', { size: 80, fill: 0xFFFFFF }); sleepText.anchor.set(0.5, 0.5); sleepText.y = -250; self.addChild(sleepText); self.sleepText = sleepText; self.updateSleepText = function () { if (self.sleepState === 'shhh') { self.sleepText.setText('shhh...'); } else if (self.sleepState === 'sleeping') { self.sleepText.setText('zzzzz'); } else { self.sleepText.setText(''); } }; self.down = function (x, y, obj) { if (self.sleepState === 'awake') { self.sleepState = 'shhh'; self.updateSleepText(); LK.getSound('shhh').play(); // Dim the character slightly tween(characterGraphics, { alpha: 0.8 }, { duration: 500 }); } else if (self.sleepState === 'shhh') { self.sleepState = 'sleeping'; self.updateSleepText(); LK.getSound('zzz').play(); // Dim the character more tween(characterGraphics, { alpha: 0.6 }, { duration: 500 }); } checkGameComplete(); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue for daytime }); /**** * Game Code ****/ // Sounds // Toys revealed from gifts // Gifts // Powerpuff Girls characters // Game state variables var blossom, bubbles, buttercup; var pinkGift, blueGift, greenGift; var dragGift = null; var gameComplete = false; // Create Powerpuff Girls blossom = game.addChild(new PowerpuffGirl('blossom', 0xFF69B4, 'awake')); blossom.x = 2048 / 4; blossom.y = 2732 / 2 - 200; bubbles = game.addChild(new PowerpuffGirl('bubbles', 0x87CEEB, 'awake')); bubbles.x = 2048 / 2; bubbles.y = 2732 / 2 - 200; buttercup = game.addChild(new PowerpuffGirl('buttercup', 0x90EE90, 'awake')); buttercup.x = 3 * 2048 / 4; buttercup.y = 2732 / 2 - 200; // Create gifts at bottom of screen pinkGift = game.addChild(new Gift(0xFF69B4, 'pinkGift', 'kite')); pinkGift.x = 2048 / 4; pinkGift.y = 2732 - 300; pinkGift.originalX = pinkGift.x; pinkGift.originalY = pinkGift.y; blueGift = game.addChild(new Gift(0x87CEEB, 'blueGift', 'doll')); blueGift.x = 2048 / 2; blueGift.y = 2732 - 300; blueGift.originalX = blueGift.x; blueGift.originalY = blueGift.y; greenGift = game.addChild(new Gift(0x90EE90, 'greenGift', 'toycar')); greenGift.x = 3 * 2048 / 4; greenGift.y = 2732 - 300; greenGift.originalX = greenGift.x; greenGift.originalY = greenGift.y; // Instructions text var instructionText = new Text2('Tap the girls to put them to sleep, then drag gifts to match colors!', { size: 60, fill: 0x000000 }); instructionText.anchor.set(0.5, 0); LK.gui.top.addChild(instructionText); instructionText.y = 100; function checkGameComplete() { // Check if all girls are sleeping and all gifts are opened var allSleeping = blossom.sleepState === 'sleeping' && bubbles.sleepState === 'sleeping' && buttercup.sleepState === 'sleeping'; var allGiftsOpened = blossom.giftOpened && bubbles.giftOpened && buttercup.giftOpened; if (allSleeping && allGiftsOpened && !gameComplete) { gameComplete = true; // Transition to night time tween(game, { backgroundColor: 0x191970 }, { duration: 2000 }); instructionText.setText('Sweet dreams! Bedtime complete!'); // Show completion after a delay LK.setTimeout(function () { LK.showYouWin(); }, 3000); } } function checkGiftPlacement(gift) { var targetGirl = null; // Check which girl the gift is closest to if (gift.intersects(blossom)) { targetGirl = blossom; } else if (gift.intersects(bubbles)) { targetGirl = bubbles; } else if (gift.intersects(buttercup)) { targetGirl = buttercup; } if (targetGirl && targetGirl.color === gift.color && !targetGirl.hasGift) { // Correct match! gift.assignedGirl = targetGirl; targetGirl.hasGift = true; // Position gift near the girl tween(gift, { x: targetGirl.x, y: targetGirl.y + 300 }, { duration: 300 }); return true; } return false; } game.move = function (x, y, obj) { if (dragGift) { dragGift.x = x; dragGift.y = y; } }; game.up = function (x, y, obj) { if (dragGift) { var placed = checkGiftPlacement(dragGift); if (!placed) { // Return to original position tween(dragGift, { x: dragGift.originalX, y: dragGift.originalY }, { duration: 500 }); } dragGift.isDragging = false; dragGift = null; } }; game.update = function () { // Game runs smoothly with automatic updates from classes };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,241 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Gift = Container.expand(function (color, giftType, toyType) {
+ var self = Container.call(this);
+ var giftGraphics = self.attachAsset(giftType, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.color = color;
+ self.toyType = toyType;
+ self.isOpened = false;
+ self.assignedGirl = null;
+ self.originalX = 0;
+ self.originalY = 0;
+ self.isDragging = false;
+ self.down = function (x, y, obj) {
+ if (!self.assignedGirl) {
+ self.isDragging = true;
+ dragGift = self;
+ } else if (!self.isOpened) {
+ // Open gift
+ self.openGift();
+ }
+ };
+ self.openGift = function () {
+ if (self.isOpened || !self.assignedGirl) return;
+ self.isOpened = true;
+ LK.getSound('giftOpen').play();
+ // Hide gift and show toy
+ tween(giftGraphics, {
+ alpha: 0,
+ scaleX: 0.1,
+ scaleY: 0.1
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ var toy = self.attachAsset(self.toyType, {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0,
+ scaleX: 0.1,
+ scaleY: 0.1
+ });
+ tween(toy, {
+ alpha: 1,
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 500
+ });
+ }
+ });
+ self.assignedGirl.giftOpened = true;
+ checkGameComplete();
+ };
+ return self;
+});
+var PowerpuffGirl = Container.expand(function (name, color, sleepState) {
+ var self = Container.call(this);
+ var characterGraphics = self.attachAsset(name, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.sleepState = sleepState || 'awake'; // 'awake', 'shhh', 'sleeping'
+ self.name = name;
+ self.color = color;
+ self.hasGift = false;
+ self.giftOpened = false;
+ // Text for sleep states
+ var sleepText = new Text2('', {
+ size: 80,
+ fill: 0xFFFFFF
+ });
+ sleepText.anchor.set(0.5, 0.5);
+ sleepText.y = -250;
+ self.addChild(sleepText);
+ self.sleepText = sleepText;
+ self.updateSleepText = function () {
+ if (self.sleepState === 'shhh') {
+ self.sleepText.setText('shhh...');
+ } else if (self.sleepState === 'sleeping') {
+ self.sleepText.setText('zzzzz');
+ } else {
+ self.sleepText.setText('');
+ }
+ };
+ self.down = function (x, y, obj) {
+ if (self.sleepState === 'awake') {
+ self.sleepState = 'shhh';
+ self.updateSleepText();
+ LK.getSound('shhh').play();
+ // Dim the character slightly
+ tween(characterGraphics, {
+ alpha: 0.8
+ }, {
+ duration: 500
+ });
+ } else if (self.sleepState === 'shhh') {
+ self.sleepState = 'sleeping';
+ self.updateSleepText();
+ LK.getSound('zzz').play();
+ // Dim the character more
+ tween(characterGraphics, {
+ alpha: 0.6
+ }, {
+ duration: 500
+ });
+ }
+ checkGameComplete();
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB // Sky blue for daytime
+});
+
+/****
+* Game Code
+****/
+// Sounds
+// Toys revealed from gifts
+// Gifts
+// Powerpuff Girls characters
+// Game state variables
+var blossom, bubbles, buttercup;
+var pinkGift, blueGift, greenGift;
+var dragGift = null;
+var gameComplete = false;
+// Create Powerpuff Girls
+blossom = game.addChild(new PowerpuffGirl('blossom', 0xFF69B4, 'awake'));
+blossom.x = 2048 / 4;
+blossom.y = 2732 / 2 - 200;
+bubbles = game.addChild(new PowerpuffGirl('bubbles', 0x87CEEB, 'awake'));
+bubbles.x = 2048 / 2;
+bubbles.y = 2732 / 2 - 200;
+buttercup = game.addChild(new PowerpuffGirl('buttercup', 0x90EE90, 'awake'));
+buttercup.x = 3 * 2048 / 4;
+buttercup.y = 2732 / 2 - 200;
+// Create gifts at bottom of screen
+pinkGift = game.addChild(new Gift(0xFF69B4, 'pinkGift', 'kite'));
+pinkGift.x = 2048 / 4;
+pinkGift.y = 2732 - 300;
+pinkGift.originalX = pinkGift.x;
+pinkGift.originalY = pinkGift.y;
+blueGift = game.addChild(new Gift(0x87CEEB, 'blueGift', 'doll'));
+blueGift.x = 2048 / 2;
+blueGift.y = 2732 - 300;
+blueGift.originalX = blueGift.x;
+blueGift.originalY = blueGift.y;
+greenGift = game.addChild(new Gift(0x90EE90, 'greenGift', 'toycar'));
+greenGift.x = 3 * 2048 / 4;
+greenGift.y = 2732 - 300;
+greenGift.originalX = greenGift.x;
+greenGift.originalY = greenGift.y;
+// Instructions text
+var instructionText = new Text2('Tap the girls to put them to sleep, then drag gifts to match colors!', {
+ size: 60,
+ fill: 0x000000
+});
+instructionText.anchor.set(0.5, 0);
+LK.gui.top.addChild(instructionText);
+instructionText.y = 100;
+function checkGameComplete() {
+ // Check if all girls are sleeping and all gifts are opened
+ var allSleeping = blossom.sleepState === 'sleeping' && bubbles.sleepState === 'sleeping' && buttercup.sleepState === 'sleeping';
+ var allGiftsOpened = blossom.giftOpened && bubbles.giftOpened && buttercup.giftOpened;
+ if (allSleeping && allGiftsOpened && !gameComplete) {
+ gameComplete = true;
+ // Transition to night time
+ tween(game, {
+ backgroundColor: 0x191970
+ }, {
+ duration: 2000
+ });
+ instructionText.setText('Sweet dreams! Bedtime complete!');
+ // Show completion after a delay
+ LK.setTimeout(function () {
+ LK.showYouWin();
+ }, 3000);
+ }
+}
+function checkGiftPlacement(gift) {
+ var targetGirl = null;
+ // Check which girl the gift is closest to
+ if (gift.intersects(blossom)) {
+ targetGirl = blossom;
+ } else if (gift.intersects(bubbles)) {
+ targetGirl = bubbles;
+ } else if (gift.intersects(buttercup)) {
+ targetGirl = buttercup;
+ }
+ if (targetGirl && targetGirl.color === gift.color && !targetGirl.hasGift) {
+ // Correct match!
+ gift.assignedGirl = targetGirl;
+ targetGirl.hasGift = true;
+ // Position gift near the girl
+ tween(gift, {
+ x: targetGirl.x,
+ y: targetGirl.y + 300
+ }, {
+ duration: 300
+ });
+ return true;
+ }
+ return false;
+}
+game.move = function (x, y, obj) {
+ if (dragGift) {
+ dragGift.x = x;
+ dragGift.y = y;
+ }
+};
+game.up = function (x, y, obj) {
+ if (dragGift) {
+ var placed = checkGiftPlacement(dragGift);
+ if (!placed) {
+ // Return to original position
+ tween(dragGift, {
+ x: dragGift.originalX,
+ y: dragGift.originalY
+ }, {
+ duration: 500
+ });
+ }
+ dragGift.isDragging = false;
+ dragGift = null;
+ }
+};
+game.update = function () {
+ // Game runs smoothly with automatic updates from classes
+};
\ No newline at end of file