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 };
/****
* 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
};