Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff Girls Morning Routine
Initial prompt
Toca interactive potty (2016). The powerpuff girls are woken up. It’s time to have milk 🥛. Drag and drop 3 glasses of milk 🥛 to the powerpuff girls, now let’s go on you new potty. Drag and drop the powerpuff girls into the potty, they are going to do a wee wee. Till crowd says “ooh” and “clapping”
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var MilkGlass = Container.expand(function (x, y) { var self = Container.call(this); self.isUsed = false; self.startX = x; self.startY = y; self.glass = self.attachAsset('milkGlass', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; self.resetPosition = function () { if (!self.isUsed) { tween(self, { x: self.startX, y: self.startY }, { duration: 500, easing: tween.easeOut }); } }; return self; }); var Potty = Container.expand(function (x, y) { var self = Container.call(this); self.pottyGraphics = self.attachAsset('potty', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; return self; }); var PowerpuffGirl = Container.expand(function (girlType, x, y) { var self = Container.call(this); self.girlType = girlType; self.isAwake = false; self.hasDrunkMilk = false; self.hasUsedPotty = false; self.startX = x; self.startY = y; // Create girl body var bodyAsset = girlType + ''; self.body = self.attachAsset(bodyAsset, { anchorX: 0.5, anchorY: 0.5 }); // Create sleeping eyes initially self.leftEye = self.attachAsset('sleepingEyes', { anchorX: 0.5, anchorY: 0.5 }); self.leftEye.x = -40; self.leftEye.y = -50; self.rightEye = self.attachAsset('sleepingEyes', { anchorX: 0.5, anchorY: 0.5 }); self.rightEye.x = 40; self.rightEye.y = -50; self.x = x; self.y = y; self.wakeUp = function () { if (!self.isAwake) { self.isAwake = true; // Remove sleeping eyes self.removeChild(self.leftEye); self.removeChild(self.rightEye); // Add open eyes self.leftEye = self.attachAsset('openEyes', { anchorX: 0.5, anchorY: 0.5 }); self.leftEye.x = -40; self.leftEye.y = -50; self.leftEye.scaleX = 0.8; self.leftEye.scaleY = 0.8; self.rightEye = self.attachAsset('openEyes', { anchorX: 0.5, anchorY: 0.5 }); self.rightEye.x = 40; self.rightEye.y = -50; self.rightEye.scaleX = 0.8; self.rightEye.scaleY = 0.8; // Wake up animation tween(self, { scaleX: 1.1, scaleY: 1.1 }, { duration: 300, easing: tween.easeOut }); tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 300, easing: tween.easeIn }); } }; self.drinkMilk = function () { if (self.isAwake && !self.hasDrunkMilk) { self.hasDrunkMilk = true; // Happy animation tween(self, { y: self.y - 20 }, { duration: 200, easing: tween.easeOut }); tween(self, { y: self.startY }, { duration: 200, easing: tween.easeIn }); } }; self.usePotty = function () { if (self.hasDrunkMilk && !self.hasUsedPotty) { self.hasUsedPotty = true; // Play success sounds LK.getSound('ooh').play(); LK.setTimeout(function () { LK.getSound('clap').play(); }, 800); // Success animation tween(self, { scaleX: 1.2, scaleY: 1.2 }, { duration: 400, easing: tween.easeOut }); tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 400, easing: tween.easeIn }); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xFFE4E1 }); /**** * Game Code ****/ // Game state var gamePhase = 'wakeup'; // 'wakeup', 'milk', 'potty', 'complete' var draggedObject = null; var milkGlassesUsed = 0; var girlsOnPotty = 0; // Create Powerpuff Girls var blossom = game.addChild(new PowerpuffGirl('blossom', 500, 1000)); var bubbles = game.addChild(new PowerpuffGirl('bubbles', 1024, 1000)); var buttercup = game.addChild(new PowerpuffGirl('buttercup', 1548, 1000)); var girls = [blossom, bubbles, buttercup]; // Create milk glasses var milkGlass1 = game.addChild(new MilkGlass(400, 1800)); var milkGlass2 = game.addChild(new MilkGlass(1024, 1800)); var milkGlass3 = game.addChild(new MilkGlass(1648, 1800)); var milkGlasses = [milkGlass1, milkGlass2, milkGlass3]; // Create potties var potty1 = game.addChild(new Potty(500, 1500)); var potty2 = game.addChild(new Potty(1024, 1500)); var potty3 = game.addChild(new Potty(1548, 1500)); var potties = [potty1, potty2, potty3]; // Title text var titleText = new Text2('Help the Powerpuff Girls with their morning routine!', { size: 80, fill: 0xFF1493 }); titleText.anchor.set(0.5, 0); LK.gui.top.addChild(titleText); // Instructions text var instructionText = new Text2('Drag milk glasses to wake up the girls!', { size: 60, fill: 0x4169E1 }); instructionText.anchor.set(0.5, 0); instructionText.y = 100; LK.gui.top.addChild(instructionText); function updateInstructions() { if (gamePhase === 'milk') { instructionText.setText('Great! Now drag each girl to their potty!'); } else if (gamePhase === 'complete') { instructionText.setText('Well done! All girls completed their morning routine!'); } } function checkMilkPhaseComplete() { var allAwake = true; for (var i = 0; i < girls.length; i++) { if (!girls[i].hasDrunkMilk) { allAwake = false; break; } } if (allAwake && gamePhase === 'wakeup') { gamePhase = 'milk'; updateInstructions(); } } function checkPottyPhaseComplete() { var allDone = true; for (var i = 0; i < girls.length; i++) { if (!girls[i].hasUsedPotty) { allDone = false; break; } } if (allDone && gamePhase === 'milk') { gamePhase = 'complete'; updateInstructions(); } } function handleMove(x, y, obj) { if (draggedObject) { draggedObject.x = x; draggedObject.y = y; } } game.move = handleMove; game.down = function (x, y, obj) { // Check if clicking on milk glass for (var i = 0; i < milkGlasses.length; i++) { var milk = milkGlasses[i]; if (!milk.isUsed && milk.intersects({ x: x, y: y, width: 1, height: 1 })) { draggedObject = milk; return; } } // Check if clicking on girls (for potty phase) if (gamePhase === 'milk') { for (var i = 0; i < girls.length; i++) { var girl = girls[i]; if (girl.hasDrunkMilk && !girl.hasUsedPotty && girl.intersects({ x: x, y: y, width: 1, height: 1 })) { draggedObject = girl; return; } } } }; game.up = function (x, y, obj) { if (draggedObject) { // Handle milk glass drops for (var i = 0; i < milkGlasses.length; i++) { var milk = milkGlasses[i]; if (draggedObject === milk && !milk.isUsed) { // Check if dropped on a girl for (var j = 0; j < girls.length; j++) { var girl = girls[j]; if (!girl.isAwake && milk.intersects(girl)) { girl.wakeUp(); girl.drinkMilk(); milk.isUsed = true; milk.visible = false; milkGlassesUsed++; checkMilkPhaseComplete(); draggedObject = null; return; } } // If not dropped on girl, return to original position milk.resetPosition(); break; } } // Handle girl drops on potty for (var i = 0; i < girls.length; i++) { var girl = girls[i]; if (draggedObject === girl && girl.hasDrunkMilk && !girl.hasUsedPotty) { // Check if dropped on a potty for (var j = 0; j < potties.length; j++) { var potty = potties[j]; if (girl.intersects(potty)) { girl.usePotty(); girl.x = potty.x; girl.y = potty.y - 50; girlsOnPotty++; checkPottyPhaseComplete(); draggedObject = null; return; } } // If not dropped on potty, return to original position tween(girl, { x: girl.startX, y: girl.startY }, { duration: 500, easing: tween.easeOut }); break; } } draggedObject = null; } }; game.update = function () { // Game logic updates happen here if needed };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,331 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var MilkGlass = Container.expand(function (x, y) {
+ var self = Container.call(this);
+ self.isUsed = false;
+ self.startX = x;
+ self.startY = y;
+ self.glass = self.attachAsset('milkGlass', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.x = x;
+ self.y = y;
+ self.resetPosition = function () {
+ if (!self.isUsed) {
+ tween(self, {
+ x: self.startX,
+ y: self.startY
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+ }
+ };
+ return self;
+});
+var Potty = Container.expand(function (x, y) {
+ var self = Container.call(this);
+ self.pottyGraphics = self.attachAsset('potty', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.x = x;
+ self.y = y;
+ return self;
+});
+var PowerpuffGirl = Container.expand(function (girlType, x, y) {
+ var self = Container.call(this);
+ self.girlType = girlType;
+ self.isAwake = false;
+ self.hasDrunkMilk = false;
+ self.hasUsedPotty = false;
+ self.startX = x;
+ self.startY = y;
+ // Create girl body
+ var bodyAsset = girlType + '';
+ self.body = self.attachAsset(bodyAsset, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Create sleeping eyes initially
+ self.leftEye = self.attachAsset('sleepingEyes', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.leftEye.x = -40;
+ self.leftEye.y = -50;
+ self.rightEye = self.attachAsset('sleepingEyes', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.rightEye.x = 40;
+ self.rightEye.y = -50;
+ self.x = x;
+ self.y = y;
+ self.wakeUp = function () {
+ if (!self.isAwake) {
+ self.isAwake = true;
+ // Remove sleeping eyes
+ self.removeChild(self.leftEye);
+ self.removeChild(self.rightEye);
+ // Add open eyes
+ self.leftEye = self.attachAsset('openEyes', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.leftEye.x = -40;
+ self.leftEye.y = -50;
+ self.leftEye.scaleX = 0.8;
+ self.leftEye.scaleY = 0.8;
+ self.rightEye = self.attachAsset('openEyes', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.rightEye.x = 40;
+ self.rightEye.y = -50;
+ self.rightEye.scaleX = 0.8;
+ self.rightEye.scaleY = 0.8;
+ // Wake up animation
+ tween(self, {
+ scaleX: 1.1,
+ scaleY: 1.1
+ }, {
+ duration: 300,
+ easing: tween.easeOut
+ });
+ tween(self, {
+ scaleX: 1.0,
+ scaleY: 1.0
+ }, {
+ duration: 300,
+ easing: tween.easeIn
+ });
+ }
+ };
+ self.drinkMilk = function () {
+ if (self.isAwake && !self.hasDrunkMilk) {
+ self.hasDrunkMilk = true;
+ // Happy animation
+ tween(self, {
+ y: self.y - 20
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ tween(self, {
+ y: self.startY
+ }, {
+ duration: 200,
+ easing: tween.easeIn
+ });
+ }
+ };
+ self.usePotty = function () {
+ if (self.hasDrunkMilk && !self.hasUsedPotty) {
+ self.hasUsedPotty = true;
+ // Play success sounds
+ LK.getSound('ooh').play();
+ LK.setTimeout(function () {
+ LK.getSound('clap').play();
+ }, 800);
+ // Success animation
+ tween(self, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 400,
+ easing: tween.easeOut
+ });
+ tween(self, {
+ scaleX: 1.0,
+ scaleY: 1.0
+ }, {
+ duration: 400,
+ easing: tween.easeIn
+ });
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xFFE4E1
+});
+
+/****
+* Game Code
+****/
+// Game state
+var gamePhase = 'wakeup'; // 'wakeup', 'milk', 'potty', 'complete'
+var draggedObject = null;
+var milkGlassesUsed = 0;
+var girlsOnPotty = 0;
+// Create Powerpuff Girls
+var blossom = game.addChild(new PowerpuffGirl('blossom', 500, 1000));
+var bubbles = game.addChild(new PowerpuffGirl('bubbles', 1024, 1000));
+var buttercup = game.addChild(new PowerpuffGirl('buttercup', 1548, 1000));
+var girls = [blossom, bubbles, buttercup];
+// Create milk glasses
+var milkGlass1 = game.addChild(new MilkGlass(400, 1800));
+var milkGlass2 = game.addChild(new MilkGlass(1024, 1800));
+var milkGlass3 = game.addChild(new MilkGlass(1648, 1800));
+var milkGlasses = [milkGlass1, milkGlass2, milkGlass3];
+// Create potties
+var potty1 = game.addChild(new Potty(500, 1500));
+var potty2 = game.addChild(new Potty(1024, 1500));
+var potty3 = game.addChild(new Potty(1548, 1500));
+var potties = [potty1, potty2, potty3];
+// Title text
+var titleText = new Text2('Help the Powerpuff Girls with their morning routine!', {
+ size: 80,
+ fill: 0xFF1493
+});
+titleText.anchor.set(0.5, 0);
+LK.gui.top.addChild(titleText);
+// Instructions text
+var instructionText = new Text2('Drag milk glasses to wake up the girls!', {
+ size: 60,
+ fill: 0x4169E1
+});
+instructionText.anchor.set(0.5, 0);
+instructionText.y = 100;
+LK.gui.top.addChild(instructionText);
+function updateInstructions() {
+ if (gamePhase === 'milk') {
+ instructionText.setText('Great! Now drag each girl to their potty!');
+ } else if (gamePhase === 'complete') {
+ instructionText.setText('Well done! All girls completed their morning routine!');
+ }
+}
+function checkMilkPhaseComplete() {
+ var allAwake = true;
+ for (var i = 0; i < girls.length; i++) {
+ if (!girls[i].hasDrunkMilk) {
+ allAwake = false;
+ break;
+ }
+ }
+ if (allAwake && gamePhase === 'wakeup') {
+ gamePhase = 'milk';
+ updateInstructions();
+ }
+}
+function checkPottyPhaseComplete() {
+ var allDone = true;
+ for (var i = 0; i < girls.length; i++) {
+ if (!girls[i].hasUsedPotty) {
+ allDone = false;
+ break;
+ }
+ }
+ if (allDone && gamePhase === 'milk') {
+ gamePhase = 'complete';
+ updateInstructions();
+ }
+}
+function handleMove(x, y, obj) {
+ if (draggedObject) {
+ draggedObject.x = x;
+ draggedObject.y = y;
+ }
+}
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ // Check if clicking on milk glass
+ for (var i = 0; i < milkGlasses.length; i++) {
+ var milk = milkGlasses[i];
+ if (!milk.isUsed && milk.intersects({
+ x: x,
+ y: y,
+ width: 1,
+ height: 1
+ })) {
+ draggedObject = milk;
+ return;
+ }
+ }
+ // Check if clicking on girls (for potty phase)
+ if (gamePhase === 'milk') {
+ for (var i = 0; i < girls.length; i++) {
+ var girl = girls[i];
+ if (girl.hasDrunkMilk && !girl.hasUsedPotty && girl.intersects({
+ x: x,
+ y: y,
+ width: 1,
+ height: 1
+ })) {
+ draggedObject = girl;
+ return;
+ }
+ }
+ }
+};
+game.up = function (x, y, obj) {
+ if (draggedObject) {
+ // Handle milk glass drops
+ for (var i = 0; i < milkGlasses.length; i++) {
+ var milk = milkGlasses[i];
+ if (draggedObject === milk && !milk.isUsed) {
+ // Check if dropped on a girl
+ for (var j = 0; j < girls.length; j++) {
+ var girl = girls[j];
+ if (!girl.isAwake && milk.intersects(girl)) {
+ girl.wakeUp();
+ girl.drinkMilk();
+ milk.isUsed = true;
+ milk.visible = false;
+ milkGlassesUsed++;
+ checkMilkPhaseComplete();
+ draggedObject = null;
+ return;
+ }
+ }
+ // If not dropped on girl, return to original position
+ milk.resetPosition();
+ break;
+ }
+ }
+ // Handle girl drops on potty
+ for (var i = 0; i < girls.length; i++) {
+ var girl = girls[i];
+ if (draggedObject === girl && girl.hasDrunkMilk && !girl.hasUsedPotty) {
+ // Check if dropped on a potty
+ for (var j = 0; j < potties.length; j++) {
+ var potty = potties[j];
+ if (girl.intersects(potty)) {
+ girl.usePotty();
+ girl.x = potty.x;
+ girl.y = potty.y - 50;
+ girlsOnPotty++;
+ checkPottyPhaseComplete();
+ draggedObject = null;
+ return;
+ }
+ }
+ // If not dropped on potty, return to original position
+ tween(girl, {
+ x: girl.startX,
+ y: girl.startY
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+ break;
+ }
+ }
+ draggedObject = null;
+ }
+};
+game.update = function () {
+ // Game logic updates happen here if needed
+};
\ No newline at end of file