Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff Girls Summer Holiday Adventure
Initial prompt
Toca summer holiday (2015). Tap on level 1 tilt your device to make the sea fall for the powerpuff girls, level 2 tap 3 gifts to open for blossom bubbles and buttercup, level 3 drag and drop 5 items onto the powerpuff girls’s bag 💼, or level 4 rub out the white screen to see a movie video at the cinema.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var GiftBox = Container.expand(function (type) { var self = Container.call(this); var boxType = type || 'giftBox1'; var boxGraphics = self.attachAsset(boxType, { anchorX: 0.5, anchorY: 0.5 }); self.isOpened = false; self.boxType = boxType; self.down = function (x, y, obj) { if (!self.isOpened) { self.isOpened = true; tween(boxGraphics, { scaleX: 1.2, scaleY: 1.2, tint: 0xFFFFFF }, { duration: 300 }); LK.getSound('success').play(); // Check if all boxes are opened var allOpened = true; for (var i = 0; i < giftBoxes.length; i++) { if (!giftBoxes[i].isOpened) { allOpened = false; break; } } if (allOpened) { LK.setTimeout(function () { nextLevel(); }, 1000); } } }; return self; }); var LevelButton = Container.expand(function (levelNum) { var self = Container.call(this); var buttonGraphics = self.attachAsset('levelButton', { anchorX: 0.5, anchorY: 0.5 }); self.levelNum = levelNum; // Add level text var levelText = new Text2('Level ' + levelNum, { size: 40, fill: 0xFFFFFF }); levelText.anchor.set(0.5, 0.5); self.addChild(levelText); self.down = function (x, y, obj) { startLevel(levelNum); }; return self; }); var OceanWave = Container.expand(function () { var self = Container.call(this); var waveGraphics = self.attachAsset('oceanWave', { anchorX: 0.5, anchorY: 0.5 }); self.baseY = 0; self.amplitude = 50; self.frequency = 0.05; self.phase = 0; self.update = function () { self.phase += 0.1; self.y = self.baseY + Math.sin(self.phase) * self.amplitude; }; return self; }); var SummerItem = Container.expand(function (itemType) { var self = Container.call(this); var itemGraphics = self.attachAsset(itemType, { anchorX: 0.5, anchorY: 0.5 }); self.itemType = itemType; self.isDragging = false; self.isPacked = false; self.originalX = 0; self.originalY = 0; self.down = function (x, y, obj) { if (!self.isPacked) { self.isDragging = true; draggedItem = self; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var currentLevel = storage.currentLevel || 1; var gameState = 'menu'; // 'menu', 'level1', 'level2', 'level3', 'level4' var levelButtons = []; var oceanWaves = []; var giftBoxes = []; var summerItems = []; var adventureBag = null; var draggedItem = null; var whiteOverlay = null; var cinemaScreen = null; var erasedPixels = []; // Title text var titleText = new Text2('Powerpuff Girls\nSummer Holiday Adventure', { size: 80, fill: 0xFF1493 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 400; LK.gui.center.addChild(titleText); function createMenu() { gameState = 'menu'; // Create level buttons for (var i = 1; i <= 4; i++) { var button = new LevelButton(i); button.x = 400 + (i - 1) * 300; button.y = 1000; if (i > currentLevel) { button.alpha = 0.5; } levelButtons.push(button); game.addChild(button); } } function startLevel(levelNum) { if (levelNum > currentLevel) return; clearGame(); gameState = 'level' + levelNum; switch (levelNum) { case 1: initLevel1(); break; case 2: initLevel2(); break; case 3: initLevel3(); break; case 4: initLevel4(); break; } } function initLevel1() { // Ocean waves level for (var i = 0; i < 5; i++) { var wave = new OceanWave(); wave.x = 200 + i * 350; wave.y = 1366 + i * 50; wave.baseY = wave.y; wave.phase = i * 0.5; oceanWaves.push(wave); game.addChild(wave); } // Complete level after 5 seconds LK.setTimeout(function () { nextLevel(); }, 5000); } function initLevel2() { // Gift boxes level var boxTypes = ['giftBox1', 'giftBox2', 'giftBox3']; for (var i = 0; i < 3; i++) { var box = new GiftBox(boxTypes[i]); box.x = 400 + i * 400; box.y = 1366; giftBoxes.push(box); game.addChild(box); } // Add instruction text var instructionText = new Text2('Tap the gift boxes!', { size: 60, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 1024; instructionText.y = 800; game.addChild(instructionText); } function initLevel3() { // Bag packing level adventureBag = game.addChild(LK.getAsset('adventureBag', { anchorX: 0.5, anchorY: 0.5 })); adventureBag.x = 1024; adventureBag.y = 2000; // Create summer items var itemTypes = ['sunglasses', 'beachBall', 'sunscreen', 'towel', 'hat']; for (var i = 0; i < 5; i++) { var item = new SummerItem(itemTypes[i]); item.x = 200 + i * 300; item.y = 1000; item.originalX = item.x; item.originalY = item.y; summerItems.push(item); game.addChild(item); } // Add instruction text var instructionText = new Text2('Drag items to the bag!', { size: 60, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 1024; instructionText.y = 600; game.addChild(instructionText); } function initLevel4() { // Cinema reveal level cinemaScreen = game.addChild(LK.getAsset('cinemaScreen', { anchorX: 0.5, anchorY: 0.5 })); cinemaScreen.x = 1024; cinemaScreen.y = 1366; whiteOverlay = game.addChild(LK.getAsset('whiteOverlay', { anchorX: 0.5, anchorY: 0.5 })); whiteOverlay.x = 1024; whiteOverlay.y = 1366; // Add instruction text var instructionText = new Text2('Rub to reveal the cinema!', { size: 60, fill: 0x000000 }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 1024; instructionText.y = 300; game.addChild(instructionText); } function clearGame() { // Remove all game objects for (var i = 0; i < levelButtons.length; i++) { levelButtons[i].destroy(); } levelButtons = []; for (var i = 0; i < oceanWaves.length; i++) { oceanWaves[i].destroy(); } oceanWaves = []; for (var i = 0; i < giftBoxes.length; i++) { giftBoxes[i].destroy(); } giftBoxes = []; for (var i = 0; i < summerItems.length; i++) { summerItems[i].destroy(); } summerItems = []; if (adventureBag) { adventureBag.destroy(); adventureBag = null; } if (whiteOverlay) { whiteOverlay.destroy(); whiteOverlay = null; } if (cinemaScreen) { cinemaScreen.destroy(); cinemaScreen = null; } // Clear any remaining children while (game.children.length > 0) { game.children[0].destroy(); } draggedItem = null; erasedPixels = []; } function nextLevel() { LK.getSound('complete').play(); currentLevel++; storage.currentLevel = currentLevel; if (currentLevel > 4) { // Game completed LK.showYouWin(); } else { // Return to menu clearGame(); createMenu(); } } function handleMove(x, y, obj) { if (gameState === 'level3' && draggedItem) { draggedItem.x = x; draggedItem.y = y; } if (gameState === 'level4' && whiteOverlay) { // Erase white overlay by reducing alpha in touched area var distance = Math.sqrt(Math.pow(x - whiteOverlay.x, 2) + Math.pow(y - whiteOverlay.y, 2)); if (distance < 100) { whiteOverlay.alpha -= 0.02; if (whiteOverlay.alpha <= 0) { whiteOverlay.alpha = 0; LK.setTimeout(function () { nextLevel(); }, 1000); } } } } function handleDown(x, y, obj) { // Handle level 3 item selection if (gameState === 'level3') { for (var i = 0; i < summerItems.length; i++) { var item = summerItems[i]; if (!item.isPacked && item.intersects({ x: x, y: y, width: 1, height: 1 })) { draggedItem = item; break; } } } } function handleUp(x, y, obj) { if (gameState === 'level3' && draggedItem && adventureBag) { // Check if item is dropped on bag if (draggedItem.intersects(adventureBag)) { draggedItem.isPacked = true; draggedItem.x = adventureBag.x; draggedItem.y = adventureBag.y; draggedItem.alpha = 0.5; LK.getSound('success').play(); // Check if all items are packed var allPacked = true; for (var i = 0; i < summerItems.length; i++) { if (!summerItems[i].isPacked) { allPacked = false; break; } } if (allPacked) { LK.setTimeout(function () { nextLevel(); }, 1000); } } else { // Return to original position draggedItem.x = draggedItem.originalX; draggedItem.y = draggedItem.originalY; } } draggedItem = null; } game.move = handleMove; game.down = handleDown; game.up = handleUp; game.update = function () { // Update ocean waves for (var i = 0; i < oceanWaves.length; i++) { oceanWaves[i].update(); } }; // Initialize the game createMenu();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,380 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+var GiftBox = Container.expand(function (type) {
+ var self = Container.call(this);
+ var boxType = type || 'giftBox1';
+ var boxGraphics = self.attachAsset(boxType, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.isOpened = false;
+ self.boxType = boxType;
+ self.down = function (x, y, obj) {
+ if (!self.isOpened) {
+ self.isOpened = true;
+ tween(boxGraphics, {
+ scaleX: 1.2,
+ scaleY: 1.2,
+ tint: 0xFFFFFF
+ }, {
+ duration: 300
+ });
+ LK.getSound('success').play();
+ // Check if all boxes are opened
+ var allOpened = true;
+ for (var i = 0; i < giftBoxes.length; i++) {
+ if (!giftBoxes[i].isOpened) {
+ allOpened = false;
+ break;
+ }
+ }
+ if (allOpened) {
+ LK.setTimeout(function () {
+ nextLevel();
+ }, 1000);
+ }
+ }
+ };
+ return self;
+});
+var LevelButton = Container.expand(function (levelNum) {
+ var self = Container.call(this);
+ var buttonGraphics = self.attachAsset('levelButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.levelNum = levelNum;
+ // Add level text
+ var levelText = new Text2('Level ' + levelNum, {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ levelText.anchor.set(0.5, 0.5);
+ self.addChild(levelText);
+ self.down = function (x, y, obj) {
+ startLevel(levelNum);
+ };
+ return self;
+});
+var OceanWave = Container.expand(function () {
+ var self = Container.call(this);
+ var waveGraphics = self.attachAsset('oceanWave', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.baseY = 0;
+ self.amplitude = 50;
+ self.frequency = 0.05;
+ self.phase = 0;
+ self.update = function () {
+ self.phase += 0.1;
+ self.y = self.baseY + Math.sin(self.phase) * self.amplitude;
+ };
+ return self;
+});
+var SummerItem = Container.expand(function (itemType) {
+ var self = Container.call(this);
+ var itemGraphics = self.attachAsset(itemType, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.itemType = itemType;
+ self.isDragging = false;
+ self.isPacked = false;
+ self.originalX = 0;
+ self.originalY = 0;
+ self.down = function (x, y, obj) {
+ if (!self.isPacked) {
+ self.isDragging = true;
+ draggedItem = self;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+var currentLevel = storage.currentLevel || 1;
+var gameState = 'menu'; // 'menu', 'level1', 'level2', 'level3', 'level4'
+var levelButtons = [];
+var oceanWaves = [];
+var giftBoxes = [];
+var summerItems = [];
+var adventureBag = null;
+var draggedItem = null;
+var whiteOverlay = null;
+var cinemaScreen = null;
+var erasedPixels = [];
+// Title text
+var titleText = new Text2('Powerpuff Girls\nSummer Holiday Adventure', {
+ size: 80,
+ fill: 0xFF1493
+});
+titleText.anchor.set(0.5, 0.5);
+titleText.x = 1024;
+titleText.y = 400;
+LK.gui.center.addChild(titleText);
+function createMenu() {
+ gameState = 'menu';
+ // Create level buttons
+ for (var i = 1; i <= 4; i++) {
+ var button = new LevelButton(i);
+ button.x = 400 + (i - 1) * 300;
+ button.y = 1000;
+ if (i > currentLevel) {
+ button.alpha = 0.5;
+ }
+ levelButtons.push(button);
+ game.addChild(button);
+ }
+}
+function startLevel(levelNum) {
+ if (levelNum > currentLevel) return;
+ clearGame();
+ gameState = 'level' + levelNum;
+ switch (levelNum) {
+ case 1:
+ initLevel1();
+ break;
+ case 2:
+ initLevel2();
+ break;
+ case 3:
+ initLevel3();
+ break;
+ case 4:
+ initLevel4();
+ break;
+ }
+}
+function initLevel1() {
+ // Ocean waves level
+ for (var i = 0; i < 5; i++) {
+ var wave = new OceanWave();
+ wave.x = 200 + i * 350;
+ wave.y = 1366 + i * 50;
+ wave.baseY = wave.y;
+ wave.phase = i * 0.5;
+ oceanWaves.push(wave);
+ game.addChild(wave);
+ }
+ // Complete level after 5 seconds
+ LK.setTimeout(function () {
+ nextLevel();
+ }, 5000);
+}
+function initLevel2() {
+ // Gift boxes level
+ var boxTypes = ['giftBox1', 'giftBox2', 'giftBox3'];
+ for (var i = 0; i < 3; i++) {
+ var box = new GiftBox(boxTypes[i]);
+ box.x = 400 + i * 400;
+ box.y = 1366;
+ giftBoxes.push(box);
+ game.addChild(box);
+ }
+ // Add instruction text
+ var instructionText = new Text2('Tap the gift boxes!', {
+ size: 60,
+ fill: 0xFFFFFF
+ });
+ instructionText.anchor.set(0.5, 0.5);
+ instructionText.x = 1024;
+ instructionText.y = 800;
+ game.addChild(instructionText);
+}
+function initLevel3() {
+ // Bag packing level
+ adventureBag = game.addChild(LK.getAsset('adventureBag', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ adventureBag.x = 1024;
+ adventureBag.y = 2000;
+ // Create summer items
+ var itemTypes = ['sunglasses', 'beachBall', 'sunscreen', 'towel', 'hat'];
+ for (var i = 0; i < 5; i++) {
+ var item = new SummerItem(itemTypes[i]);
+ item.x = 200 + i * 300;
+ item.y = 1000;
+ item.originalX = item.x;
+ item.originalY = item.y;
+ summerItems.push(item);
+ game.addChild(item);
+ }
+ // Add instruction text
+ var instructionText = new Text2('Drag items to the bag!', {
+ size: 60,
+ fill: 0xFFFFFF
+ });
+ instructionText.anchor.set(0.5, 0.5);
+ instructionText.x = 1024;
+ instructionText.y = 600;
+ game.addChild(instructionText);
+}
+function initLevel4() {
+ // Cinema reveal level
+ cinemaScreen = game.addChild(LK.getAsset('cinemaScreen', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ cinemaScreen.x = 1024;
+ cinemaScreen.y = 1366;
+ whiteOverlay = game.addChild(LK.getAsset('whiteOverlay', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ whiteOverlay.x = 1024;
+ whiteOverlay.y = 1366;
+ // Add instruction text
+ var instructionText = new Text2('Rub to reveal the cinema!', {
+ size: 60,
+ fill: 0x000000
+ });
+ instructionText.anchor.set(0.5, 0.5);
+ instructionText.x = 1024;
+ instructionText.y = 300;
+ game.addChild(instructionText);
+}
+function clearGame() {
+ // Remove all game objects
+ for (var i = 0; i < levelButtons.length; i++) {
+ levelButtons[i].destroy();
+ }
+ levelButtons = [];
+ for (var i = 0; i < oceanWaves.length; i++) {
+ oceanWaves[i].destroy();
+ }
+ oceanWaves = [];
+ for (var i = 0; i < giftBoxes.length; i++) {
+ giftBoxes[i].destroy();
+ }
+ giftBoxes = [];
+ for (var i = 0; i < summerItems.length; i++) {
+ summerItems[i].destroy();
+ }
+ summerItems = [];
+ if (adventureBag) {
+ adventureBag.destroy();
+ adventureBag = null;
+ }
+ if (whiteOverlay) {
+ whiteOverlay.destroy();
+ whiteOverlay = null;
+ }
+ if (cinemaScreen) {
+ cinemaScreen.destroy();
+ cinemaScreen = null;
+ }
+ // Clear any remaining children
+ while (game.children.length > 0) {
+ game.children[0].destroy();
+ }
+ draggedItem = null;
+ erasedPixels = [];
+}
+function nextLevel() {
+ LK.getSound('complete').play();
+ currentLevel++;
+ storage.currentLevel = currentLevel;
+ if (currentLevel > 4) {
+ // Game completed
+ LK.showYouWin();
+ } else {
+ // Return to menu
+ clearGame();
+ createMenu();
+ }
+}
+function handleMove(x, y, obj) {
+ if (gameState === 'level3' && draggedItem) {
+ draggedItem.x = x;
+ draggedItem.y = y;
+ }
+ if (gameState === 'level4' && whiteOverlay) {
+ // Erase white overlay by reducing alpha in touched area
+ var distance = Math.sqrt(Math.pow(x - whiteOverlay.x, 2) + Math.pow(y - whiteOverlay.y, 2));
+ if (distance < 100) {
+ whiteOverlay.alpha -= 0.02;
+ if (whiteOverlay.alpha <= 0) {
+ whiteOverlay.alpha = 0;
+ LK.setTimeout(function () {
+ nextLevel();
+ }, 1000);
+ }
+ }
+ }
+}
+function handleDown(x, y, obj) {
+ // Handle level 3 item selection
+ if (gameState === 'level3') {
+ for (var i = 0; i < summerItems.length; i++) {
+ var item = summerItems[i];
+ if (!item.isPacked && item.intersects({
+ x: x,
+ y: y,
+ width: 1,
+ height: 1
+ })) {
+ draggedItem = item;
+ break;
+ }
+ }
+ }
+}
+function handleUp(x, y, obj) {
+ if (gameState === 'level3' && draggedItem && adventureBag) {
+ // Check if item is dropped on bag
+ if (draggedItem.intersects(adventureBag)) {
+ draggedItem.isPacked = true;
+ draggedItem.x = adventureBag.x;
+ draggedItem.y = adventureBag.y;
+ draggedItem.alpha = 0.5;
+ LK.getSound('success').play();
+ // Check if all items are packed
+ var allPacked = true;
+ for (var i = 0; i < summerItems.length; i++) {
+ if (!summerItems[i].isPacked) {
+ allPacked = false;
+ break;
+ }
+ }
+ if (allPacked) {
+ LK.setTimeout(function () {
+ nextLevel();
+ }, 1000);
+ }
+ } else {
+ // Return to original position
+ draggedItem.x = draggedItem.originalX;
+ draggedItem.y = draggedItem.originalY;
+ }
+ }
+ draggedItem = null;
+}
+game.move = handleMove;
+game.down = handleDown;
+game.up = handleUp;
+game.update = function () {
+ // Update ocean waves
+ for (var i = 0; i < oceanWaves.length; i++) {
+ oceanWaves[i].update();
+ }
+};
+// Initialize the game
+createMenu();
\ No newline at end of file