Code edit (1 edits merged)
Please save this source code
User prompt
Party Gift Surprise
Initial prompt
Toca presents (2001). The powerpuff girls are having a party inside. Tap on 6 gifts to choose, tap on the gift to shake it then open it, it will be a kazoo, a party blower, drums, a xylophone, or a toy frog inside, tap on your gift to see what it does, tap on your gift and see what happens
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Drum = Container.expand(function () { var self = Container.call(this); var drum = self.attachAsset('drum', { anchorX: 0.5, anchorY: 0.5 }); var stick1 = self.attachAsset('drumstick', { anchorX: 0.5, anchorY: 0.5, x: -60, y: -80, rotation: -Math.PI / 4 }); var stick2 = self.attachAsset('drumstick', { anchorX: 0.5, anchorY: 0.5, x: 60, y: -80, rotation: Math.PI / 4 }); self.down = function (x, y, obj) { LK.getSound('drumBeat').play(); tween(drum, { scaleY: 0.9 }, { duration: 100 }); tween(stick1, { y: -60 }, { duration: 100 }); tween(stick2, { y: -60 }, { duration: 100 }); LK.setTimeout(function () { tween(drum, { scaleY: 1 }, { duration: 100 }); tween(stick1, { y: -80 }, { duration: 100 }); tween(stick2, { y: -80 }, { duration: 100 }); }, 100); }; return self; }); var GiftBox = Container.expand(function () { var self = Container.call(this); self.isOpened = false; self.toyType = ''; self.isShaking = false; var box = self.attachAsset('giftBox', { anchorX: 0.5, anchorY: 0.5 }); var ribbonH = self.attachAsset('giftRibbon', { anchorX: 0.5, anchorY: 0.5 }); var ribbonV = self.attachAsset('giftRibbon', { anchorX: 0.5, anchorY: 0.5, rotation: Math.PI / 2 }); var bow = self.attachAsset('giftBow', { anchorX: 0.5, anchorY: 0.5, y: -120 }); self.setToyType = function (type) { self.toyType = type; }; self.shake = function () { if (self.isOpened || self.isShaking) return; self.isShaking = true; LK.getSound('giftShake').play(); tween(self, { rotation: -0.1 }, { duration: 100 }); LK.setTimeout(function () { tween(self, { rotation: 0.1 }, { duration: 100 }); }, 100); LK.setTimeout(function () { tween(self, { rotation: 0 }, { duration: 100, onFinish: function onFinish() { self.isShaking = false; } }); }, 200); }; self.unwrap = function () { if (self.isOpened) return; self.isOpened = true; LK.getSound('unwrap').play(); tween(box, { alpha: 0 }, { duration: 500 }); tween(ribbonH, { alpha: 0 }, { duration: 500 }); tween(ribbonV, { alpha: 0 }, { duration: 500 }); tween(bow, { alpha: 0 }, { duration: 500, onFinish: function onFinish() { self.createToy(); } }); }; self.createToy = function () { var toy = null; if (self.toyType === 'kazoo') { toy = self.addChild(new Kazoo()); } else if (self.toyType === 'partyBlower') { toy = self.addChild(new PartyBlower()); } else if (self.toyType === 'drum') { toy = self.addChild(new Drum()); } else if (self.toyType === 'xylophone') { toy = self.addChild(new Xylophone()); } else if (self.toyType === 'toyFrog') { toy = self.addChild(new ToyFrog()); } }; self.down = function (x, y, obj) { if (!self.isOpened) { self.shake(); LK.setTimeout(function () { self.unwrap(); }, 600); } }; return self; }); var Kazoo = Container.expand(function () { var self = Container.call(this); var kazoo = self.attachAsset('kazoo', { anchorX: 0.5, anchorY: 0.5, rotation: Math.PI / 4 }); self.down = function (x, y, obj) { LK.getSound('kazooSound').play(); tween(kazoo, { scaleX: 1.2, scaleY: 1.2 }, { duration: 200 }); LK.setTimeout(function () { tween(kazoo, { scaleX: 1, scaleY: 1 }, { duration: 200 }); }, 200); }; return self; }); var PartyBlower = Container.expand(function () { var self = Container.call(this); var blower = self.attachAsset('partyBlower', { anchorX: 0.5, anchorY: 0.5 }); var extension = self.attachAsset('blowerExtension', { anchorX: 0, anchorY: 0.5, x: 30, scaleX: 0 }); self.isExtended = false; self.down = function (x, y, obj) { LK.getSound('blowerSound').play(); if (!self.isExtended) { tween(extension, { scaleX: 1 }, { duration: 300 }); self.isExtended = true; } else { tween(extension, { scaleX: 0 }, { duration: 300 }); self.isExtended = false; } }; return self; }); var ToyFrog = Container.expand(function () { var self = Container.call(this); var frog = self.attachAsset('toyFrog', { anchorX: 0.5, anchorY: 0.5 }); var eye1 = self.attachAsset('frogEye', { anchorX: 0.5, anchorY: 0.5, x: -30, y: -20 }); var eye2 = self.attachAsset('frogEye', { anchorX: 0.5, anchorY: 0.5, x: 30, y: -20 }); self.isHopping = false; self.hop = function () { if (self.isHopping) return; self.isHopping = true; LK.getSound('frogHop').play(); tween(self, { y: self.y - 50 }, { duration: 200, easing: tween.easeOut }); LK.setTimeout(function () { tween(self, { y: self.y + 50 }, { duration: 200, easing: tween.easeIn, onFinish: function onFinish() { self.isHopping = false; } }); }, 200); }; self.down = function (x, y, obj) { self.hop(); }; return self; }); var Xylophone = Container.expand(function () { var self = Container.call(this); var base = self.attachAsset('xylophone', { anchorX: 0.5, anchorY: 0.5 }); self.keys = []; var colors = [0xff0000, 0xff8800, 0xffff00, 0x00ff00, 0x0088ff, 0x8800ff]; for (var i = 0; i < 6; i++) { var key = self.attachAsset('xyloKey', { anchorX: 0.5, anchorY: 0.5, x: -125 + i * 50, tint: colors[i] }); key.keyIndex = i; self.keys.push(key); } self.playKey = function (keyIndex) { LK.getSound('xyloNote').play(); var key = self.keys[keyIndex]; tween(key, { y: 20 }, { duration: 100 }); LK.setTimeout(function () { tween(key, { y: 0 }, { duration: 100 }); }, 100); }; self.down = function (x, y, obj) { for (var i = 0; i < self.keys.length; i++) { var key = self.keys[i]; var keyPos = self.toLocal(key.parent.toGlobal(key.position)); if (Math.abs(x - keyPos.x) < 25 && Math.abs(y - keyPos.y) < 50) { self.playKey(i); break; } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xffeecc }); /**** * Game Code ****/ var giftBoxes = []; var toyTypes = ['kazoo', 'partyBlower', 'drum', 'xylophone', 'toyFrog', 'kazoo']; var titleText = new Text2('Party Gift Surprise!', { size: 120, fill: 0xFF4444 }); titleText.anchor.set(0.5, 0); LK.gui.top.addChild(titleText); titleText.y = 50; var instructionText = new Text2('Tap gifts to shake and unwrap them!', { size: 80, fill: 0x444444 }); instructionText.anchor.set(0.5, 0); LK.gui.top.addChild(instructionText); instructionText.y = 200; for (var i = 0; i < 6; i++) { var gift = new GiftBox(); gift.setToyType(toyTypes[i]); var row = Math.floor(i / 3); var col = i % 3; gift.x = 350 + col * 450; gift.y = 800 + row * 450; giftBoxes.push(gift); game.addChild(gift); } game.update = function () { // Game logic updates here if needed };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,361 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Drum = Container.expand(function () {
+ var self = Container.call(this);
+ var drum = self.attachAsset('drum', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var stick1 = self.attachAsset('drumstick', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -60,
+ y: -80,
+ rotation: -Math.PI / 4
+ });
+ var stick2 = self.attachAsset('drumstick', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 60,
+ y: -80,
+ rotation: Math.PI / 4
+ });
+ self.down = function (x, y, obj) {
+ LK.getSound('drumBeat').play();
+ tween(drum, {
+ scaleY: 0.9
+ }, {
+ duration: 100
+ });
+ tween(stick1, {
+ y: -60
+ }, {
+ duration: 100
+ });
+ tween(stick2, {
+ y: -60
+ }, {
+ duration: 100
+ });
+ LK.setTimeout(function () {
+ tween(drum, {
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ tween(stick1, {
+ y: -80
+ }, {
+ duration: 100
+ });
+ tween(stick2, {
+ y: -80
+ }, {
+ duration: 100
+ });
+ }, 100);
+ };
+ return self;
+});
+var GiftBox = Container.expand(function () {
+ var self = Container.call(this);
+ self.isOpened = false;
+ self.toyType = '';
+ self.isShaking = false;
+ var box = self.attachAsset('giftBox', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var ribbonH = self.attachAsset('giftRibbon', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var ribbonV = self.attachAsset('giftRibbon', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ rotation: Math.PI / 2
+ });
+ var bow = self.attachAsset('giftBow', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ y: -120
+ });
+ self.setToyType = function (type) {
+ self.toyType = type;
+ };
+ self.shake = function () {
+ if (self.isOpened || self.isShaking) return;
+ self.isShaking = true;
+ LK.getSound('giftShake').play();
+ tween(self, {
+ rotation: -0.1
+ }, {
+ duration: 100
+ });
+ LK.setTimeout(function () {
+ tween(self, {
+ rotation: 0.1
+ }, {
+ duration: 100
+ });
+ }, 100);
+ LK.setTimeout(function () {
+ tween(self, {
+ rotation: 0
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ self.isShaking = false;
+ }
+ });
+ }, 200);
+ };
+ self.unwrap = function () {
+ if (self.isOpened) return;
+ self.isOpened = true;
+ LK.getSound('unwrap').play();
+ tween(box, {
+ alpha: 0
+ }, {
+ duration: 500
+ });
+ tween(ribbonH, {
+ alpha: 0
+ }, {
+ duration: 500
+ });
+ tween(ribbonV, {
+ alpha: 0
+ }, {
+ duration: 500
+ });
+ tween(bow, {
+ alpha: 0
+ }, {
+ duration: 500,
+ onFinish: function onFinish() {
+ self.createToy();
+ }
+ });
+ };
+ self.createToy = function () {
+ var toy = null;
+ if (self.toyType === 'kazoo') {
+ toy = self.addChild(new Kazoo());
+ } else if (self.toyType === 'partyBlower') {
+ toy = self.addChild(new PartyBlower());
+ } else if (self.toyType === 'drum') {
+ toy = self.addChild(new Drum());
+ } else if (self.toyType === 'xylophone') {
+ toy = self.addChild(new Xylophone());
+ } else if (self.toyType === 'toyFrog') {
+ toy = self.addChild(new ToyFrog());
+ }
+ };
+ self.down = function (x, y, obj) {
+ if (!self.isOpened) {
+ self.shake();
+ LK.setTimeout(function () {
+ self.unwrap();
+ }, 600);
+ }
+ };
+ return self;
+});
+var Kazoo = Container.expand(function () {
+ var self = Container.call(this);
+ var kazoo = self.attachAsset('kazoo', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ rotation: Math.PI / 4
+ });
+ self.down = function (x, y, obj) {
+ LK.getSound('kazooSound').play();
+ tween(kazoo, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 200
+ });
+ LK.setTimeout(function () {
+ tween(kazoo, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200
+ });
+ }, 200);
+ };
+ return self;
+});
+var PartyBlower = Container.expand(function () {
+ var self = Container.call(this);
+ var blower = self.attachAsset('partyBlower', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var extension = self.attachAsset('blowerExtension', {
+ anchorX: 0,
+ anchorY: 0.5,
+ x: 30,
+ scaleX: 0
+ });
+ self.isExtended = false;
+ self.down = function (x, y, obj) {
+ LK.getSound('blowerSound').play();
+ if (!self.isExtended) {
+ tween(extension, {
+ scaleX: 1
+ }, {
+ duration: 300
+ });
+ self.isExtended = true;
+ } else {
+ tween(extension, {
+ scaleX: 0
+ }, {
+ duration: 300
+ });
+ self.isExtended = false;
+ }
+ };
+ return self;
+});
+var ToyFrog = Container.expand(function () {
+ var self = Container.call(this);
+ var frog = self.attachAsset('toyFrog', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var eye1 = self.attachAsset('frogEye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -30,
+ y: -20
+ });
+ var eye2 = self.attachAsset('frogEye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 30,
+ y: -20
+ });
+ self.isHopping = false;
+ self.hop = function () {
+ if (self.isHopping) return;
+ self.isHopping = true;
+ LK.getSound('frogHop').play();
+ tween(self, {
+ y: self.y - 50
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ LK.setTimeout(function () {
+ tween(self, {
+ y: self.y + 50
+ }, {
+ duration: 200,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ self.isHopping = false;
+ }
+ });
+ }, 200);
+ };
+ self.down = function (x, y, obj) {
+ self.hop();
+ };
+ return self;
+});
+var Xylophone = Container.expand(function () {
+ var self = Container.call(this);
+ var base = self.attachAsset('xylophone', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.keys = [];
+ var colors = [0xff0000, 0xff8800, 0xffff00, 0x00ff00, 0x0088ff, 0x8800ff];
+ for (var i = 0; i < 6; i++) {
+ var key = self.attachAsset('xyloKey', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -125 + i * 50,
+ tint: colors[i]
+ });
+ key.keyIndex = i;
+ self.keys.push(key);
+ }
+ self.playKey = function (keyIndex) {
+ LK.getSound('xyloNote').play();
+ var key = self.keys[keyIndex];
+ tween(key, {
+ y: 20
+ }, {
+ duration: 100
+ });
+ LK.setTimeout(function () {
+ tween(key, {
+ y: 0
+ }, {
+ duration: 100
+ });
+ }, 100);
+ };
+ self.down = function (x, y, obj) {
+ for (var i = 0; i < self.keys.length; i++) {
+ var key = self.keys[i];
+ var keyPos = self.toLocal(key.parent.toGlobal(key.position));
+ if (Math.abs(x - keyPos.x) < 25 && Math.abs(y - keyPos.y) < 50) {
+ self.playKey(i);
+ break;
+ }
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xffeecc
+});
+
+/****
+* Game Code
+****/
+var giftBoxes = [];
+var toyTypes = ['kazoo', 'partyBlower', 'drum', 'xylophone', 'toyFrog', 'kazoo'];
+var titleText = new Text2('Party Gift Surprise!', {
+ size: 120,
+ fill: 0xFF4444
+});
+titleText.anchor.set(0.5, 0);
+LK.gui.top.addChild(titleText);
+titleText.y = 50;
+var instructionText = new Text2('Tap gifts to shake and unwrap them!', {
+ size: 80,
+ fill: 0x444444
+});
+instructionText.anchor.set(0.5, 0);
+LK.gui.top.addChild(instructionText);
+instructionText.y = 200;
+for (var i = 0; i < 6; i++) {
+ var gift = new GiftBox();
+ gift.setToyType(toyTypes[i]);
+ var row = Math.floor(i / 3);
+ var col = i % 3;
+ gift.x = 350 + col * 450;
+ gift.y = 800 + row * 450;
+ giftBoxes.push(gift);
+ game.addChild(gift);
+}
+game.update = function () {
+ // Game logic updates here if needed
+};
\ No newline at end of file