Code edit (1 edits merged)
Please save this source code
User prompt
Fluffy Unicorn Lullaby
Initial prompt
Powerpuff girls: light up fluffy unicorn (2017). Press the hoof to hear chimes of trotting sounds along with the light up horn. Press the hoof quickly 2 times the fluffy unicorn will activate lullaby mode. The unicorn will play success-full chiming sounds while the horn glows and dims to help you fall asleep.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Unicorn = Container.expand(function () { var self = Container.call(this); // Create unicorn parts var body = self.attachAsset('unicornBody', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 50 }); var head = self.attachAsset('unicornHead', { anchorX: 0.5, anchorY: 0.5, x: 0, y: -80 }); var horn = self.attachAsset('unicornHorn', { anchorX: 0.5, anchorY: 1, x: 0, y: -160 }); var mane = self.attachAsset('unicornMane', { anchorX: 0.5, anchorY: 0.5, x: -60, y: -80 }); var tail = self.attachAsset('unicornTail', { anchorX: 0.5, anchorY: 0.5, x: -180, y: 20 }); var leftHoof = self.attachAsset('unicornHoof', { anchorX: 0.5, anchorY: 0.5, x: -60, y: 180 }); var rightHoof = self.attachAsset('unicornHoof', { anchorX: 0.5, anchorY: 0.5, x: 60, y: 180 }); // Store references for animations self.horn = horn; self.leftHoof = leftHoof; self.rightHoof = rightHoof; self.isLullabyMode = false; self.lullabyInterval = null; // Animation methods self.glowHorn = function (bright) { if (bright) { tween(self.horn, { tint: 0xFFFFFF }, { duration: 100 }); } else { tween(self.horn, { tint: 0xFFD700 }, { duration: 300 }); } }; self.pulseHorn = function () { tween(self.horn, { alpha: 0.6 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { if (self.isLullabyMode) { tween(self.horn, { alpha: 1 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { if (self.isLullabyMode) { self.pulseHorn(); } } }); } } }); }; self.startLullabyMode = function () { self.isLullabyMode = true; self.pulseHorn(); // Play lullaby chimes every 2 seconds self.lullabyInterval = LK.setInterval(function () { if (self.isLullabyMode) { LK.getSound('lullabyChime').play(); } }, 2000); }; self.stopLullabyMode = function () { self.isLullabyMode = false; if (self.lullabyInterval) { LK.clearInterval(self.lullabyInterval); self.lullabyInterval = null; } tween.stop(self.horn, { alpha: true }); self.horn.alpha = 1; self.horn.tint = 0xFFD700; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var unicorn = game.addChild(new Unicorn()); unicorn.x = 2048 / 2; unicorn.y = 2732 / 2; // Double tap detection variables var lastTapTime = 0; var doubleTapThreshold = 500; // 500ms for double tap detection // Touch interaction unicorn.down = function (x, y, obj) { var currentTime = Date.now(); var timeDifference = currentTime - lastTapTime; if (timeDifference < doubleTapThreshold) { // Double tap detected if (unicorn.isLullabyMode) { unicorn.stopLullabyMode(); } else { unicorn.startLullabyMode(); } } else { // Single tap if (!unicorn.isLullabyMode) { LK.getSound('trottingChime').play(); unicorn.glowHorn(true); LK.setTimeout(function () { unicorn.glowHorn(false); }, 200); } } lastTapTime = currentTime; }; // Add mode indicator text var modeText = new Text2('Tap the unicorn!', { size: 60, fill: 0xFFFFFF }); modeText.anchor.set(0.5, 0); LK.gui.top.addChild(modeText); // Update mode indicator game.update = function () { if (unicorn.isLullabyMode) { modeText.setText('Lullaby Mode Active ♫'); } else { modeText.setText('Tap the unicorn!'); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,177 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Unicorn = Container.expand(function () {
+ var self = Container.call(this);
+ // Create unicorn parts
+ var body = self.attachAsset('unicornBody', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: 50
+ });
+ var head = self.attachAsset('unicornHead', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: -80
+ });
+ var horn = self.attachAsset('unicornHorn', {
+ anchorX: 0.5,
+ anchorY: 1,
+ x: 0,
+ y: -160
+ });
+ var mane = self.attachAsset('unicornMane', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -60,
+ y: -80
+ });
+ var tail = self.attachAsset('unicornTail', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -180,
+ y: 20
+ });
+ var leftHoof = self.attachAsset('unicornHoof', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -60,
+ y: 180
+ });
+ var rightHoof = self.attachAsset('unicornHoof', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 60,
+ y: 180
+ });
+ // Store references for animations
+ self.horn = horn;
+ self.leftHoof = leftHoof;
+ self.rightHoof = rightHoof;
+ self.isLullabyMode = false;
+ self.lullabyInterval = null;
+ // Animation methods
+ self.glowHorn = function (bright) {
+ if (bright) {
+ tween(self.horn, {
+ tint: 0xFFFFFF
+ }, {
+ duration: 100
+ });
+ } else {
+ tween(self.horn, {
+ tint: 0xFFD700
+ }, {
+ duration: 300
+ });
+ }
+ };
+ self.pulseHorn = function () {
+ tween(self.horn, {
+ alpha: 0.6
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ if (self.isLullabyMode) {
+ tween(self.horn, {
+ alpha: 1
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ if (self.isLullabyMode) {
+ self.pulseHorn();
+ }
+ }
+ });
+ }
+ }
+ });
+ };
+ self.startLullabyMode = function () {
+ self.isLullabyMode = true;
+ self.pulseHorn();
+ // Play lullaby chimes every 2 seconds
+ self.lullabyInterval = LK.setInterval(function () {
+ if (self.isLullabyMode) {
+ LK.getSound('lullabyChime').play();
+ }
+ }, 2000);
+ };
+ self.stopLullabyMode = function () {
+ self.isLullabyMode = false;
+ if (self.lullabyInterval) {
+ LK.clearInterval(self.lullabyInterval);
+ self.lullabyInterval = null;
+ }
+ tween.stop(self.horn, {
+ alpha: true
+ });
+ self.horn.alpha = 1;
+ self.horn.tint = 0xFFD700;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+var unicorn = game.addChild(new Unicorn());
+unicorn.x = 2048 / 2;
+unicorn.y = 2732 / 2;
+// Double tap detection variables
+var lastTapTime = 0;
+var doubleTapThreshold = 500; // 500ms for double tap detection
+// Touch interaction
+unicorn.down = function (x, y, obj) {
+ var currentTime = Date.now();
+ var timeDifference = currentTime - lastTapTime;
+ if (timeDifference < doubleTapThreshold) {
+ // Double tap detected
+ if (unicorn.isLullabyMode) {
+ unicorn.stopLullabyMode();
+ } else {
+ unicorn.startLullabyMode();
+ }
+ } else {
+ // Single tap
+ if (!unicorn.isLullabyMode) {
+ LK.getSound('trottingChime').play();
+ unicorn.glowHorn(true);
+ LK.setTimeout(function () {
+ unicorn.glowHorn(false);
+ }, 200);
+ }
+ }
+ lastTapTime = currentTime;
+};
+// Add mode indicator text
+var modeText = new Text2('Tap the unicorn!', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+modeText.anchor.set(0.5, 0);
+LK.gui.top.addChild(modeText);
+// Update mode indicator
+game.update = function () {
+ if (unicorn.isLullabyMode) {
+ modeText.setText('Lullaby Mode Active ♫');
+ } else {
+ modeText.setText('Tap the unicorn!');
+ }
+};
\ No newline at end of file