/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Character = Container.expand(function () { var self = Container.call(this); // Character body var body = self.attachAsset('character', { anchorX: 0.5, anchorY: 1 }); // Curly hair var hair = self.attachAsset('characterHair', { anchorX: 0.5, anchorY: 0.5 }); hair.x = 0; hair.y = -160; // Tears (initially hidden) var leftTear = self.attachAsset('tear', { anchorX: 0.5, anchorY: 0 }); leftTear.x = -30; leftTear.y = -120; leftTear.alpha = 0; var rightTear = self.attachAsset('tear', { anchorX: 0.5, anchorY: 0 }); rightTear.x = 30; rightTear.y = -120; rightTear.alpha = 0; self.isScared = false; self.scareLevel = 0; self.scare = function () { if (self.isScared) return; self.isScared = true; self.scareLevel = Math.random() * 3 + 1; // Random scare level 1-4 // Jump animation tween(self, { y: self.y - 50 }, { duration: 200, easing: tween.easeOut }); tween(self, { y: self.y }, { duration: 300, easing: tween.bounceOut }); // Show tears leftTear.alpha = 1; rightTear.alpha = 1; // Shake animation var originalX = self.x; tween(self, { x: originalX + 10 }, { duration: 100 }); LK.setTimeout(function () { tween(self, { x: originalX - 10 }, { duration: 100 }); }, 100); LK.setTimeout(function () { tween(self, { x: originalX }, { duration: 100 }); }, 200); // Play scream sound LK.getSound('scream').play(); // Return to normal after 3 seconds LK.setTimeout(function () { self.calm(); }, 3000); }; self.calm = function () { self.isScared = false; self.scareLevel = 0; // Hide tears tween(leftTear, { alpha: 0 }, { duration: 1000 }); tween(rightTear, { alpha: 0 }, { duration: 1000 }); }; return self; }); var Television = Container.expand(function () { var self = Container.call(this); // TV frame var frame = self.attachAsset('tvFrame', { anchorX: 0.5, anchorY: 0.5 }); // TV screen var screen = self.attachAsset('tvScreen', { anchorX: 0.5, anchorY: 0.5 }); // Play button (initially visible) var playBtn = self.attachAsset('playButton', { anchorX: 0.5, anchorY: 0.5 }); var playTriangle = self.attachAsset('playTriangle', { anchorX: 0.5, anchorY: 0.5 }); playTriangle.x = 10; // Offset to make it look like a play button // Ginger character (initially hidden) var gingerContainer = new Container(); self.addChild(gingerContainer); gingerContainer.alpha = 0; var gingerFace = gingerContainer.attachAsset('gingerFace', { anchorX: 0.5, anchorY: 0.5 }); var leftEye = gingerContainer.attachAsset('gingerEyes', { anchorX: 0.5, anchorY: 0.5 }); leftEye.x = -80; leftEye.y = -50; var rightEye = gingerContainer.attachAsset('gingerEyes', { anchorX: 0.5, anchorY: 0.5 }); rightEye.x = 80; rightEye.y = -50; var mouth = gingerContainer.attachAsset('gingerMouth', { anchorX: 0.5, anchorY: 0.5 }); mouth.y = 50; self.isPlaying = false; self.down = function (x, y, obj) { if (!self.isPlaying && playBtn.alpha > 0) { self.playScareVideo(); } }; self.playScareVideo = function () { if (self.isPlaying) return; self.isPlaying = true; // Hide play button tween(playBtn, { alpha: 0 }, { duration: 300 }); tween(playTriangle, { alpha: 0 }, { duration: 300 }); // Show Ginger with dramatic entrance gingerContainer.scaleX = 0.1; gingerContainer.scaleY = 0.1; gingerContainer.alpha = 1; tween(gingerContainer, { scaleX: 1.2, scaleY: 1.2 }, { duration: 500, easing: tween.bounceOut }); // Play BOO sound LK.setTimeout(function () { LK.getSound('boo').play(); // Trigger scare on all characters for (var i = 0; i < characters.length; i++) { characters[i].scare(); totalScore += Math.floor(characters[i].scareLevel); } // Update score LK.setScore(totalScore); scoreText.setText('Scares: ' + totalScore); }, 300); // Hide Ginger and show play button again after 2 seconds LK.setTimeout(function () { tween(gingerContainer, { alpha: 0, scaleX: 0.1, scaleY: 0.1 }, { duration: 500 }); LK.setTimeout(function () { tween(playBtn, { alpha: 1 }, { duration: 500 }); tween(playTriangle, { alpha: 1 }, { duration: 500 }); self.isPlaying = false; }, 1000); }, 2000); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2C1810 }); /**** * Game Code ****/ var totalScore = 0; var characters = []; // Create TV var tv = game.addChild(new Television()); tv.x = 2048 / 2; tv.y = 1000; // Create three characters for (var i = 0; i < 3; i++) { var character = game.addChild(new Character()); character.x = 400 + i * 600; character.y = 1800; characters.push(character); } // Score display var scoreText = new Text2('Scares: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Instructions var instructionText = new Text2('Tap the TV to scare the viewers!', { size: 60, fill: 0xFFAA00 }); instructionText.anchor.set(0.5, 0); instructionText.y = 100; LK.gui.top.addChild(instructionText); // Game title var titleText = new Text2('SPOOKY TV SCARE', { size: 100, fill: 0xFF6600 }); titleText.anchor.set(0.5, 0); titleText.y = 200; LK.gui.top.addChild(titleText);
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,267 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Character = Container.expand(function () {
+ var self = Container.call(this);
+ // Character body
+ var body = self.attachAsset('character', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ // Curly hair
+ var hair = self.attachAsset('characterHair', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ hair.x = 0;
+ hair.y = -160;
+ // Tears (initially hidden)
+ var leftTear = self.attachAsset('tear', {
+ anchorX: 0.5,
+ anchorY: 0
+ });
+ leftTear.x = -30;
+ leftTear.y = -120;
+ leftTear.alpha = 0;
+ var rightTear = self.attachAsset('tear', {
+ anchorX: 0.5,
+ anchorY: 0
+ });
+ rightTear.x = 30;
+ rightTear.y = -120;
+ rightTear.alpha = 0;
+ self.isScared = false;
+ self.scareLevel = 0;
+ self.scare = function () {
+ if (self.isScared) return;
+ self.isScared = true;
+ self.scareLevel = Math.random() * 3 + 1; // Random scare level 1-4
+ // Jump animation
+ tween(self, {
+ y: self.y - 50
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ tween(self, {
+ y: self.y
+ }, {
+ duration: 300,
+ easing: tween.bounceOut
+ });
+ // Show tears
+ leftTear.alpha = 1;
+ rightTear.alpha = 1;
+ // Shake animation
+ var originalX = self.x;
+ tween(self, {
+ x: originalX + 10
+ }, {
+ duration: 100
+ });
+ LK.setTimeout(function () {
+ tween(self, {
+ x: originalX - 10
+ }, {
+ duration: 100
+ });
+ }, 100);
+ LK.setTimeout(function () {
+ tween(self, {
+ x: originalX
+ }, {
+ duration: 100
+ });
+ }, 200);
+ // Play scream sound
+ LK.getSound('scream').play();
+ // Return to normal after 3 seconds
+ LK.setTimeout(function () {
+ self.calm();
+ }, 3000);
+ };
+ self.calm = function () {
+ self.isScared = false;
+ self.scareLevel = 0;
+ // Hide tears
+ tween(leftTear, {
+ alpha: 0
+ }, {
+ duration: 1000
+ });
+ tween(rightTear, {
+ alpha: 0
+ }, {
+ duration: 1000
+ });
+ };
+ return self;
+});
+var Television = Container.expand(function () {
+ var self = Container.call(this);
+ // TV frame
+ var frame = self.attachAsset('tvFrame', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // TV screen
+ var screen = self.attachAsset('tvScreen', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Play button (initially visible)
+ var playBtn = self.attachAsset('playButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var playTriangle = self.attachAsset('playTriangle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ playTriangle.x = 10; // Offset to make it look like a play button
+ // Ginger character (initially hidden)
+ var gingerContainer = new Container();
+ self.addChild(gingerContainer);
+ gingerContainer.alpha = 0;
+ var gingerFace = gingerContainer.attachAsset('gingerFace', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var leftEye = gingerContainer.attachAsset('gingerEyes', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ leftEye.x = -80;
+ leftEye.y = -50;
+ var rightEye = gingerContainer.attachAsset('gingerEyes', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ rightEye.x = 80;
+ rightEye.y = -50;
+ var mouth = gingerContainer.attachAsset('gingerMouth', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ mouth.y = 50;
+ self.isPlaying = false;
+ self.down = function (x, y, obj) {
+ if (!self.isPlaying && playBtn.alpha > 0) {
+ self.playScareVideo();
+ }
+ };
+ self.playScareVideo = function () {
+ if (self.isPlaying) return;
+ self.isPlaying = true;
+ // Hide play button
+ tween(playBtn, {
+ alpha: 0
+ }, {
+ duration: 300
+ });
+ tween(playTriangle, {
+ alpha: 0
+ }, {
+ duration: 300
+ });
+ // Show Ginger with dramatic entrance
+ gingerContainer.scaleX = 0.1;
+ gingerContainer.scaleY = 0.1;
+ gingerContainer.alpha = 1;
+ tween(gingerContainer, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 500,
+ easing: tween.bounceOut
+ });
+ // Play BOO sound
+ LK.setTimeout(function () {
+ LK.getSound('boo').play();
+ // Trigger scare on all characters
+ for (var i = 0; i < characters.length; i++) {
+ characters[i].scare();
+ totalScore += Math.floor(characters[i].scareLevel);
+ }
+ // Update score
+ LK.setScore(totalScore);
+ scoreText.setText('Scares: ' + totalScore);
+ }, 300);
+ // Hide Ginger and show play button again after 2 seconds
+ LK.setTimeout(function () {
+ tween(gingerContainer, {
+ alpha: 0,
+ scaleX: 0.1,
+ scaleY: 0.1
+ }, {
+ duration: 500
+ });
+ LK.setTimeout(function () {
+ tween(playBtn, {
+ alpha: 1
+ }, {
+ duration: 500
+ });
+ tween(playTriangle, {
+ alpha: 1
+ }, {
+ duration: 500
+ });
+ self.isPlaying = false;
+ }, 1000);
+ }, 2000);
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x2C1810
+});
+
+/****
+* Game Code
+****/
+var totalScore = 0;
+var characters = [];
+// Create TV
+var tv = game.addChild(new Television());
+tv.x = 2048 / 2;
+tv.y = 1000;
+// Create three characters
+for (var i = 0; i < 3; i++) {
+ var character = game.addChild(new Character());
+ character.x = 400 + i * 600;
+ character.y = 1800;
+ characters.push(character);
+}
+// Score display
+var scoreText = new Text2('Scares: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+// Instructions
+var instructionText = new Text2('Tap the TV to scare the viewers!', {
+ size: 60,
+ fill: 0xFFAA00
+});
+instructionText.anchor.set(0.5, 0);
+instructionText.y = 100;
+LK.gui.top.addChild(instructionText);
+// Game title
+var titleText = new Text2('SPOOKY TV SCARE', {
+ size: 100,
+ fill: 0xFF6600
+});
+titleText.anchor.set(0.5, 0);
+titleText.y = 200;
+LK.gui.top.addChild(titleText);
\ No newline at end of file