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 };
/****
* 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
};