/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Sparkle = Container.expand(function () { var self = Container.call(this); var sparkleGraphics = self.attachAsset('sparkle', { anchorX: 0.5, anchorY: 0.5 }); self.lifetime = 60; self.maxLifetime = 60; self.update = function () { self.lifetime--; self.alpha = self.lifetime / self.maxLifetime; self.scaleX = self.scaleY = 0.5 + self.lifetime / self.maxLifetime * 0.5; if (self.lifetime <= 0) { self.destroy(); for (var i = sparkles.length - 1; i >= 0; i--) { if (sparkles[i] === self) { sparkles.splice(i, 1); break; } } } }; return self; }); var SpinWheel = Container.expand(function () { var self = Container.call(this); var wheelBase = self.attachAsset('wheelBase', { anchorX: 0.5, anchorY: 0.5 }); // Create segments var segments = []; var princesses = ['Belle', 'Cinderella', 'Tiana', 'Ariel']; var colors = [0xFFE135, 0x87CEEB, 0x90EE90, 0xDDA0DD]; for (var i = 0; i < 4; i++) { var segment = new WheelSegment(colors[i], princesses[i]); var angle = i * Math.PI * 2 / 4; segment.x = Math.cos(angle) * 120; segment.y = Math.sin(angle) * 120; segment.rotation = angle + Math.PI / 4; segments.push(segment); self.addChild(segment); } self.segments = segments; self.isSpinning = false; self.currentRotation = 0; self.targetRotation = 0; self.spinSpeed = 0; self.spin = function () { if (self.isSpinning) return; self.isSpinning = true; var spins = 5 + Math.random() * 3; // 5-8 full rotations var finalAngle = Math.random() * Math.PI * 2; self.targetRotation = self.currentRotation + spins * Math.PI * 2 + finalAngle; self.spinSpeed = 0.3; LK.getSound('spin').play(); }; self.update = function () { if (self.isSpinning) { var diff = self.targetRotation - self.currentRotation; if (Math.abs(diff) > 0.1) { self.currentRotation += diff * self.spinSpeed; self.rotation = self.currentRotation; self.spinSpeed *= 0.98; // Gradual slowdown } else { self.currentRotation = self.targetRotation; self.rotation = self.currentRotation; self.isSpinning = false; self.onSpinComplete(); } } }; self.onSpinComplete = function () { LK.getSound('stop').play(); // Determine which princess was selected var normalizedAngle = (self.currentRotation % (Math.PI * 2) + Math.PI * 2) % (Math.PI * 2); var segmentIndex = Math.floor((normalizedAngle + Math.PI / 4) / (Math.PI * 2) * 4) % 4; var selectedPrincess = self.segments[segmentIndex].princessName; // Determine if it's correct (Belle and Cinderella are "correct") var isCorrect = selectedPrincess === 'Belle' || selectedPrincess === 'Cinderella'; if (isCorrect) { LK.setScore(LK.getScore() + 100); LK.getSound('correct').play(); resultText.setText('Perfect! ' + selectedPrincess + ' is fabulous!'); resultText.tint = 0x00FF00; } else { LK.setScore(LK.getScore() + 10); LK.getSound('wrong').play(); resultText.setText('Nice try! Got ' + selectedPrincess + '.'); resultText.tint = 0xFFFFFF; } scoreText.setText(LK.getScore()); // Create sparkles for (var i = 0; i < 8; i++) { var sparkle = new Sparkle(); var angle = i / 8 * Math.PI * 2; sparkle.x = self.x + Math.cos(angle) * 350; sparkle.y = self.y + Math.sin(angle) * 350; sparkles.push(sparkle); game.addChild(sparkle); } // Show instruction after a delay LK.setTimeout(function () { instructionText.alpha = 1; }, 2000); }; self.down = function (x, y, obj) { self.spin(); instructionText.alpha = 0; resultText.setText('Spinning...'); resultText.tint = 0xFFFFFF; }; return self; }); var WheelSegment = Container.expand(function (color, princessName) { var self = Container.call(this); var segmentGraphics = self.attachAsset(color === 0xFFE135 ? 'wheelSegment1' : color === 0x87CEEB ? 'wheelSegment2' : color === 0x90EE90 ? 'wheelSegment3' : 'wheelSegment4', { anchorX: 0.5, anchorY: 0.5 }); var princessText = new Text2(princessName, { size: 36, fill: 0xFFFFFF }); princessText.anchor.set(0.5, 0.5); princessText.x = 0; princessText.y = 0; self.addChild(princessText); self.princessName = princessName; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xFF69B4 }); /**** * Game Code ****/ var sparkles = []; // Create wheel var wheel = game.addChild(new SpinWheel()); wheel.x = 2048 / 2; wheel.y = 1366; // Create pointer var pointer = game.addChild(LK.getAsset('pointer', { anchorX: 0.5, anchorY: 0.8 })); pointer.x = 2048 / 2; pointer.y = 1066; // Create title var titleText = new Text2('Princess Costume Wheel', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 400; game.addChild(titleText); // Create instruction text var instructionText = new Text2('Tap the wheel to spin!', { size: 60, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 2048 / 2; instructionText.y = 2200; game.addChild(instructionText); // Create result text var resultText = new Text2('Discover your princess costume!', { size: 50, fill: 0xFFFFFF }); resultText.anchor.set(0.5, 0.5); resultText.x = 2048 / 2; resultText.y = 2400; game.addChild(resultText); // Create score display var scoreText = new Text2('0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); scoreText.y = 150; // Initialize score scoreText.setText(LK.getScore()); game.update = function () { // Handle sparkle animations and cleanup for (var i = sparkles.length - 1; i >= 0; i--) { var sparkle = sparkles[i]; if (sparkle.parent === null) { sparkles.splice(i, 1); } } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,208 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Sparkle = Container.expand(function () {
+ var self = Container.call(this);
+ var sparkleGraphics = self.attachAsset('sparkle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.lifetime = 60;
+ self.maxLifetime = 60;
+ self.update = function () {
+ self.lifetime--;
+ self.alpha = self.lifetime / self.maxLifetime;
+ self.scaleX = self.scaleY = 0.5 + self.lifetime / self.maxLifetime * 0.5;
+ if (self.lifetime <= 0) {
+ self.destroy();
+ for (var i = sparkles.length - 1; i >= 0; i--) {
+ if (sparkles[i] === self) {
+ sparkles.splice(i, 1);
+ break;
+ }
+ }
+ }
+ };
+ return self;
+});
+var SpinWheel = Container.expand(function () {
+ var self = Container.call(this);
+ var wheelBase = self.attachAsset('wheelBase', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Create segments
+ var segments = [];
+ var princesses = ['Belle', 'Cinderella', 'Tiana', 'Ariel'];
+ var colors = [0xFFE135, 0x87CEEB, 0x90EE90, 0xDDA0DD];
+ for (var i = 0; i < 4; i++) {
+ var segment = new WheelSegment(colors[i], princesses[i]);
+ var angle = i * Math.PI * 2 / 4;
+ segment.x = Math.cos(angle) * 120;
+ segment.y = Math.sin(angle) * 120;
+ segment.rotation = angle + Math.PI / 4;
+ segments.push(segment);
+ self.addChild(segment);
+ }
+ self.segments = segments;
+ self.isSpinning = false;
+ self.currentRotation = 0;
+ self.targetRotation = 0;
+ self.spinSpeed = 0;
+ self.spin = function () {
+ if (self.isSpinning) return;
+ self.isSpinning = true;
+ var spins = 5 + Math.random() * 3; // 5-8 full rotations
+ var finalAngle = Math.random() * Math.PI * 2;
+ self.targetRotation = self.currentRotation + spins * Math.PI * 2 + finalAngle;
+ self.spinSpeed = 0.3;
+ LK.getSound('spin').play();
+ };
+ self.update = function () {
+ if (self.isSpinning) {
+ var diff = self.targetRotation - self.currentRotation;
+ if (Math.abs(diff) > 0.1) {
+ self.currentRotation += diff * self.spinSpeed;
+ self.rotation = self.currentRotation;
+ self.spinSpeed *= 0.98; // Gradual slowdown
+ } else {
+ self.currentRotation = self.targetRotation;
+ self.rotation = self.currentRotation;
+ self.isSpinning = false;
+ self.onSpinComplete();
+ }
+ }
+ };
+ self.onSpinComplete = function () {
+ LK.getSound('stop').play();
+ // Determine which princess was selected
+ var normalizedAngle = (self.currentRotation % (Math.PI * 2) + Math.PI * 2) % (Math.PI * 2);
+ var segmentIndex = Math.floor((normalizedAngle + Math.PI / 4) / (Math.PI * 2) * 4) % 4;
+ var selectedPrincess = self.segments[segmentIndex].princessName;
+ // Determine if it's correct (Belle and Cinderella are "correct")
+ var isCorrect = selectedPrincess === 'Belle' || selectedPrincess === 'Cinderella';
+ if (isCorrect) {
+ LK.setScore(LK.getScore() + 100);
+ LK.getSound('correct').play();
+ resultText.setText('Perfect! ' + selectedPrincess + ' is fabulous!');
+ resultText.tint = 0x00FF00;
+ } else {
+ LK.setScore(LK.getScore() + 10);
+ LK.getSound('wrong').play();
+ resultText.setText('Nice try! Got ' + selectedPrincess + '.');
+ resultText.tint = 0xFFFFFF;
+ }
+ scoreText.setText(LK.getScore());
+ // Create sparkles
+ for (var i = 0; i < 8; i++) {
+ var sparkle = new Sparkle();
+ var angle = i / 8 * Math.PI * 2;
+ sparkle.x = self.x + Math.cos(angle) * 350;
+ sparkle.y = self.y + Math.sin(angle) * 350;
+ sparkles.push(sparkle);
+ game.addChild(sparkle);
+ }
+ // Show instruction after a delay
+ LK.setTimeout(function () {
+ instructionText.alpha = 1;
+ }, 2000);
+ };
+ self.down = function (x, y, obj) {
+ self.spin();
+ instructionText.alpha = 0;
+ resultText.setText('Spinning...');
+ resultText.tint = 0xFFFFFF;
+ };
+ return self;
+});
+var WheelSegment = Container.expand(function (color, princessName) {
+ var self = Container.call(this);
+ var segmentGraphics = self.attachAsset(color === 0xFFE135 ? 'wheelSegment1' : color === 0x87CEEB ? 'wheelSegment2' : color === 0x90EE90 ? 'wheelSegment3' : 'wheelSegment4', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var princessText = new Text2(princessName, {
+ size: 36,
+ fill: 0xFFFFFF
+ });
+ princessText.anchor.set(0.5, 0.5);
+ princessText.x = 0;
+ princessText.y = 0;
+ self.addChild(princessText);
+ self.princessName = princessName;
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xFF69B4
+});
+
+/****
+* Game Code
+****/
+var sparkles = [];
+// Create wheel
+var wheel = game.addChild(new SpinWheel());
+wheel.x = 2048 / 2;
+wheel.y = 1366;
+// Create pointer
+var pointer = game.addChild(LK.getAsset('pointer', {
+ anchorX: 0.5,
+ anchorY: 0.8
+}));
+pointer.x = 2048 / 2;
+pointer.y = 1066;
+// Create title
+var titleText = new Text2('Princess Costume Wheel', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+titleText.anchor.set(0.5, 0.5);
+titleText.x = 2048 / 2;
+titleText.y = 400;
+game.addChild(titleText);
+// Create instruction text
+var instructionText = new Text2('Tap the wheel to spin!', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+instructionText.anchor.set(0.5, 0.5);
+instructionText.x = 2048 / 2;
+instructionText.y = 2200;
+game.addChild(instructionText);
+// Create result text
+var resultText = new Text2('Discover your princess costume!', {
+ size: 50,
+ fill: 0xFFFFFF
+});
+resultText.anchor.set(0.5, 0.5);
+resultText.x = 2048 / 2;
+resultText.y = 2400;
+game.addChild(resultText);
+// Create score display
+var scoreText = new Text2('0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+scoreText.y = 150;
+// Initialize score
+scoreText.setText(LK.getScore());
+game.update = function () {
+ // Handle sparkle animations and cleanup
+ for (var i = sparkles.length - 1; i >= 0; i--) {
+ var sparkle = sparkles[i];
+ if (sparkle.parent === null) {
+ sparkles.splice(i, 1);
+ }
+ }
+};
\ No newline at end of file