Code edit (1 edits merged)
Please save this source code
User prompt
PowerPuff Girls Mystery House Adventure
Initial prompt
Toca mystery house (2018). The powerpuff girls are inside the haunted house 🔦. Use your finger to move the powerpuff girls walk inside the haunted house, tap on the door to go inside the bedroom, tap on the mystry key 🔑 to get it.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Door = Container.expand(function (targetRoom, doorX, doorY) { var self = Container.call(this); var doorGraphics = self.attachAsset('door', { anchorX: 0.5, anchorY: 1.0 }); self.targetRoom = targetRoom; self.isOpen = false; self.down = function (x, y, obj) { if (!self.isOpen) { self.openDoor(); } }; self.openDoor = function () { self.isOpen = true; LK.getSound('doorOpen').play(); tween(doorGraphics, { scaleX: 1.1, scaleY: 1.1 }, { duration: 200, easing: tween.easeOut, onFinish: function onFinish() { tween(doorGraphics, { scaleX: 1.0, scaleY: 1.0 }, { duration: 200, easing: tween.easeIn, onFinish: function onFinish() { game.switchRoom(self.targetRoom); } }); } }); }; return self; }); var HiddenObject = Container.expand(function () { var self = Container.call(this); var objectGraphics = self.attachAsset('hiddenObject', { anchorX: 0.5, anchorY: 0.5 }); self.found = false; objectGraphics.alpha = 0.3; self.down = function (x, y, obj) { if (!self.found) { self.discover(); } }; self.discover = function () { if (self.found) return; self.found = true; objectsFound++; updateScore(); LK.getSound('itemFound').play(); tween(objectGraphics, { alpha: 1, scaleX: 1.3, scaleY: 1.3 }, { duration: 300, easing: tween.easeOut }); }; return self; }); var MysteryKey = Container.expand(function () { var self = Container.call(this); var keyGraphics = self.attachAsset('mysteryKey', { anchorX: 0.5, anchorY: 0.5 }); self.collected = false; self.down = function (x, y, obj) { if (!self.collected) { self.collect(); } }; self.collect = function () { if (self.collected) return; self.collected = true; keysCollected++; updateScore(); LK.getSound('keyCollect').play(); tween(self, { scaleX: 2, scaleY: 2, alpha: 0 }, { duration: 500, easing: tween.easeOut, onFinish: function onFinish() { self.destroy(); } }); }; self.update = function () { if (!self.collected) { keyGraphics.rotation += 0.05; } }; return self; }); var PowerPuffGirl = Container.expand(function (type) { var self = Container.call(this); var girlGraphics = self.attachAsset(type, { anchorX: 0.5, anchorY: 0.5 }); self.type = type; self.isMoving = false; self.moveTo = function (targetX, targetY) { if (self.isMoving) return; self.isMoving = true; var duration = Math.sqrt(Math.pow(targetX - self.x, 2) + Math.pow(targetY - self.y, 2)) * 2; tween(self, { x: targetX, y: targetY }, { duration: duration, easing: tween.easeOut, onFinish: function onFinish() { self.isMoving = false; } }); }; return self; }); var Room = Container.expand(function (roomType) { var self = Container.call(this); var background = self.attachAsset(roomType, { anchorX: 0, anchorY: 0 }); self.roomType = roomType; self.doors = []; self.keys = []; self.hiddenObjects = []; self.addDoor = function (targetRoom, x, y) { var door = new Door(targetRoom, x, y); door.x = x; door.y = y; self.doors.push(door); self.addChild(door); return door; }; self.addKey = function (x, y) { var key = new MysteryKey(); key.x = x; key.y = y; self.keys.push(key); self.addChild(key); return key; }; self.addHiddenObject = function (x, y) { var obj = new HiddenObject(); obj.x = x; obj.y = y; self.hiddenObjects.push(obj); self.addChild(obj); return obj; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Sounds // Interactive elements // Room backgrounds // PowerPuff Girls characters // Game variables var currentRoom = null; var powerPuffGirls = []; var keysCollected = 0; var objectsFound = 0; var totalKeys = 0; var totalObjects = 0; var rooms = {}; var draggedGirl = null; // UI Elements var scoreText = new Text2('Keys: 0/0 | Objects: 0/0', { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); var roomNameText = new Text2('Living Room', { size: 80, fill: 0xFFFF00 }); roomNameText.anchor.set(0.5, 0); roomNameText.y = 100; LK.gui.top.addChild(roomNameText); // Create rooms function createRooms() { // Living Room rooms.livingRoom = new Room('livingRoom'); rooms.livingRoom.addDoor('kitchen', 1800, 1000); rooms.livingRoom.addDoor('bedroom', 1800, 1800); rooms.livingRoom.addKey(300, 800); rooms.livingRoom.addKey(1500, 1200); rooms.livingRoom.addHiddenObject(800, 600); rooms.livingRoom.addHiddenObject(1200, 1600); // Kitchen rooms.kitchen = new Room('kitchen'); rooms.kitchen.addDoor('livingRoom', 200, 1000); rooms.kitchen.addDoor('attic', 1800, 600); rooms.kitchen.addKey(1000, 1200); rooms.kitchen.addKey(600, 2000); rooms.kitchen.addHiddenObject(1600, 800); // Bedroom rooms.bedroom = new Room('bedroom'); rooms.bedroom.addDoor('livingRoom', 200, 1800); rooms.bedroom.addKey(1200, 800); rooms.bedroom.addKey(800, 1800); rooms.bedroom.addHiddenObject(1600, 1200); rooms.bedroom.addHiddenObject(400, 1200); // Attic rooms.attic = new Room('attic'); rooms.attic.addDoor('kitchen', 200, 600); rooms.attic.addKey(1000, 1000); rooms.attic.addKey(1600, 1600); rooms.attic.addHiddenObject(600, 800); // Count total collectibles for (var roomName in rooms) { var room = rooms[roomName]; totalKeys += room.keys.length; totalObjects += room.hiddenObjects.length; } } // Create PowerPuff Girls function createPowerPuffGirls() { var types = ['blossom', 'bubbles', 'buttercup']; var startX = 400; for (var i = 0; i < types.length; i++) { var girl = new PowerPuffGirl(types[i]); girl.x = startX + i * 200; girl.y = 2000; powerPuffGirls.push(girl); } } // Switch room function game.switchRoom = function (roomName) { if (currentRoom) { game.removeChild(currentRoom); } currentRoom = rooms[roomName]; game.addChild(currentRoom); // Add girls to new room for (var i = 0; i < powerPuffGirls.length; i++) { currentRoom.addChild(powerPuffGirls[i]); } // Update room name var displayName = roomName.charAt(0).toUpperCase() + roomName.slice(1); if (displayName === 'Livingroom') displayName = 'Living Room'; roomNameText.setText(displayName); }; // Update score display function updateScore() { scoreText.setText('Keys: ' + keysCollected + '/' + totalKeys + ' | Objects: ' + objectsFound + '/' + totalObjects); // Check win condition if (keysCollected >= totalKeys && objectsFound >= totalObjects) { LK.setTimeout(function () { LK.showYouWin(); }, 1000); } } // Touch controls game.down = function (x, y, obj) { // Check if touching a PowerPuff Girl for (var i = 0; i < powerPuffGirls.length; i++) { var girl = powerPuffGirls[i]; if (girl.parent === currentRoom) { var localPos = girl.toLocal({ x: x, y: y }); if (Math.abs(localPos.x) < 60 && Math.abs(localPos.y) < 60) { draggedGirl = girl; return; } } } }; game.move = function (x, y, obj) { if (draggedGirl) { // Constrain movement within room bounds var constrainedX = Math.max(100, Math.min(1948, x)); var constrainedY = Math.max(100, Math.min(2632, y)); draggedGirl.moveTo(constrainedX, constrainedY); } }; game.up = function (x, y, obj) { draggedGirl = null; }; // Initialize game createRooms(); createPowerPuffGirls(); game.switchRoom('livingRoom'); updateScore(); // Main game loop game.update = function () { // Check for collisions between girls and interactive objects for (var i = 0; i < powerPuffGirls.length; i++) { var girl = powerPuffGirls[i]; if (girl.parent !== currentRoom) continue; // Check key collisions for (var j = 0; j < currentRoom.keys.length; j++) { var key = currentRoom.keys[j]; if (!key.collected && girl.intersects(key)) { key.collect(); break; } } // Check hidden object collisions for (var k = 0; k < currentRoom.hiddenObjects.length; k++) { var obj = currentRoom.hiddenObjects[k]; if (!obj.found && girl.intersects(obj)) { obj.discover(); break; } } } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,344 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+var Door = Container.expand(function (targetRoom, doorX, doorY) {
+ var self = Container.call(this);
+ var doorGraphics = self.attachAsset('door', {
+ anchorX: 0.5,
+ anchorY: 1.0
+ });
+ self.targetRoom = targetRoom;
+ self.isOpen = false;
+ self.down = function (x, y, obj) {
+ if (!self.isOpen) {
+ self.openDoor();
+ }
+ };
+ self.openDoor = function () {
+ self.isOpen = true;
+ LK.getSound('doorOpen').play();
+ tween(doorGraphics, {
+ scaleX: 1.1,
+ scaleY: 1.1
+ }, {
+ duration: 200,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(doorGraphics, {
+ scaleX: 1.0,
+ scaleY: 1.0
+ }, {
+ duration: 200,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ game.switchRoom(self.targetRoom);
+ }
+ });
+ }
+ });
+ };
+ return self;
+});
+var HiddenObject = Container.expand(function () {
+ var self = Container.call(this);
+ var objectGraphics = self.attachAsset('hiddenObject', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.found = false;
+ objectGraphics.alpha = 0.3;
+ self.down = function (x, y, obj) {
+ if (!self.found) {
+ self.discover();
+ }
+ };
+ self.discover = function () {
+ if (self.found) return;
+ self.found = true;
+ objectsFound++;
+ updateScore();
+ LK.getSound('itemFound').play();
+ tween(objectGraphics, {
+ alpha: 1,
+ scaleX: 1.3,
+ scaleY: 1.3
+ }, {
+ duration: 300,
+ easing: tween.easeOut
+ });
+ };
+ return self;
+});
+var MysteryKey = Container.expand(function () {
+ var self = Container.call(this);
+ var keyGraphics = self.attachAsset('mysteryKey', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.collected = false;
+ self.down = function (x, y, obj) {
+ if (!self.collected) {
+ self.collect();
+ }
+ };
+ self.collect = function () {
+ if (self.collected) return;
+ self.collected = true;
+ keysCollected++;
+ updateScore();
+ LK.getSound('keyCollect').play();
+ tween(self, {
+ scaleX: 2,
+ scaleY: 2,
+ alpha: 0
+ }, {
+ duration: 500,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ };
+ self.update = function () {
+ if (!self.collected) {
+ keyGraphics.rotation += 0.05;
+ }
+ };
+ return self;
+});
+var PowerPuffGirl = Container.expand(function (type) {
+ var self = Container.call(this);
+ var girlGraphics = self.attachAsset(type, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.type = type;
+ self.isMoving = false;
+ self.moveTo = function (targetX, targetY) {
+ if (self.isMoving) return;
+ self.isMoving = true;
+ var duration = Math.sqrt(Math.pow(targetX - self.x, 2) + Math.pow(targetY - self.y, 2)) * 2;
+ tween(self, {
+ x: targetX,
+ y: targetY
+ }, {
+ duration: duration,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ self.isMoving = false;
+ }
+ });
+ };
+ return self;
+});
+var Room = Container.expand(function (roomType) {
+ var self = Container.call(this);
+ var background = self.attachAsset(roomType, {
+ anchorX: 0,
+ anchorY: 0
+ });
+ self.roomType = roomType;
+ self.doors = [];
+ self.keys = [];
+ self.hiddenObjects = [];
+ self.addDoor = function (targetRoom, x, y) {
+ var door = new Door(targetRoom, x, y);
+ door.x = x;
+ door.y = y;
+ self.doors.push(door);
+ self.addChild(door);
+ return door;
+ };
+ self.addKey = function (x, y) {
+ var key = new MysteryKey();
+ key.x = x;
+ key.y = y;
+ self.keys.push(key);
+ self.addChild(key);
+ return key;
+ };
+ self.addHiddenObject = function (x, y) {
+ var obj = new HiddenObject();
+ obj.x = x;
+ obj.y = y;
+ self.hiddenObjects.push(obj);
+ self.addChild(obj);
+ return obj;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
backgroundColor: 0x000000
-});
\ No newline at end of file
+});
+
+/****
+* Game Code
+****/
+// Sounds
+// Interactive elements
+// Room backgrounds
+// PowerPuff Girls characters
+// Game variables
+var currentRoom = null;
+var powerPuffGirls = [];
+var keysCollected = 0;
+var objectsFound = 0;
+var totalKeys = 0;
+var totalObjects = 0;
+var rooms = {};
+var draggedGirl = null;
+// UI Elements
+var scoreText = new Text2('Keys: 0/0 | Objects: 0/0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+var roomNameText = new Text2('Living Room', {
+ size: 80,
+ fill: 0xFFFF00
+});
+roomNameText.anchor.set(0.5, 0);
+roomNameText.y = 100;
+LK.gui.top.addChild(roomNameText);
+// Create rooms
+function createRooms() {
+ // Living Room
+ rooms.livingRoom = new Room('livingRoom');
+ rooms.livingRoom.addDoor('kitchen', 1800, 1000);
+ rooms.livingRoom.addDoor('bedroom', 1800, 1800);
+ rooms.livingRoom.addKey(300, 800);
+ rooms.livingRoom.addKey(1500, 1200);
+ rooms.livingRoom.addHiddenObject(800, 600);
+ rooms.livingRoom.addHiddenObject(1200, 1600);
+ // Kitchen
+ rooms.kitchen = new Room('kitchen');
+ rooms.kitchen.addDoor('livingRoom', 200, 1000);
+ rooms.kitchen.addDoor('attic', 1800, 600);
+ rooms.kitchen.addKey(1000, 1200);
+ rooms.kitchen.addKey(600, 2000);
+ rooms.kitchen.addHiddenObject(1600, 800);
+ // Bedroom
+ rooms.bedroom = new Room('bedroom');
+ rooms.bedroom.addDoor('livingRoom', 200, 1800);
+ rooms.bedroom.addKey(1200, 800);
+ rooms.bedroom.addKey(800, 1800);
+ rooms.bedroom.addHiddenObject(1600, 1200);
+ rooms.bedroom.addHiddenObject(400, 1200);
+ // Attic
+ rooms.attic = new Room('attic');
+ rooms.attic.addDoor('kitchen', 200, 600);
+ rooms.attic.addKey(1000, 1000);
+ rooms.attic.addKey(1600, 1600);
+ rooms.attic.addHiddenObject(600, 800);
+ // Count total collectibles
+ for (var roomName in rooms) {
+ var room = rooms[roomName];
+ totalKeys += room.keys.length;
+ totalObjects += room.hiddenObjects.length;
+ }
+}
+// Create PowerPuff Girls
+function createPowerPuffGirls() {
+ var types = ['blossom', 'bubbles', 'buttercup'];
+ var startX = 400;
+ for (var i = 0; i < types.length; i++) {
+ var girl = new PowerPuffGirl(types[i]);
+ girl.x = startX + i * 200;
+ girl.y = 2000;
+ powerPuffGirls.push(girl);
+ }
+}
+// Switch room function
+game.switchRoom = function (roomName) {
+ if (currentRoom) {
+ game.removeChild(currentRoom);
+ }
+ currentRoom = rooms[roomName];
+ game.addChild(currentRoom);
+ // Add girls to new room
+ for (var i = 0; i < powerPuffGirls.length; i++) {
+ currentRoom.addChild(powerPuffGirls[i]);
+ }
+ // Update room name
+ var displayName = roomName.charAt(0).toUpperCase() + roomName.slice(1);
+ if (displayName === 'Livingroom') displayName = 'Living Room';
+ roomNameText.setText(displayName);
+};
+// Update score display
+function updateScore() {
+ scoreText.setText('Keys: ' + keysCollected + '/' + totalKeys + ' | Objects: ' + objectsFound + '/' + totalObjects);
+ // Check win condition
+ if (keysCollected >= totalKeys && objectsFound >= totalObjects) {
+ LK.setTimeout(function () {
+ LK.showYouWin();
+ }, 1000);
+ }
+}
+// Touch controls
+game.down = function (x, y, obj) {
+ // Check if touching a PowerPuff Girl
+ for (var i = 0; i < powerPuffGirls.length; i++) {
+ var girl = powerPuffGirls[i];
+ if (girl.parent === currentRoom) {
+ var localPos = girl.toLocal({
+ x: x,
+ y: y
+ });
+ if (Math.abs(localPos.x) < 60 && Math.abs(localPos.y) < 60) {
+ draggedGirl = girl;
+ return;
+ }
+ }
+ }
+};
+game.move = function (x, y, obj) {
+ if (draggedGirl) {
+ // Constrain movement within room bounds
+ var constrainedX = Math.max(100, Math.min(1948, x));
+ var constrainedY = Math.max(100, Math.min(2632, y));
+ draggedGirl.moveTo(constrainedX, constrainedY);
+ }
+};
+game.up = function (x, y, obj) {
+ draggedGirl = null;
+};
+// Initialize game
+createRooms();
+createPowerPuffGirls();
+game.switchRoom('livingRoom');
+updateScore();
+// Main game loop
+game.update = function () {
+ // Check for collisions between girls and interactive objects
+ for (var i = 0; i < powerPuffGirls.length; i++) {
+ var girl = powerPuffGirls[i];
+ if (girl.parent !== currentRoom) continue;
+ // Check key collisions
+ for (var j = 0; j < currentRoom.keys.length; j++) {
+ var key = currentRoom.keys[j];
+ if (!key.collected && girl.intersects(key)) {
+ key.collect();
+ break;
+ }
+ }
+ // Check hidden object collisions
+ for (var k = 0; k < currentRoom.hiddenObjects.length; k++) {
+ var obj = currentRoom.hiddenObjects[k];
+ if (!obj.found && girl.intersects(obj)) {
+ obj.discover();
+ break;
+ }
+ }
+ }
+};
\ No newline at end of file