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();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,375 @@
-/****
+/****
+* 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: 0x000000
-});
\ No newline at end of file
+ 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();
\ No newline at end of file