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