Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff Girls Interactive Car Gift
Initial prompt
Toca interactive car (2012). Open the gift to see what’s inside, a new car for the powerpuff girls! Tap on the horn to honk, when the powerpuff girls go near it the music plays too, and tap the engine to make sounds.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Car = Container.expand(function () { var self = Container.call(this); var carBody = self.attachAsset('car', { anchorX: 0.5, anchorY: 0.5 }); var horn = self.attachAsset('carHorn', { anchorX: 0.5, anchorY: 0.5, x: -200, y: -80 }); var engine = self.attachAsset('carEngine', { anchorX: 0.5, anchorY: 0.5, x: 200, y: 0 }); var leftDoor = self.attachAsset('carDoor', { anchorX: 0.5, anchorY: 0.5, x: -100, y: 0 }); var rightDoor = self.attachAsset('carDoor', { anchorX: 0.5, anchorY: 0.5, x: 100, y: 0 }); self.hornPressed = function () { LK.getSound('hornHonk').play(); tween(horn, { scaleX: 1.2, scaleY: 1.2 }, { duration: 200, onFinish: function onFinish() { tween(horn, { scaleX: 1, scaleY: 1 }, { duration: 200 }); } }); }; self.enginePressed = function () { var sounds = ['engineStart', 'engineIdle']; var randomSound = sounds[Math.floor(Math.random() * sounds.length)]; LK.getSound(randomSound).play(); tween(engine, { tint: 0xff4500 }, { duration: 300, onFinish: function onFinish() { tween(engine, { tint: 0xffffff }, { duration: 300 }); } }); }; self.doorPressed = function () { LK.getSound('doorOpen').play(); tween(leftDoor, { x: -150 }, { duration: 400, onFinish: function onFinish() { tween(leftDoor, { x: -100 }, { duration: 400 }); } }); }; self.down = function (x, y, obj) { var localPos = self.toLocal(obj.position); // Check if horn was pressed if (Math.abs(localPos.x - horn.x) < 40 && Math.abs(localPos.y - horn.y) < 40) { self.hornPressed(); } // Check if engine was pressed else if (Math.abs(localPos.x - engine.x) < 75 && Math.abs(localPos.y - engine.y) < 50) { self.enginePressed(); } // Check if door was pressed else if (Math.abs(localPos.x - leftDoor.x) < 50 && Math.abs(localPos.y - leftDoor.y) < 100) { self.doorPressed(); } }; return self; }); var GiftBox = Container.expand(function () { var self = Container.call(this); var giftBox = 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 }); self.isUnwrapped = false; self.unwrap = function () { if (self.isUnwrapped) return; self.isUnwrapped = true; LK.getSound('unwrap').play(); // Create sparkle effect for (var i = 0; i < 8; i++) { var sparkle = game.addChild(LK.getAsset('sparkle', { anchorX: 0.5, anchorY: 0.5, x: self.x + (Math.random() - 0.5) * 300, y: self.y + (Math.random() - 0.5) * 300 })); tween(sparkle, { alpha: 0, scaleX: 2, scaleY: 2 }, { duration: 1000, onFinish: function onFinish() { sparkle.destroy(); } }); } // Animate gift box disappearing tween(self, { alpha: 0, scaleX: 0.1, scaleY: 0.1 }, { duration: 800, onFinish: function onFinish() { self.destroy(); showCar(); } }); }; self.down = function (x, y, obj) { self.unwrap(); }; return self; }); var PowerpuffGirl = Container.expand(function (color) { var self = Container.call(this); var girl = self.attachAsset(color, { anchorX: 0.5, anchorY: 0.5 }); self.lastNearCar = false; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ var giftBox = null; var car = null; var blossom = null; var bubbles = null; var buttercup = null; var draggedGirl = null; var musicPlaying = false; // Initialize gift box giftBox = game.addChild(new GiftBox()); giftBox.x = 1024; giftBox.y = 1000; function showCar() { car = game.addChild(new Car()); car.x = 1024; car.y = 1000; car.alpha = 0; // Animate car appearing tween(car, { alpha: 1, scaleX: 1.2, scaleY: 1.2 }, { duration: 1000, onFinish: function onFinish() { tween(car, { scaleX: 1, scaleY: 1 }, { duration: 300 }); } }); // Create Powerpuff Girls blossom = game.addChild(new PowerpuffGirl('blossom')); blossom.x = 300; blossom.y = 1400; bubbles = game.addChild(new PowerpuffGirl('bubbles')); bubbles.x = 1024; bubbles.y = 1400; buttercup = game.addChild(new PowerpuffGirl('buttercup')); buttercup.x = 1700; buttercup.y = 1400; } function checkMusicTrigger() { if (!car || !blossom || !bubbles || !buttercup) return; var carPos = { x: car.x, y: car.y }; var girls = [blossom, bubbles, buttercup]; var anyGirlNear = false; for (var i = 0; i < girls.length; i++) { var girl = girls[i]; var distance = Math.sqrt(Math.pow(girl.x - carPos.x, 2) + Math.pow(girl.y - carPos.y, 2)); if (distance < 400) { anyGirlNear = true; break; } } if (anyGirlNear && !musicPlaying) { LK.playMusic('powerpuffTheme'); musicPlaying = true; } else if (!anyGirlNear && musicPlaying) { LK.stopMusic(); musicPlaying = false; } } game.down = function (x, y, obj) { if (!car) return; var girls = [blossom, bubbles, buttercup]; for (var i = 0; i < girls.length; i++) { var girl = girls[i]; if (girl && Math.abs(x - girl.x) < 60 && Math.abs(y - girl.y) < 60) { draggedGirl = girl; break; } } }; game.move = function (x, y, obj) { if (draggedGirl) { draggedGirl.x = x; draggedGirl.y = y; } }; game.up = function (x, y, obj) { draggedGirl = null; }; game.update = function () { checkMusicTrigger(); };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,271 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Car = Container.expand(function () {
+ var self = Container.call(this);
+ var carBody = self.attachAsset('car', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var horn = self.attachAsset('carHorn', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -200,
+ y: -80
+ });
+ var engine = self.attachAsset('carEngine', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 200,
+ y: 0
+ });
+ var leftDoor = self.attachAsset('carDoor', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -100,
+ y: 0
+ });
+ var rightDoor = self.attachAsset('carDoor', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 100,
+ y: 0
+ });
+ self.hornPressed = function () {
+ LK.getSound('hornHonk').play();
+ tween(horn, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ tween(horn, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200
+ });
+ }
+ });
+ };
+ self.enginePressed = function () {
+ var sounds = ['engineStart', 'engineIdle'];
+ var randomSound = sounds[Math.floor(Math.random() * sounds.length)];
+ LK.getSound(randomSound).play();
+ tween(engine, {
+ tint: 0xff4500
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ tween(engine, {
+ tint: 0xffffff
+ }, {
+ duration: 300
+ });
+ }
+ });
+ };
+ self.doorPressed = function () {
+ LK.getSound('doorOpen').play();
+ tween(leftDoor, {
+ x: -150
+ }, {
+ duration: 400,
+ onFinish: function onFinish() {
+ tween(leftDoor, {
+ x: -100
+ }, {
+ duration: 400
+ });
+ }
+ });
+ };
+ self.down = function (x, y, obj) {
+ var localPos = self.toLocal(obj.position);
+ // Check if horn was pressed
+ if (Math.abs(localPos.x - horn.x) < 40 && Math.abs(localPos.y - horn.y) < 40) {
+ self.hornPressed();
+ }
+ // Check if engine was pressed
+ else if (Math.abs(localPos.x - engine.x) < 75 && Math.abs(localPos.y - engine.y) < 50) {
+ self.enginePressed();
+ }
+ // Check if door was pressed
+ else if (Math.abs(localPos.x - leftDoor.x) < 50 && Math.abs(localPos.y - leftDoor.y) < 100) {
+ self.doorPressed();
+ }
+ };
+ return self;
+});
+var GiftBox = Container.expand(function () {
+ var self = Container.call(this);
+ var giftBox = 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
+ });
+ self.isUnwrapped = false;
+ self.unwrap = function () {
+ if (self.isUnwrapped) return;
+ self.isUnwrapped = true;
+ LK.getSound('unwrap').play();
+ // Create sparkle effect
+ for (var i = 0; i < 8; i++) {
+ var sparkle = game.addChild(LK.getAsset('sparkle', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: self.x + (Math.random() - 0.5) * 300,
+ y: self.y + (Math.random() - 0.5) * 300
+ }));
+ tween(sparkle, {
+ alpha: 0,
+ scaleX: 2,
+ scaleY: 2
+ }, {
+ duration: 1000,
+ onFinish: function onFinish() {
+ sparkle.destroy();
+ }
+ });
+ }
+ // Animate gift box disappearing
+ tween(self, {
+ alpha: 0,
+ scaleX: 0.1,
+ scaleY: 0.1
+ }, {
+ duration: 800,
+ onFinish: function onFinish() {
+ self.destroy();
+ showCar();
+ }
+ });
+ };
+ self.down = function (x, y, obj) {
+ self.unwrap();
+ };
+ return self;
+});
+var PowerpuffGirl = Container.expand(function (color) {
+ var self = Container.call(this);
+ var girl = self.attachAsset(color, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.lastNearCar = false;
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87ceeb
+});
+
+/****
+* Game Code
+****/
+var giftBox = null;
+var car = null;
+var blossom = null;
+var bubbles = null;
+var buttercup = null;
+var draggedGirl = null;
+var musicPlaying = false;
+// Initialize gift box
+giftBox = game.addChild(new GiftBox());
+giftBox.x = 1024;
+giftBox.y = 1000;
+function showCar() {
+ car = game.addChild(new Car());
+ car.x = 1024;
+ car.y = 1000;
+ car.alpha = 0;
+ // Animate car appearing
+ tween(car, {
+ alpha: 1,
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 1000,
+ onFinish: function onFinish() {
+ tween(car, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 300
+ });
+ }
+ });
+ // Create Powerpuff Girls
+ blossom = game.addChild(new PowerpuffGirl('blossom'));
+ blossom.x = 300;
+ blossom.y = 1400;
+ bubbles = game.addChild(new PowerpuffGirl('bubbles'));
+ bubbles.x = 1024;
+ bubbles.y = 1400;
+ buttercup = game.addChild(new PowerpuffGirl('buttercup'));
+ buttercup.x = 1700;
+ buttercup.y = 1400;
+}
+function checkMusicTrigger() {
+ if (!car || !blossom || !bubbles || !buttercup) return;
+ var carPos = {
+ x: car.x,
+ y: car.y
+ };
+ var girls = [blossom, bubbles, buttercup];
+ var anyGirlNear = false;
+ for (var i = 0; i < girls.length; i++) {
+ var girl = girls[i];
+ var distance = Math.sqrt(Math.pow(girl.x - carPos.x, 2) + Math.pow(girl.y - carPos.y, 2));
+ if (distance < 400) {
+ anyGirlNear = true;
+ break;
+ }
+ }
+ if (anyGirlNear && !musicPlaying) {
+ LK.playMusic('powerpuffTheme');
+ musicPlaying = true;
+ } else if (!anyGirlNear && musicPlaying) {
+ LK.stopMusic();
+ musicPlaying = false;
+ }
+}
+game.down = function (x, y, obj) {
+ if (!car) return;
+ var girls = [blossom, bubbles, buttercup];
+ for (var i = 0; i < girls.length; i++) {
+ var girl = girls[i];
+ if (girl && Math.abs(x - girl.x) < 60 && Math.abs(y - girl.y) < 60) {
+ draggedGirl = girl;
+ break;
+ }
+ }
+};
+game.move = function (x, y, obj) {
+ if (draggedGirl) {
+ draggedGirl.x = x;
+ draggedGirl.y = y;
+ }
+};
+game.up = function (x, y, obj) {
+ draggedGirl = null;
+};
+game.update = function () {
+ checkMusicTrigger();
+};
\ No newline at end of file