User prompt
biraz önceki verdiğim renk sırasına göre git
User prompt
renkler sarı, turuncu, kırmızı , pembe, mor , koyu mavi, açık mavi döngüsünde gitsin
User prompt
sayılar 1'den başlayarak 1'er 1'er Çoğalsın
Code edit (1 edits merged)
Please save this source code
User prompt
Bir Sayı Oyunu
Initial prompt
bir sayı oyununa başla
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Sayı balonu sınıfı var NumberBubble = Container.expand(function () { var self = Container.call(this); // Varsayılan olarak mavi balon var bubble = self.attachAsset('numberBubble', { anchorX: 0.5, anchorY: 0.5 }); self.bubble = bubble; // Sayı metni var numberText = new Text2('0', { size: 140, fill: 0xFFFFFF }); numberText.anchor.set(0.5, 0.5); self.addChild(numberText); self.numberText = numberText; // Balonun gösterdiği sayı self.value = 0; // Balonun doğru/yanlış animasyonu self.flash = function (type) { // type: 'correct' | 'wrong' var color = 0x3a8dde; if (type === 'correct') color = 0x44de83; if (type === 'wrong') color = 0xde3a3a; tween(self.bubble, { tint: color }, { duration: 120, easing: tween.linear, onFinish: function onFinish() { tween(self.bubble, { tint: 0x3a8dde }, { duration: 200, easing: tween.linear }); } }); }; // Balonun değerini ayarla self.setValue = function (val) { self.value = val; self.numberText.setText(val + ''); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181c24 }); /**** * Game Code ****/ // Oyun değişkenleri // Sayı balonu için daire şekli // Yanlış seçim için kırmızı balon // Doğru seçim için yeşil balon // Animasyonlar için tween eklentisi var currentBubble = null; var score = 0; var scoreTxt = null; var timerTxt = null; var roundTimeout = null; var roundDuration = 2000; // ms, ilk turda 2 saniye var minRoundDuration = 800; // ms, minimum hız var roundDecrease = 80; // Her doğru için ms azalır var isGameActive = true; var lastNumber = null; // Renk döngüsü: sarı, turuncu, kırmızı, pembe, mor, koyu mavi, açık mavi var bubbleColors = [0xFFE066, // sarı 0xFFA500, // turuncu 0xFF3B3B, // kırmızı 0xFF7EB9, // pembe 0xA259E6, // mor 0x2D3A8C, // koyu mavi 0x3A8DDE // açık mavi ]; var bubbleColorIndex = 0; // Skor metni scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Zamanlayıcı metni timerTxt = new Text2('', { size: 60, fill: 0xFFE066 }); timerTxt.anchor.set(0.5, 0); LK.gui.top.addChild(timerTxt); timerTxt.y = 130; // Yeni sayı balonu oluştur function spawnNumberBubble() { // Önceki balonu kaldır if (currentBubble) { currentBubble.destroy(); currentBubble = null; } // Yeni sayı: 1'den başlayarak 1'er 1'er artar var newNumber = 1; if (lastNumber !== null) { newNumber = lastNumber + 1; } lastNumber = newNumber; // Balonu oluştur var bubble = new NumberBubble(); bubble.setValue(newNumber); // Balonun rengini ayarla ve döngüyü ilerlet bubble.bubble.tint = bubbleColors[bubbleColorIndex]; bubbleColorIndex = (bubbleColorIndex + 1) % bubbleColors.length; // Rastgele konum (balonun tamamı ekranda kalacak şekilde) var margin = 200; var bx = margin + Math.random() * (2048 - 2 * margin); var by = 350 + Math.random() * (2732 - 350 - margin); bubble.x = bx; bubble.y = by; // Balonu ekle game.addChild(bubble); currentBubble = bubble; // Balona dokunma olayı bubble.down = function (x, y, obj) { if (!isGameActive) return; // Doğru balona dokunuldu handleCorrect(); }; // Zamanlayıcı başlat startRoundTimer(); } // Tur zamanlayıcısı function startRoundTimer() { if (roundTimeout) { LK.clearTimeout(roundTimeout); roundTimeout = null; } var startTime = Date.now(); var duration = roundDuration; updateTimerText(duration); // Zamanlayıcıyı güncelle function updateTimer() { if (!isGameActive) return; var elapsed = Date.now() - startTime; var left = duration - elapsed; if (left <= 0) { timerTxt.setText('0.0'); handleTimeout(); } else { updateTimerText(left); roundTimeout = LK.setTimeout(updateTimer, 60); } } roundTimeout = LK.setTimeout(updateTimer, 60); } // Zamanlayıcı metnini güncelle function updateTimerText(ms) { var sec = Math.max(0, ms / 1000); timerTxt.setText(sec.toFixed(1)); } // Doğru balona dokunulduğunda function handleCorrect() { if (!isGameActive) return; isGameActive = false; if (roundTimeout) { LK.clearTimeout(roundTimeout); roundTimeout = null; } // Balonu yeşil yap, animasyon if (currentBubble) currentBubble.flash('correct'); // Skoru artır score += 1; scoreTxt.setText(score + ''); // Zorluk artır: süreyi azalt roundDuration = Math.max(minRoundDuration, roundDuration - roundDecrease); // Kısa bekle, sonra yeni balon LK.setTimeout(function () { isGameActive = true; spawnNumberBubble(); }, 180); } // Zaman aşımı olursa function handleTimeout() { if (!isGameActive) return; isGameActive = false; // Balonu kırmızı yap, animasyon if (currentBubble) currentBubble.flash('wrong'); // Ekranı kırmızıya flashla LK.effects.flashScreen(0xde3a3a, 600); // Oyun bitti LK.setTimeout(function () { LK.showGameOver(); }, 600); } // Oyun başlat function startGame() { score = 0; scoreTxt.setText('0'); roundDuration = 2000; isGameActive = true; lastNumber = null; bubbleColorIndex = 0; if (currentBubble) { currentBubble.destroy(); currentBubble = null; } spawnNumberBubble(); } startGame(); // Oyun bittiğinde cleanup (LK.showGameOver çağrıldığında otomatik resetlenir) game.destroy = function () { if (roundTimeout) { LK.clearTimeout(roundTimeout); roundTimeout = null; } if (currentBubble) { currentBubble.destroy(); currentBubble = null; } }; // Ekrana yanlışlıkla dokunulursa (balon dışında), oyun bitmesin diye hiçbir şey yapma game.down = function (x, y, obj) { // Sadece balonun down'u çalışsın }; // Sürükleme, hareket, up olayları gerekmiyor game.move = function (x, y, obj) {}; game.up = function (x, y, obj) {}; // Oyun update fonksiyonu (gerekli değil ama boş bırakıyoruz) game.update = function () {};
===================================================================
--- original.js
+++ change.js