User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'toGlobal')' in or related to this line: 'var localPos = game.toLocal(obj.parent.toGlobal(obj.position));' Line Number: 285
User prompt
bahis sistemi koy ve en düşük bahis 10 coin olsun
User prompt
kazanma olasılıgı yarı yarıya olsun
User prompt
paranın bir kısmı mavi bir kısmı siyah olsun
User prompt
yazı kısmını mavi tura kısmını siyah yap
Code edit (1 edits merged)
Please save this source code
User prompt
Yazı Tura - Coin Flip Challenge
Initial prompt
yazı tura oyunu
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Coin = Container.expand(function () { var self = Container.call(this); var coinGraphics = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); self.isFlipping = false; self.result = null; self.flip = function (callback) { if (self.isFlipping) return; self.isFlipping = true; self.result = Math.random() < 0.5 ? 'heads' : 'tails'; // Play flip sound LK.getSound('coinFlip').play(); // Animate coin flip with multiple rotations and scale changes var rotations = 8 + Math.floor(Math.random() * 4); // 8-11 rotations var duration = 2000 + Math.random() * 1000; // 2-3 seconds // First phase: spin up with scale tween(coinGraphics, { rotation: Math.PI * rotations, scaleX: 1.5, scaleY: 0.3 }, { duration: duration * 0.7, easing: tween.easeOut, onFinish: function onFinish() { // Second phase: settle down var finalRotation = self.result === 'heads' ? 0 : Math.PI; tween(coinGraphics, { rotation: finalRotation, scaleX: 1, scaleY: 1 }, { duration: duration * 0.3, easing: tween.easeInOut, onFinish: function onFinish() { self.isFlipping = false; if (callback) callback(self.result); } }); } }); // Vertical bounce animation var originalY = self.y; tween(self, { y: originalY - 200 }, { duration: duration * 0.5, easing: tween.easeOut, onFinish: function onFinish() { tween(self, { y: originalY }, { duration: duration * 0.5, easing: tween.bounceOut }); } }); }; return self; }); var PredictionButton = Container.expand(function (type, color) { var self = Container.call(this); var buttonGraphics = self.attachAsset(type === 'heads' ? 'headsButton' : 'tailsButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2(type === 'heads' ? 'YAZI' : 'TURA', { size: 60, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.type = type; self.isEnabled = true; self.setEnabled = function (enabled) { self.isEnabled = enabled; buttonGraphics.alpha = enabled ? 1 : 0.5; }; self.down = function (x, y, obj) { if (!self.isEnabled) return; // Button press animation tween(buttonGraphics, { scaleX: 0.95, scaleY: 0.95 }, { duration: 100, onFinish: function onFinish() { tween(buttonGraphics, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); if (onPredictionMade) { onPredictionMade(self.type); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ // Game state variables var gameState = 'waiting'; // 'waiting', 'flipping', 'result' var currentPrediction = null; var streak = 0; var maxStreak = 0; var totalFlips = 0; var correctFlips = 0; // Create coin var coin = game.addChild(new Coin()); coin.x = 2048 / 2; coin.y = 2732 / 2 - 200; // Create prediction buttons var headsButton = game.addChild(new PredictionButton('heads')); headsButton.x = 2048 / 2 - 250; headsButton.y = 2732 - 300; var tailsButton = game.addChild(new PredictionButton('tails')); tailsButton.x = 2048 / 2 + 250; tailsButton.y = 2732 - 300; // Create UI elements var scoreText = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); var streakText = new Text2('Streak: 0', { size: 60, fill: 0xFFD700 }); streakText.anchor.set(0, 0); streakText.x = 50; streakText.y = 150; LK.gui.addChild(streakText); var maxStreakText = new Text2('Best: 0', { size: 60, fill: 0xFFD700 }); maxStreakText.anchor.set(1, 0); maxStreakText.x = LK.gui.width - 50; maxStreakText.y = 150; LK.gui.addChild(maxStreakText); var instructionText = new Text2('Predict the coin flip!', { size: 70, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 2048 / 2; instructionText.y = 2732 / 2 + 300; game.addChild(instructionText); var resultText = new Text2('', { size: 100, fill: 0x00FF00 }); resultText.anchor.set(0.5, 0.5); resultText.x = 2048 / 2; resultText.y = 2732 / 2 + 150; game.addChild(resultText); // Prediction callback function onPredictionMade(prediction) { if (gameState !== 'waiting') return; currentPrediction = prediction; gameState = 'flipping'; // Disable buttons during flip headsButton.setEnabled(false); tailsButton.setEnabled(false); // Update instruction instructionText.setText('Flipping...'); resultText.setText(''); // Start coin flip coin.flip(function (result) { gameState = 'result'; totalFlips++; var isCorrect = currentPrediction === result; if (isCorrect) { correctFlips++; streak++; if (streak > maxStreak) { maxStreak = streak; } // Award points (more points for longer streaks) var points = 10 + Math.floor(streak / 5) * 5; LK.setScore(LK.getScore() + points); resultText.setText('CORRECT! +' + points); resultText.tint = 0x00ff00; // Play correct sound LK.getSound('correct').play(); // Flash effect for correct guess LK.effects.flashObject(coin, 0x00ff00, 500); } else { streak = 0; resultText.setText('WRONG!'); resultText.tint = 0xff0000; // Play wrong sound LK.getSound('wrong').play(); // Flash effect for wrong guess LK.effects.flashObject(coin, 0xff0000, 500); } // Update UI updateUI(); // Show result for 2 seconds then reset LK.setTimeout(function () { resetForNextFlip(); }, 2000); }); } function updateUI() { scoreText.setText('Score: ' + LK.getScore()); streakText.setText('Streak: ' + streak); maxStreakText.setText('Best: ' + maxStreak); // Animate streak text when it increases if (streak > 0) { tween(streakText, { scaleX: 1.2, scaleY: 1.2 }, { duration: 200, onFinish: function onFinish() { tween(streakText, { scaleX: 1, scaleY: 1 }, { duration: 200 }); } }); } } function resetForNextFlip() { gameState = 'waiting'; currentPrediction = null; // Re-enable buttons headsButton.setEnabled(true); tailsButton.setEnabled(true); // Reset instruction text instructionText.setText('Predict the coin flip!'); resultText.setText(''); // Check for win condition (high score or long streak) if (LK.getScore() >= 500 || maxStreak >= 20) { LK.showYouWin(); } } // Initialize UI updateUI();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,264 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Coin = Container.expand(function () {
+ var self = Container.call(this);
+ var coinGraphics = self.attachAsset('coin', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.isFlipping = false;
+ self.result = null;
+ self.flip = function (callback) {
+ if (self.isFlipping) return;
+ self.isFlipping = true;
+ self.result = Math.random() < 0.5 ? 'heads' : 'tails';
+ // Play flip sound
+ LK.getSound('coinFlip').play();
+ // Animate coin flip with multiple rotations and scale changes
+ var rotations = 8 + Math.floor(Math.random() * 4); // 8-11 rotations
+ var duration = 2000 + Math.random() * 1000; // 2-3 seconds
+ // First phase: spin up with scale
+ tween(coinGraphics, {
+ rotation: Math.PI * rotations,
+ scaleX: 1.5,
+ scaleY: 0.3
+ }, {
+ duration: duration * 0.7,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ // Second phase: settle down
+ var finalRotation = self.result === 'heads' ? 0 : Math.PI;
+ tween(coinGraphics, {
+ rotation: finalRotation,
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: duration * 0.3,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ self.isFlipping = false;
+ if (callback) callback(self.result);
+ }
+ });
+ }
+ });
+ // Vertical bounce animation
+ var originalY = self.y;
+ tween(self, {
+ y: originalY - 200
+ }, {
+ duration: duration * 0.5,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ y: originalY
+ }, {
+ duration: duration * 0.5,
+ easing: tween.bounceOut
+ });
+ }
+ });
+ };
+ return self;
+});
+var PredictionButton = Container.expand(function (type, color) {
+ var self = Container.call(this);
+ var buttonGraphics = self.attachAsset(type === 'heads' ? 'headsButton' : 'tailsButton', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var buttonText = new Text2(type === 'heads' ? 'YAZI' : 'TURA', {
+ size: 60,
+ fill: 0xFFFFFF
+ });
+ buttonText.anchor.set(0.5, 0.5);
+ self.addChild(buttonText);
+ self.type = type;
+ self.isEnabled = true;
+ self.setEnabled = function (enabled) {
+ self.isEnabled = enabled;
+ buttonGraphics.alpha = enabled ? 1 : 0.5;
+ };
+ self.down = function (x, y, obj) {
+ if (!self.isEnabled) return;
+ // Button press animation
+ tween(buttonGraphics, {
+ scaleX: 0.95,
+ scaleY: 0.95
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(buttonGraphics, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ }
+ });
+ if (onPredictionMade) {
+ onPredictionMade(self.type);
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x1a1a2e
+});
+
+/****
+* Game Code
+****/
+// Game state variables
+var gameState = 'waiting'; // 'waiting', 'flipping', 'result'
+var currentPrediction = null;
+var streak = 0;
+var maxStreak = 0;
+var totalFlips = 0;
+var correctFlips = 0;
+// Create coin
+var coin = game.addChild(new Coin());
+coin.x = 2048 / 2;
+coin.y = 2732 / 2 - 200;
+// Create prediction buttons
+var headsButton = game.addChild(new PredictionButton('heads'));
+headsButton.x = 2048 / 2 - 250;
+headsButton.y = 2732 - 300;
+var tailsButton = game.addChild(new PredictionButton('tails'));
+tailsButton.x = 2048 / 2 + 250;
+tailsButton.y = 2732 - 300;
+// Create UI elements
+var scoreText = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+var streakText = new Text2('Streak: 0', {
+ size: 60,
+ fill: 0xFFD700
+});
+streakText.anchor.set(0, 0);
+streakText.x = 50;
+streakText.y = 150;
+LK.gui.addChild(streakText);
+var maxStreakText = new Text2('Best: 0', {
+ size: 60,
+ fill: 0xFFD700
+});
+maxStreakText.anchor.set(1, 0);
+maxStreakText.x = LK.gui.width - 50;
+maxStreakText.y = 150;
+LK.gui.addChild(maxStreakText);
+var instructionText = new Text2('Predict the coin flip!', {
+ size: 70,
+ fill: 0xFFFFFF
+});
+instructionText.anchor.set(0.5, 0.5);
+instructionText.x = 2048 / 2;
+instructionText.y = 2732 / 2 + 300;
+game.addChild(instructionText);
+var resultText = new Text2('', {
+ size: 100,
+ fill: 0x00FF00
+});
+resultText.anchor.set(0.5, 0.5);
+resultText.x = 2048 / 2;
+resultText.y = 2732 / 2 + 150;
+game.addChild(resultText);
+// Prediction callback
+function onPredictionMade(prediction) {
+ if (gameState !== 'waiting') return;
+ currentPrediction = prediction;
+ gameState = 'flipping';
+ // Disable buttons during flip
+ headsButton.setEnabled(false);
+ tailsButton.setEnabled(false);
+ // Update instruction
+ instructionText.setText('Flipping...');
+ resultText.setText('');
+ // Start coin flip
+ coin.flip(function (result) {
+ gameState = 'result';
+ totalFlips++;
+ var isCorrect = currentPrediction === result;
+ if (isCorrect) {
+ correctFlips++;
+ streak++;
+ if (streak > maxStreak) {
+ maxStreak = streak;
+ }
+ // Award points (more points for longer streaks)
+ var points = 10 + Math.floor(streak / 5) * 5;
+ LK.setScore(LK.getScore() + points);
+ resultText.setText('CORRECT! +' + points);
+ resultText.tint = 0x00ff00;
+ // Play correct sound
+ LK.getSound('correct').play();
+ // Flash effect for correct guess
+ LK.effects.flashObject(coin, 0x00ff00, 500);
+ } else {
+ streak = 0;
+ resultText.setText('WRONG!');
+ resultText.tint = 0xff0000;
+ // Play wrong sound
+ LK.getSound('wrong').play();
+ // Flash effect for wrong guess
+ LK.effects.flashObject(coin, 0xff0000, 500);
+ }
+ // Update UI
+ updateUI();
+ // Show result for 2 seconds then reset
+ LK.setTimeout(function () {
+ resetForNextFlip();
+ }, 2000);
+ });
+}
+function updateUI() {
+ scoreText.setText('Score: ' + LK.getScore());
+ streakText.setText('Streak: ' + streak);
+ maxStreakText.setText('Best: ' + maxStreak);
+ // Animate streak text when it increases
+ if (streak > 0) {
+ tween(streakText, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ tween(streakText, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200
+ });
+ }
+ });
+ }
+}
+function resetForNextFlip() {
+ gameState = 'waiting';
+ currentPrediction = null;
+ // Re-enable buttons
+ headsButton.setEnabled(true);
+ tailsButton.setEnabled(true);
+ // Reset instruction text
+ instructionText.setText('Predict the coin flip!');
+ resultText.setText('');
+ // Check for win condition (high score or long streak)
+ if (LK.getScore() >= 500 || maxStreak >= 20) {
+ LK.showYouWin();
+ }
+}
+// Initialize UI
+updateUI();
\ No newline at end of file