Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff Girls: Garden Lights Countdown
Initial prompt
Toca lights (2006-2007). The powerpuff girls are here in a very dark nighttime garden. And coco š° says that we turn on the lights with countdown from 10 to 1. Tap on 10 to 1 to countdown will turn on the lights, tap on coco š° to make ice fireworks.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var CocoCharacter = Container.expand(function () { var self = Container.call(this); var cocoGraphics = self.attachAsset('coco', { anchorX: 0.5, anchorY: 0.5 }); var cocoText = new Text2('COCO', { size: 30, fill: 0xFFFFFF }); cocoText.anchor.set(0.5, 0.5); cocoText.y = 80; self.addChild(cocoText); self.down = function (x, y, obj) { LK.getSound('iceMagic').play(); createIceFireworks(self.x, self.y); tween(self, { scaleX: 1.2, scaleY: 1.2 }, { duration: 200, easing: tween.easeOut, onFinish: function onFinish() { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 200, easing: tween.easeOut }); } }); }; return self; }); var CountdownButton = Container.expand(function (number) { var self = Container.call(this); self.number = number; self.isActive = number === 10; var buttonGraphics = self.attachAsset('countdownButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2(number.toString(), { size: 60, fill: self.isActive ? "#ffffff" : "#666666" }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.activate = function () { self.isActive = true; buttonText.fill = "#ffffff"; buttonGraphics.tint = 0xffffff; }; self.deactivate = function () { self.isActive = false; buttonText.fill = "#333333"; buttonGraphics.tint = 0x333333; }; self.down = function (x, y, obj) { if (self.isActive && currentNumber === self.number) { LK.getSound('buttonTap').play(); self.deactivate(); currentNumber--; if (currentNumber > 0) { for (var i = 0; i < countdownButtons.length; i++) { if (countdownButtons[i].number === currentNumber) { countdownButtons[i].activate(); break; } } } lightLevel += 0.1; lightOverlay.alpha = lightLevel; if (currentNumber === 0) { LK.getSound('victory').play(); LK.effects.flashScreen(0xffffff, 1000); LK.setTimeout(function () { LK.showYouWin(); }, 1000); } } }; return self; }); var IceSpark = Container.expand(function () { var self = Container.call(this); var sparkGraphics = self.attachAsset('iceSpark', { anchorX: 0.5, anchorY: 0.5 }); self.vx = (Math.random() - 0.5) * 10; self.vy = (Math.random() - 0.5) * 10; self.life = 60; self.update = function () { self.x += self.vx; self.y += self.vy; self.life--; sparkGraphics.alpha = self.life / 60; if (self.life <= 0) { self.destroy(); for (var i = iceFireworks.length - 1; i >= 0; i--) { if (iceFireworks[i] === self) { iceFireworks.splice(i, 1); break; } } } }; return self; }); var PowerpuffGirl = Container.expand(function (assetId, color) { var self = Container.call(this); var girlGraphics = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); var girlText = new Text2(assetId.toUpperCase(), { size: 30, fill: 0xFFFFFF }); girlText.anchor.set(0.5, 0.5); girlText.y = 80; self.addChild(girlText); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x0f0f23 }); /**** * Game Code ****/ var currentNumber = 10; var lightLevel = 0; var countdownButtons = []; var iceFireworks = []; var darkGarden = game.addChild(LK.getAsset('darkGarden', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366 })); var lightOverlay = game.addChild(LK.getAsset('lightOverlay', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0 })); var blossom = game.addChild(new PowerpuffGirl('blossom', 0xff69b4)); blossom.x = 300; blossom.y = 600; var buttercup = game.addChild(new PowerpuffGirl('buttercup', 0x90ee90)); buttercup.x = 700; buttercup.y = 800; var bubbles = game.addChild(new PowerpuffGirl('bubbles', 0x00bfff)); bubbles.x = 1400; bubbles.y = 600; var coco = game.addChild(new CocoCharacter()); coco.x = 1024; coco.y = 1000; for (var i = 10; i >= 1; i--) { var button = new CountdownButton(i); var angle = (i - 1) * (Math.PI * 2 / 10); var radius = 400; button.x = 1024 + Math.cos(angle) * radius; button.y = 1366 + Math.sin(angle) * radius; countdownButtons.push(button); game.addChild(button); } var titleText = new Text2('Tap numbers 10 to 1!', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 300; game.addChild(titleText); var instructionText = new Text2('Tap Coco for ice fireworks!', { size: 50, fill: 0x87CEEB }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 1024; instructionText.y = 380; game.addChild(instructionText); function createIceFireworks(x, y) { for (var i = 0; i < 15; i++) { var spark = new IceSpark(); spark.x = x; spark.y = y; iceFireworks.push(spark); game.addChild(spark); } } game.update = function () { for (var i = iceFireworks.length - 1; i >= 0; i--) { if (iceFireworks[i].life <= 0) { continue; } } if (lightLevel > 0) { for (var j = 0; j < countdownButtons.length; j++) { if (countdownButtons[j].number > currentNumber) { countdownButtons[j].alpha = 0.3 + lightLevel * 0.7; } } blossom.alpha = 0.3 + lightLevel * 0.7; buttercup.alpha = 0.3 + lightLevel * 0.7; bubbles.alpha = 0.3 + lightLevel * 0.7; coco.alpha = 0.3 + lightLevel * 0.7; } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,226 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var CocoCharacter = Container.expand(function () {
+ var self = Container.call(this);
+ var cocoGraphics = self.attachAsset('coco', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var cocoText = new Text2('COCO', {
+ size: 30,
+ fill: 0xFFFFFF
+ });
+ cocoText.anchor.set(0.5, 0.5);
+ cocoText.y = 80;
+ self.addChild(cocoText);
+ self.down = function (x, y, obj) {
+ LK.getSound('iceMagic').play();
+ createIceFireworks(self.x, self.y);
+ tween(self, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 200,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ }
+ });
+ };
+ return self;
+});
+var CountdownButton = Container.expand(function (number) {
+ var self = Container.call(this);
+ self.number = number;
+ self.isActive = number === 10;
+ var buttonGraphics = self.attachAsset('countdownButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var buttonText = new Text2(number.toString(), {
+ size: 60,
+ fill: self.isActive ? "#ffffff" : "#666666"
+ });
+ buttonText.anchor.set(0.5, 0.5);
+ self.addChild(buttonText);
+ self.activate = function () {
+ self.isActive = true;
+ buttonText.fill = "#ffffff";
+ buttonGraphics.tint = 0xffffff;
+ };
+ self.deactivate = function () {
+ self.isActive = false;
+ buttonText.fill = "#333333";
+ buttonGraphics.tint = 0x333333;
+ };
+ self.down = function (x, y, obj) {
+ if (self.isActive && currentNumber === self.number) {
+ LK.getSound('buttonTap').play();
+ self.deactivate();
+ currentNumber--;
+ if (currentNumber > 0) {
+ for (var i = 0; i < countdownButtons.length; i++) {
+ if (countdownButtons[i].number === currentNumber) {
+ countdownButtons[i].activate();
+ break;
+ }
+ }
+ }
+ lightLevel += 0.1;
+ lightOverlay.alpha = lightLevel;
+ if (currentNumber === 0) {
+ LK.getSound('victory').play();
+ LK.effects.flashScreen(0xffffff, 1000);
+ LK.setTimeout(function () {
+ LK.showYouWin();
+ }, 1000);
+ }
+ }
+ };
+ return self;
+});
+var IceSpark = Container.expand(function () {
+ var self = Container.call(this);
+ var sparkGraphics = self.attachAsset('iceSpark', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.vx = (Math.random() - 0.5) * 10;
+ self.vy = (Math.random() - 0.5) * 10;
+ self.life = 60;
+ self.update = function () {
+ self.x += self.vx;
+ self.y += self.vy;
+ self.life--;
+ sparkGraphics.alpha = self.life / 60;
+ if (self.life <= 0) {
+ self.destroy();
+ for (var i = iceFireworks.length - 1; i >= 0; i--) {
+ if (iceFireworks[i] === self) {
+ iceFireworks.splice(i, 1);
+ break;
+ }
+ }
+ }
+ };
+ return self;
+});
+var PowerpuffGirl = Container.expand(function (assetId, color) {
+ var self = Container.call(this);
+ var girlGraphics = self.attachAsset(assetId, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var girlText = new Text2(assetId.toUpperCase(), {
+ size: 30,
+ fill: 0xFFFFFF
+ });
+ girlText.anchor.set(0.5, 0.5);
+ girlText.y = 80;
+ self.addChild(girlText);
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x0f0f23
+});
+
+/****
+* Game Code
+****/
+var currentNumber = 10;
+var lightLevel = 0;
+var countdownButtons = [];
+var iceFireworks = [];
+var darkGarden = game.addChild(LK.getAsset('darkGarden', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1366
+}));
+var lightOverlay = game.addChild(LK.getAsset('lightOverlay', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1366,
+ alpha: 0
+}));
+var blossom = game.addChild(new PowerpuffGirl('blossom', 0xff69b4));
+blossom.x = 300;
+blossom.y = 600;
+var buttercup = game.addChild(new PowerpuffGirl('buttercup', 0x90ee90));
+buttercup.x = 700;
+buttercup.y = 800;
+var bubbles = game.addChild(new PowerpuffGirl('bubbles', 0x00bfff));
+bubbles.x = 1400;
+bubbles.y = 600;
+var coco = game.addChild(new CocoCharacter());
+coco.x = 1024;
+coco.y = 1000;
+for (var i = 10; i >= 1; i--) {
+ var button = new CountdownButton(i);
+ var angle = (i - 1) * (Math.PI * 2 / 10);
+ var radius = 400;
+ button.x = 1024 + Math.cos(angle) * radius;
+ button.y = 1366 + Math.sin(angle) * radius;
+ countdownButtons.push(button);
+ game.addChild(button);
+}
+var titleText = new Text2('Tap numbers 10 to 1!', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+titleText.anchor.set(0.5, 0.5);
+titleText.x = 1024;
+titleText.y = 300;
+game.addChild(titleText);
+var instructionText = new Text2('Tap Coco for ice fireworks!', {
+ size: 50,
+ fill: 0x87CEEB
+});
+instructionText.anchor.set(0.5, 0.5);
+instructionText.x = 1024;
+instructionText.y = 380;
+game.addChild(instructionText);
+function createIceFireworks(x, y) {
+ for (var i = 0; i < 15; i++) {
+ var spark = new IceSpark();
+ spark.x = x;
+ spark.y = y;
+ iceFireworks.push(spark);
+ game.addChild(spark);
+ }
+}
+game.update = function () {
+ for (var i = iceFireworks.length - 1; i >= 0; i--) {
+ if (iceFireworks[i].life <= 0) {
+ continue;
+ }
+ }
+ if (lightLevel > 0) {
+ for (var j = 0; j < countdownButtons.length; j++) {
+ if (countdownButtons[j].number > currentNumber) {
+ countdownButtons[j].alpha = 0.3 + lightLevel * 0.7;
+ }
+ }
+ blossom.alpha = 0.3 + lightLevel * 0.7;
+ buttercup.alpha = 0.3 + lightLevel * 0.7;
+ bubbles.alpha = 0.3 + lightLevel * 0.7;
+ coco.alpha = 0.3 + lightLevel * 0.7;
+ }
+};
\ No newline at end of file