Code edit (1 edits merged)
Please save this source code
User prompt
Buttercup's Elephant Care Adventure
Initial prompt
Toca take care of buttercup’s elephant (2014). Use your finger to pull elephant’s trunk to go down onto the brown ground, use your finger to drag the sponge over the mud, use your finger to drag the hair dryer over the water, now the powerpuff girls have to ride on a elephant! Use your finger to drag and drop the powerpuff girls onto three elephant seats, tap on the elephant to make it fly to the sky.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var MudSpot = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('mudspot', { anchorX: 0.5, anchorY: 0.5 }); self.cleaned = false; return self; }); var PowerpuffGirl = Container.expand(function (type) { var self = Container.call(this); var graphics = self.attachAsset(type, { anchorX: 0.5, anchorY: 1.0 }); self.type = type; self.seated = false; self.originalX = 0; self.originalY = 0; return self; }); var WaterSpot = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('waterspot', { anchorX: 0.5, anchorY: 0.5 }); self.dried = false; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game state variables var gameStage = 'trunk'; // trunk, wash, dry, seat, fly var draggedItem = null; // Create ground var ground = game.addChild(LK.getAsset('ground', { anchorX: 0, anchorY: 1.0, x: 0, y: 2732 })); // Create elephant var elephant = game.addChild(LK.getAsset('elephant', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1200 })); // Create trunk var trunk = game.addChild(LK.getAsset('trunk', { anchorX: 0.5, anchorY: 0.0, x: 1024, y: 1000 })); // Create mud spots on elephant var mudSpots = []; for (var i = 0; i < 6; i++) { var mudSpot = new MudSpot(); mudSpot.x = elephant.x + (Math.random() - 0.5) * 400; mudSpot.y = elephant.y + (Math.random() - 0.5) * 200; mudSpots.push(mudSpot); game.addChild(mudSpot); } // Create water spots (initially hidden) var waterSpots = []; for (var i = 0; i < 6; i++) { var waterSpot = new WaterSpot(); waterSpot.x = mudSpots[i].x; waterSpot.y = mudSpots[i].y; waterSpot.alpha = 0; waterSpots.push(waterSpot); game.addChild(waterSpot); } // Create sponge var sponge = game.addChild(LK.getAsset('sponge', { anchorX: 0.5, anchorY: 0.5, x: 200, y: 2000 })); // Create hair dryer var hairdryer = game.addChild(LK.getAsset('hairdryer', { anchorX: 0.5, anchorY: 0.5, x: 1800, y: 2000 })); // Create seats on elephant var seats = []; for (var i = 0; i < 3; i++) { var seat = game.addChild(LK.getAsset('seat', { anchorX: 0.5, anchorY: 0.5, x: elephant.x - 120 + i * 120, y: elephant.y - 100 })); seats.push(seat); } // Create Powerpuff Girls var blossom = new PowerpuffGirl('blossom'); blossom.x = 300; blossom.y = 2500; blossom.originalX = blossom.x; blossom.originalY = blossom.y; game.addChild(blossom); var bubbles = new PowerpuffGirl('bubbles'); bubbles.x = 1024; bubbles.y = 2500; bubbles.originalX = bubbles.x; bubbles.originalY = bubbles.y; game.addChild(bubbles); var buttercup = new PowerpuffGirl('buttercup'); buttercup.x = 1700; buttercup.y = 2500; buttercup.originalX = buttercup.x; buttercup.originalY = buttercup.y; game.addChild(buttercup); var girls = [blossom, bubbles, buttercup]; // Create instruction text var instructionText = new Text2('Pull the trunk down to the ground!', { size: 60, fill: 0x000000 }); instructionText.anchor.set(0.5, 0); LK.gui.top.addChild(instructionText); // Game functions function updateInstructions() { switch (gameStage) { case 'trunk': instructionText.setText('Pull the trunk down to the ground!'); break; case 'wash': instructionText.setText('Use the sponge to clean the mud!'); break; case 'dry': instructionText.setText('Use the hair dryer to dry the elephant!'); break; case 'seat': instructionText.setText('Place the Powerpuff Girls on the seats!'); break; case 'fly': instructionText.setText('Tap the elephant to make it fly!'); break; case 'complete': instructionText.setText('Adventure complete!'); break; } } function checkTrunkPulled() { if (trunk.y >= 2400) { // Trunk reaches ground level gameStage = 'wash'; updateInstructions(); return true; } return false; } function checkMudCleaned() { var allCleaned = true; for (var i = 0; i < mudSpots.length; i++) { if (!mudSpots[i].cleaned) { allCleaned = false; break; } } if (allCleaned && gameStage === 'wash') { gameStage = 'dry'; updateInstructions(); // Show water spots for (var i = 0; i < waterSpots.length; i++) { waterSpots[i].alpha = 1; } } return allCleaned; } function checkElephantDried() { var allDried = true; for (var i = 0; i < waterSpots.length; i++) { if (!waterSpots[i].dried) { allDried = false; break; } } if (allDried && gameStage === 'dry') { gameStage = 'seat'; updateInstructions(); } return allDried; } function checkAllSeated() { var allSeated = true; for (var i = 0; i < girls.length; i++) { if (!girls[i].seated) { allSeated = false; break; } } if (allSeated && gameStage === 'seat') { gameStage = 'fly'; updateInstructions(); } return allSeated; } function makeElephantFly() { if (gameStage === 'fly') { LK.getSound('fly').play(); // Animate elephant and girls flying up tween(elephant, { y: -200, scaleX: 0.5, scaleY: 0.5 }, { duration: 3000 }); tween(trunk, { y: -400 }, { duration: 3000 }); for (var i = 0; i < girls.length; i++) { if (girls[i].seated) { tween(girls[i], { y: girls[i].y - 1400, scaleX: 0.5, scaleY: 0.5 }, { duration: 3000 }); } } for (var i = 0; i < seats.length; i++) { tween(seats[i], { y: seats[i].y - 1400, scaleX: 0.5, scaleY: 0.5 }, { duration: 3000 }); } gameStage = 'complete'; LK.setTimeout(function () { updateInstructions(); LK.setTimeout(function () { LK.showYouWin(); }, 2000); }, 3000); } } // Event handlers game.down = function (x, y, obj) { if (gameStage === 'trunk' && trunk.intersects({ x: x, y: y, width: 1, height: 1 })) { draggedItem = trunk; } else if (gameStage === 'wash' && sponge.intersects({ x: x, y: y, width: 1, height: 1 })) { draggedItem = sponge; } else if (gameStage === 'dry' && hairdryer.intersects({ x: x, y: y, width: 1, height: 1 })) { draggedItem = hairdryer; } else if (gameStage === 'seat') { for (var i = 0; i < girls.length; i++) { if (!girls[i].seated && girls[i].intersects({ x: x, y: y, width: 1, height: 1 })) { draggedItem = girls[i]; break; } } } else if (gameStage === 'fly' && elephant.intersects({ x: x, y: y, width: 1, height: 1 })) { makeElephantFly(); } }; game.move = function (x, y, obj) { if (draggedItem) { draggedItem.x = x; draggedItem.y = y; if (draggedItem === trunk) { checkTrunkPulled(); } else if (draggedItem === sponge) { // Check collision with mud spots for (var i = 0; i < mudSpots.length; i++) { if (!mudSpots[i].cleaned && sponge.intersects(mudSpots[i])) { mudSpots[i].cleaned = true; mudSpots[i].alpha = 0; LK.getSound('splash').play(); } } checkMudCleaned(); } else if (draggedItem === hairdryer) { // Check collision with water spots for (var i = 0; i < waterSpots.length; i++) { if (!waterSpots[i].dried && hairdryer.intersects(waterSpots[i])) { waterSpots[i].dried = true; waterSpots[i].alpha = 0; LK.getSound('whoosh').play(); } } checkElephantDried(); } } }; game.up = function (x, y, obj) { if (draggedItem && gameStage === 'seat') { // Check if girl is dropped on a seat var droppedOnSeat = false; for (var i = 0; i < seats.length; i++) { if (draggedItem.intersects(seats[i])) { // Check if seat is already occupied var seatOccupied = false; for (var j = 0; j < girls.length; j++) { if (girls[j] !== draggedItem && girls[j].seated && Math.abs(girls[j].x - seats[i].x) < 50 && Math.abs(girls[j].y - seats[i].y) < 50) { seatOccupied = true; break; } } if (!seatOccupied) { draggedItem.x = seats[i].x; draggedItem.y = seats[i].y; draggedItem.seated = true; droppedOnSeat = true; break; } } } // If not dropped on valid seat, return to original position if (!droppedOnSeat) { draggedItem.x = draggedItem.originalX; draggedItem.y = draggedItem.originalY; draggedItem.seated = false; } checkAllSeated(); } draggedItem = null; }; // Initialize instructions updateInstructions();
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var MudSpot = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('mudspot', {
anchorX: 0.5,
anchorY: 0.5
});
self.cleaned = false;
return self;
});
var PowerpuffGirl = Container.expand(function (type) {
var self = Container.call(this);
var graphics = self.attachAsset(type, {
anchorX: 0.5,
anchorY: 1.0
});
self.type = type;
self.seated = false;
self.originalX = 0;
self.originalY = 0;
return self;
});
var WaterSpot = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('waterspot', {
anchorX: 0.5,
anchorY: 0.5
});
self.dried = false;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// Game state variables
var gameStage = 'trunk'; // trunk, wash, dry, seat, fly
var draggedItem = null;
// Create ground
var ground = game.addChild(LK.getAsset('ground', {
anchorX: 0,
anchorY: 1.0,
x: 0,
y: 2732
}));
// Create elephant
var elephant = game.addChild(LK.getAsset('elephant', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1200
}));
// Create trunk
var trunk = game.addChild(LK.getAsset('trunk', {
anchorX: 0.5,
anchorY: 0.0,
x: 1024,
y: 1000
}));
// Create mud spots on elephant
var mudSpots = [];
for (var i = 0; i < 6; i++) {
var mudSpot = new MudSpot();
mudSpot.x = elephant.x + (Math.random() - 0.5) * 400;
mudSpot.y = elephant.y + (Math.random() - 0.5) * 200;
mudSpots.push(mudSpot);
game.addChild(mudSpot);
}
// Create water spots (initially hidden)
var waterSpots = [];
for (var i = 0; i < 6; i++) {
var waterSpot = new WaterSpot();
waterSpot.x = mudSpots[i].x;
waterSpot.y = mudSpots[i].y;
waterSpot.alpha = 0;
waterSpots.push(waterSpot);
game.addChild(waterSpot);
}
// Create sponge
var sponge = game.addChild(LK.getAsset('sponge', {
anchorX: 0.5,
anchorY: 0.5,
x: 200,
y: 2000
}));
// Create hair dryer
var hairdryer = game.addChild(LK.getAsset('hairdryer', {
anchorX: 0.5,
anchorY: 0.5,
x: 1800,
y: 2000
}));
// Create seats on elephant
var seats = [];
for (var i = 0; i < 3; i++) {
var seat = game.addChild(LK.getAsset('seat', {
anchorX: 0.5,
anchorY: 0.5,
x: elephant.x - 120 + i * 120,
y: elephant.y - 100
}));
seats.push(seat);
}
// Create Powerpuff Girls
var blossom = new PowerpuffGirl('blossom');
blossom.x = 300;
blossom.y = 2500;
blossom.originalX = blossom.x;
blossom.originalY = blossom.y;
game.addChild(blossom);
var bubbles = new PowerpuffGirl('bubbles');
bubbles.x = 1024;
bubbles.y = 2500;
bubbles.originalX = bubbles.x;
bubbles.originalY = bubbles.y;
game.addChild(bubbles);
var buttercup = new PowerpuffGirl('buttercup');
buttercup.x = 1700;
buttercup.y = 2500;
buttercup.originalX = buttercup.x;
buttercup.originalY = buttercup.y;
game.addChild(buttercup);
var girls = [blossom, bubbles, buttercup];
// Create instruction text
var instructionText = new Text2('Pull the trunk down to the ground!', {
size: 60,
fill: 0x000000
});
instructionText.anchor.set(0.5, 0);
LK.gui.top.addChild(instructionText);
// Game functions
function updateInstructions() {
switch (gameStage) {
case 'trunk':
instructionText.setText('Pull the trunk down to the ground!');
break;
case 'wash':
instructionText.setText('Use the sponge to clean the mud!');
break;
case 'dry':
instructionText.setText('Use the hair dryer to dry the elephant!');
break;
case 'seat':
instructionText.setText('Place the Powerpuff Girls on the seats!');
break;
case 'fly':
instructionText.setText('Tap the elephant to make it fly!');
break;
case 'complete':
instructionText.setText('Adventure complete!');
break;
}
}
function checkTrunkPulled() {
if (trunk.y >= 2400) {
// Trunk reaches ground level
gameStage = 'wash';
updateInstructions();
return true;
}
return false;
}
function checkMudCleaned() {
var allCleaned = true;
for (var i = 0; i < mudSpots.length; i++) {
if (!mudSpots[i].cleaned) {
allCleaned = false;
break;
}
}
if (allCleaned && gameStage === 'wash') {
gameStage = 'dry';
updateInstructions();
// Show water spots
for (var i = 0; i < waterSpots.length; i++) {
waterSpots[i].alpha = 1;
}
}
return allCleaned;
}
function checkElephantDried() {
var allDried = true;
for (var i = 0; i < waterSpots.length; i++) {
if (!waterSpots[i].dried) {
allDried = false;
break;
}
}
if (allDried && gameStage === 'dry') {
gameStage = 'seat';
updateInstructions();
}
return allDried;
}
function checkAllSeated() {
var allSeated = true;
for (var i = 0; i < girls.length; i++) {
if (!girls[i].seated) {
allSeated = false;
break;
}
}
if (allSeated && gameStage === 'seat') {
gameStage = 'fly';
updateInstructions();
}
return allSeated;
}
function makeElephantFly() {
if (gameStage === 'fly') {
LK.getSound('fly').play();
// Animate elephant and girls flying up
tween(elephant, {
y: -200,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 3000
});
tween(trunk, {
y: -400
}, {
duration: 3000
});
for (var i = 0; i < girls.length; i++) {
if (girls[i].seated) {
tween(girls[i], {
y: girls[i].y - 1400,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 3000
});
}
}
for (var i = 0; i < seats.length; i++) {
tween(seats[i], {
y: seats[i].y - 1400,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 3000
});
}
gameStage = 'complete';
LK.setTimeout(function () {
updateInstructions();
LK.setTimeout(function () {
LK.showYouWin();
}, 2000);
}, 3000);
}
}
// Event handlers
game.down = function (x, y, obj) {
if (gameStage === 'trunk' && trunk.intersects({
x: x,
y: y,
width: 1,
height: 1
})) {
draggedItem = trunk;
} else if (gameStage === 'wash' && sponge.intersects({
x: x,
y: y,
width: 1,
height: 1
})) {
draggedItem = sponge;
} else if (gameStage === 'dry' && hairdryer.intersects({
x: x,
y: y,
width: 1,
height: 1
})) {
draggedItem = hairdryer;
} else if (gameStage === 'seat') {
for (var i = 0; i < girls.length; i++) {
if (!girls[i].seated && girls[i].intersects({
x: x,
y: y,
width: 1,
height: 1
})) {
draggedItem = girls[i];
break;
}
}
} else if (gameStage === 'fly' && elephant.intersects({
x: x,
y: y,
width: 1,
height: 1
})) {
makeElephantFly();
}
};
game.move = function (x, y, obj) {
if (draggedItem) {
draggedItem.x = x;
draggedItem.y = y;
if (draggedItem === trunk) {
checkTrunkPulled();
} else if (draggedItem === sponge) {
// Check collision with mud spots
for (var i = 0; i < mudSpots.length; i++) {
if (!mudSpots[i].cleaned && sponge.intersects(mudSpots[i])) {
mudSpots[i].cleaned = true;
mudSpots[i].alpha = 0;
LK.getSound('splash').play();
}
}
checkMudCleaned();
} else if (draggedItem === hairdryer) {
// Check collision with water spots
for (var i = 0; i < waterSpots.length; i++) {
if (!waterSpots[i].dried && hairdryer.intersects(waterSpots[i])) {
waterSpots[i].dried = true;
waterSpots[i].alpha = 0;
LK.getSound('whoosh').play();
}
}
checkElephantDried();
}
}
};
game.up = function (x, y, obj) {
if (draggedItem && gameStage === 'seat') {
// Check if girl is dropped on a seat
var droppedOnSeat = false;
for (var i = 0; i < seats.length; i++) {
if (draggedItem.intersects(seats[i])) {
// Check if seat is already occupied
var seatOccupied = false;
for (var j = 0; j < girls.length; j++) {
if (girls[j] !== draggedItem && girls[j].seated && Math.abs(girls[j].x - seats[i].x) < 50 && Math.abs(girls[j].y - seats[i].y) < 50) {
seatOccupied = true;
break;
}
}
if (!seatOccupied) {
draggedItem.x = seats[i].x;
draggedItem.y = seats[i].y;
draggedItem.seated = true;
droppedOnSeat = true;
break;
}
}
}
// If not dropped on valid seat, return to original position
if (!droppedOnSeat) {
draggedItem.x = draggedItem.originalX;
draggedItem.y = draggedItem.originalY;
draggedItem.seated = false;
}
checkAllSeated();
}
draggedItem = null;
};
// Initialize instructions
updateInstructions();