User prompt
Put a Logo on the Kemal Dev text
User prompt
Change your font style to 3D style
User prompt
put a song in the background
User prompt
average the score text and move it down a little
User prompt
take down the score text
User prompt
let the game be in english
User prompt
Move the switch button from English language support and Turkish language support to the top
User prompt
Switching between English and Turkish language support
User prompt
Add Turkish language support to the game
User prompt
Enlarge small text in menu
User prompt
Please fix the bug: 'Timeout.tick error: instructText is not defined' in or related to this line: 'tween(instructText, {' Line Number: 603 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Enlarge small text in menu
User prompt
Texts in the menu should move slowly left and right ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
BEAUTIFYING GRAPHICS
User prompt
WRITE KEMALDEV IN BIG BEFORE THE MENU
User prompt
Don't show the game behind the menu
User prompt
clear difficulty selection
User prompt
move the difficulty selection buttons down to the bottom ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Set the difficulty to low
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'toGlobal')' in or related to this line: 'var localPos = self.toLocal(obj.parent.toGlobal(obj.position));' Line Number: 318
User prompt
Make the background in the menu black
User prompt
have difficulty selection in menu Easy Medium IMPOSSIBLE ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
put start menu ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Set a 0.5 second cooldown for rng casting
User prompt
Set a 1 second cooldown for rng casting
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var NumberDisplay = Container.expand(function () { var self = Container.call(this); var bg = self.attachAsset('numberDisplay', { anchorX: 0.5, anchorY: 0.5 }); var numberText = new Text2('?', { size: 80, fill: 0xFFFFFF }); numberText.anchor.set(0.5, 0.5); self.addChild(numberText); self.currentNumber = 0; self.generateNumber = function () { self.currentNumber = Math.floor(Math.random() * 100) + 1; numberText.setText(self.currentNumber.toString()); // Enhanced pulse with color flash tween(self, { scaleX: 1.3, scaleY: 1.3 }, { duration: 200, easing: tween.easeOut }); tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 300, easing: tween.bounceOut }); // Color flash effect tween(bg, { tint: 0xffffff }, { duration: 100, easing: tween.easeOut }); tween(bg, { tint: 0x4a90e2 }, { duration: 200, easing: tween.easeIn }); }; return self; }); var Particle = Container.expand(function () { var self = Container.call(this); var particle = self.attachAsset('numberDisplay', { anchorX: 0.5, anchorY: 0.5 }); self.vx = 0; self.vy = 0; self.life = 1.0; self.decay = 0.02; self.init = function (color, size) { particle.tint = color; self.scaleX = size; self.scaleY = size; self.alpha = 1; // Random velocity self.vx = (Math.random() - 0.5) * 10; self.vy = (Math.random() - 0.5) * 10 - 5; }; self.update = function () { self.x += self.vx; self.y += self.vy; self.vy += 0.3; // gravity self.life -= self.decay; self.alpha = self.life; self.scaleX *= 0.98; self.scaleY *= 0.98; if (self.life <= 0) { self.destroy(); } }; return self; }); var ParticleSystem = Container.expand(function () { var self = Container.call(this); var particles = []; self.burst = function (x, y, color, count) { for (var i = 0; i < count; i++) { var particle = new Particle(); particle.x = x; particle.y = y; particle.init(color, Math.random() * 0.3 + 0.2); particles.push(particle); self.addChild(particle); } }; self.update = function () { for (var i = particles.length - 1; i >= 0; i--) { if (particles[i].life <= 0) { particles.splice(i, 1); } } }; return self; }); var StreakDisplay = Container.expand(function () { var self = Container.call(this); var bg = self.attachAsset('streakBg', { anchorX: 0.5, anchorY: 0.5 }); var streakText = new Text2('Streak: 0', { size: 30, fill: 0x000000 }); streakText.anchor.set(0.5, 0.5); self.addChild(streakText); self.currentStreak = 0; self.updateStreak = function (streak) { self.currentStreak = streak; streakText.setText('Streak: ' + streak); if (streak > 0) { // Flash animation for streak tween(bg, { tint: 0xffffff }, { duration: 200 }); tween(bg, { tint: 0xffd700 }, { duration: 200 }); } }; return self; }); var TargetPattern = Container.expand(function () { var self = Container.call(this); var bg = self.attachAsset('targetPattern', { anchorX: 0.5, anchorY: 0.5 }); var patternText = new Text2('Target: 50-60', { size: 40, fill: 0xFFFFFF }); patternText.anchor.set(0.5, 0.5); self.addChild(patternText); self.targetMin = 50; self.targetMax = 60; self.points = 10; self.generatePattern = function (difficulty) { // Slide out animation tween(self, { scaleX: 0.8, scaleY: 0.8, alpha: 0.5 }, { duration: 150, easing: tween.easeIn, onFinish: function onFinish() { var patternType = Math.floor(Math.random() * 3); if (patternType === 0) { // Range pattern var center = Math.floor(Math.random() * 80) + 10; var range = Math.max(5, 20 - difficulty * 2); self.targetMin = center - Math.floor(range / 2); self.targetMax = center + Math.floor(range / 2); patternText.setText('Target: ' + self.targetMin + '-' + self.targetMax); self.points = 10 + difficulty * 2; } else if (patternType === 1) { // Even/Odd pattern var isEven = Math.random() < 0.5; self.targetMin = isEven ? 2 : 1; self.targetMax = isEven ? 100 : 99; patternText.setText(isEven ? 'Target: EVEN' : 'Target: ODD'); self.points = 5 + difficulty; } else { // Divisible pattern var divisor = [3, 5, 7, 11][Math.floor(Math.random() * 4)]; self.targetMin = divisor; self.targetMax = divisor; patternText.setText('Target: ÷' + divisor); self.points = 15 + difficulty * 3; } // Slide in animation tween(self, { scaleX: 1.0, scaleY: 1.0, alpha: 1.0 }, { duration: 300, easing: tween.bounceOut }); } }); }; self.checkMatch = function (number) { if (self.targetMin === self.targetMax) { // Divisible pattern return number % self.targetMin === 0; } else if (self.targetMin === 1 || self.targetMin === 2) { // Even/Odd pattern return number % 2 === 0 && self.targetMin === 2 || number % 2 === 1 && self.targetMin === 1; } else { // Range pattern return number >= self.targetMin && number <= self.targetMax; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ // Game state variables var gameTime = 60000; // 60 seconds var timeRemaining = gameTime; var difficulty = 1; var currentStreak = 0; var multiplier = 1; var gameActive = true; var shakeIntensity = 0; var shakeDecay = 0.9; var lastRngTime = 0; var rngCooldown = 500; // 0.5 second cooldown in milliseconds // Particle system var particleSystem = game.addChild(new ParticleSystem()); // UI Elements var scoreTxt = new Text2('0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); scoreTxt.alpha = 0; scoreTxt.y = -50; LK.gui.top.addChild(scoreTxt); // Animate score entrance tween(scoreTxt, { alpha: 1, y: 0 }, { duration: 600, easing: tween.bounceOut }); var timeTxt = new Text2('60', { size: 50, fill: 0xFF6B6B }); timeTxt.anchor.set(1, 0); timeTxt.x = -20; timeTxt.y = 20; timeTxt.alpha = 0; timeTxt.scaleX = 0; timeTxt.scaleY = 0; LK.gui.topRight.addChild(timeTxt); // Animate timer entrance LK.setTimeout(function () { tween(timeTxt, { alpha: 1, scaleX: 1, scaleY: 1 }, { duration: 500, easing: tween.bounceOut }); }, 200); var difficultyTxt = new Text2('Level 1', { size: 40, fill: 0x4ECDC4 }); difficultyTxt.anchor.set(0, 0); difficultyTxt.x = 20; difficultyTxt.y = 120; difficultyTxt.alpha = 0; difficultyTxt.x = -100; LK.gui.topLeft.addChild(difficultyTxt); // Animate difficulty entrance LK.setTimeout(function () { tween(difficultyTxt, { alpha: 1, x: 20 }, { duration: 700, easing: tween.easeOut }); }, 400); // Game objects var tapArea = game.attachAsset('tapArea', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0 }); // Fade in tap area tween(tapArea, { alpha: 0.1 }, { duration: 1000, easing: tween.easeIn }); var numberDisplay = game.addChild(new NumberDisplay()); numberDisplay.x = 1024; numberDisplay.y = 800; numberDisplay.alpha = 0; numberDisplay.scaleX = 0.3; numberDisplay.scaleY = 0.3; // Animate number display entrance LK.setTimeout(function () { tween(numberDisplay, { alpha: 1, scaleX: 1, scaleY: 1 }, { duration: 800, easing: tween.bounceOut }); }, 600); var targetPattern = game.addChild(new TargetPattern()); targetPattern.x = 1024; targetPattern.y = 400; targetPattern.alpha = 0; targetPattern.y = 300; // Animate target pattern entrance LK.setTimeout(function () { tween(targetPattern, { alpha: 1, y: 400 }, { duration: 600, easing: tween.easeOut }); }, 800); var streakDisplay = game.addChild(new StreakDisplay()); streakDisplay.x = 1024; streakDisplay.y = 1200; streakDisplay.alpha = 0; streakDisplay.y = 1300; // Animate streak display entrance LK.setTimeout(function () { tween(streakDisplay, { alpha: 1, y: 1200 }, { duration: 500, easing: tween.easeOut }); }, 1000); // Initialize first pattern after animations LK.setTimeout(function () { targetPattern.generatePattern(difficulty); }, 1200); // Instructions var instructionText = new Text2('TAP TO GENERATE NUMBERS!', { size: 50, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0.5); instructionText.x = 1024; instructionText.y = 600; instructionText.alpha = 0; game.addChild(instructionText); // Entrance animation for instructions tween(instructionText, { alpha: 1, y: 580 }, { duration: 800, easing: tween.bounceOut }); // Floating animation var _floatInstructions = function floatInstructions() { tween(instructionText, { y: 620 }, { duration: 2000, easing: tween.easeInOut, onFinish: function onFinish() { tween(instructionText, { y: 580 }, { duration: 2000, easing: tween.easeInOut, onFinish: _floatInstructions }); } }); }; LK.setTimeout(_floatInstructions, 800); // Fade out instructions after 3 seconds LK.setTimeout(function () { tween(instructionText, { alpha: 0, y: 550 }, { duration: 1000, easing: tween.easeIn }); }, 3000); // Game timer var gameTimer = LK.setInterval(function () { if (!gameActive) return; timeRemaining -= 100; var seconds = Math.ceil(timeRemaining / 1000); timeTxt.setText(seconds.toString()); // Dynamic background color based on time remaining if (timeRemaining < 10000) { // Gradually shift to red as time runs out var urgency = 1 - timeRemaining / 10000; var red = Math.floor(26 + urgency * 100); var green = Math.floor(26 * (1 - urgency)); var blue = Math.floor(46 * (1 - urgency)); game.setBackgroundColor(red << 16 | green << 8 | blue); } else if (currentStreak > 5) { // Golden background for high streaks game.setBackgroundColor(0x2a1810); } else { // Default background game.setBackgroundColor(0x1a1a2e); } if (timeRemaining <= 0) { gameActive = false; LK.clearInterval(gameTimer); if (LK.getScore() >= 500) { LK.showYouWin(); } else { LK.showGameOver(); } } }, 100); // Difficulty progression var difficultyTimer = LK.setInterval(function () { if (!gameActive) return; difficulty = Math.min(10, Math.floor((gameTime - timeRemaining) / 10000) + 1); difficultyTxt.setText('Level ' + difficulty); // Generate new pattern every 5 seconds if ((gameTime - timeRemaining) % 5000 < 100) { targetPattern.generatePattern(difficulty); } }, 100); // Touch handling game.down = function (x, y, obj) { if (!gameActive) return; // Check cooldown var currentTime = Date.now(); if (currentTime - lastRngTime < rngCooldown) { return; // Still in cooldown, ignore tap } lastRngTime = currentTime; numberDisplay.generateNumber(); LK.getSound('numberGenerate').play(); // Check for match if (targetPattern.checkMatch(numberDisplay.currentNumber)) { // Match found! currentStreak++; multiplier = Math.min(5, 1 + Math.floor(currentStreak / 3)); var points = targetPattern.points * multiplier; LK.setScore(LK.getScore() + points); scoreTxt.setText(LK.getScore().toString()); // Screen shake for big matches if (multiplier > 2) { shakeIntensity = Math.min(15, multiplier * 3); } // Particle burst for matches var particleColor = multiplier > 3 ? 0xFFD700 : 0x00FF00; var particleCount = Math.min(20, 5 + multiplier * 2); particleSystem.burst(numberDisplay.x, numberDisplay.y, particleColor, particleCount); // Enhanced score animation tween(scoreTxt, { scaleX: 1.3 + multiplier * 0.1, scaleY: 1.3 + multiplier * 0.1 }, { duration: 100, easing: tween.easeOut, onFinish: function onFinish() { tween(scoreTxt, { scaleX: 1, scaleY: 1 }, { duration: 300, easing: tween.bounceOut }); } }); // Enhanced number display celebration tween(numberDisplay, { rotation: Math.PI * 2 }, { duration: 600, easing: tween.easeOut }); streakDisplay.updateStreak(currentStreak); // Visual feedback LK.effects.flashObject(targetPattern, 0x00ff00, 500); if (currentStreak > 1) { LK.getSound('streak').play(); // Extra particles for streak particleSystem.burst(streakDisplay.x, streakDisplay.y, 0xFFD700, 8); } else { LK.getSound('match').play(); } // Generate new pattern targetPattern.generatePattern(difficulty); } else { // No match, reset streak if (currentStreak > 0) { currentStreak = 0; multiplier = 1; streakDisplay.updateStreak(currentStreak); // Flash red for missed match LK.effects.flashObject(numberDisplay, 0xff0000, 300); // Red particles for miss particleSystem.burst(numberDisplay.x, numberDisplay.y, 0xFF0000, 5); } } }; // Multiplier display var multiplierTxt = new Text2('x1', { size: 40, fill: 0xFFD700 }); multiplierTxt.anchor.set(0.5, 1); multiplierTxt.alpha = 0; multiplierTxt.y = 50; LK.gui.bottom.addChild(multiplierTxt); // Animate multiplier entrance LK.setTimeout(function () { tween(multiplierTxt, { alpha: 1, y: 0 }, { duration: 500, easing: tween.bounceOut }); }, 1200); game.update = function () { if (!gameActive) return; // Screen shake effect if (shakeIntensity > 0) { game.x = (Math.random() - 0.5) * shakeIntensity; game.y = (Math.random() - 0.5) * shakeIntensity; shakeIntensity *= shakeDecay; if (shakeIntensity < 0.5) { shakeIntensity = 0; game.x = 0; game.y = 0; } } // Update multiplier display multiplierTxt.setText('x' + multiplier); // Enhanced pulse multiplier when active if (multiplier > 1) { var pulse = Math.sin(LK.ticks * 0.15) * 0.15 + 1; multiplierTxt.scaleX = pulse; multiplierTxt.scaleY = pulse; // Color shift for high multipliers if (multiplier > 3) { var colorShift = Math.sin(LK.ticks * 0.1) * 0.5 + 0.5; multiplierTxt.tint = 0xFFFFFF * colorShift + 0xFF0000 * (1 - colorShift); } } else { multiplierTxt.scaleX = 1; multiplierTxt.scaleY = 1; multiplierTxt.tint = 0xFFD700; } // Enhanced time warning effect if (timeRemaining < 10000) { var flash = Math.sin(LK.ticks * 0.3) * 0.3 + 0.7; timeTxt.alpha = flash; // Pulse timer when very low if (timeRemaining < 5000) { var urgentPulse = Math.sin(LK.ticks * 0.2) * 0.2 + 1; timeTxt.scaleX = urgentPulse; timeTxt.scaleY = urgentPulse; } } // Subtle floating animation for number display numberDisplay.y = 800 + Math.sin(LK.ticks * 0.05) * 10; // Rainbow effect for high scores if (LK.getScore() > 200) { var rainbow = Math.sin(LK.ticks * 0.1) * 0.5 + 0.5; scoreTxt.tint = 0xFFFFFF * rainbow + 0x00FFFF * (1 - rainbow); } };
===================================================================
--- original.js
+++ change.js
@@ -235,9 +235,9 @@
var gameActive = true;
var shakeIntensity = 0;
var shakeDecay = 0.9;
var lastRngTime = 0;
-var rngCooldown = 1000; // 1 second cooldown in milliseconds
+var rngCooldown = 500; // 0.5 second cooldown in milliseconds
// Particle system
var particleSystem = game.addChild(new ParticleSystem());
// UI Elements
var scoreTxt = new Text2('0', {