User prompt
Canım babam yazarken köstebek gelmesin
User prompt
30 puan yaptıktan sonra ekranda canım babam yazsın 5 sn sonra you win yazsın
User prompt
Her köstebeğe deydiğimiz de 5 puan versin
User prompt
arka plan olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Köstebek Vurma
Initial prompt
bir köstebek vurma oyunu etrafta köstebek çıkıcak onlara vurarak puan toplayacağız
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Köstebek (Mole) sınıfı var Mole = Container.expand(function () { var self = Container.call(this); // Mole grafiği var moleGfx = self.attachAsset('mole', { anchorX: 0.5, anchorY: 1 }); // Vurma efekti (başta görünmez) var hitEffect = self.attachAsset('hitEffect', { anchorX: 0.5, anchorY: 1, alpha: 0 }); // Mole aktif mi (vurulabilir mi) self.active = false; // Mole'nin gösterildiği süreyi takip et self.showTimeout = null; // Vurulduğunda çağrılır self.hit = function () { if (!self.active) return; self.active = false; // Efekti göster hitEffect.alpha = 0.7; tween(hitEffect, { alpha: 0 }, { duration: 350, easing: tween.easeOut }); // Mole'yi sakla self.hide(); // Puanı artır LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // Zorluk artışı: skor belirli aralıklara gelince gösterim süresini kısalt updateMoleShowTime(); }; // Mole'yi göster self.show = function (x, y, showTime) { self.x = x; self.y = y; self.visible = true; self.active = true; // Efekti sıfırla hitEffect.alpha = 0; // Zıplama animasyonu (topraktan çıkma) self.scaleY = 0.2; tween(self, { scaleY: 1 }, { duration: 120, easing: tween.easeOut }); // Belirli süre sonra otomatik sakla if (self.showTimeout) LK.clearTimeout(self.showTimeout); self.showTimeout = LK.setTimeout(function () { self.missed(); }, showTime); }; // Mole'yi sakla self.hide = function () { self.visible = false; self.active = false; if (self.showTimeout) { LK.clearTimeout(self.showTimeout); self.showTimeout = null; } }; // Mole kaçırılırsa self.missed = function () { if (!self.active) return; self.active = false; self.hide(); // Puanı azalt LK.setScore(Math.max(0, LK.getScore() - 1)); scoreTxt.setText(LK.getScore()); // Ekranı kısa süre kırmızıya flashla LK.effects.flashScreen(0xff0000, 200); // Hata sayısını artır missedCount++; if (missedCount >= maxMissed) { LK.showGameOver(); } }; // Dokunma olayı self.down = function (x, y, obj) { if (self.active) { self.hit(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x4caf50 // Çimen yeşili arka plan }); /**** * Game Code ****/ // Animasyonlar için tween eklentisi // Puan göstergesi için fonta gerek yok, Text2 kullanılacak // Oyun alanı boyutları var GAME_W = 2048; var GAME_H = 2732; // Arka plan görseli ekle var background = LK.getAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, width: GAME_W, height: GAME_H }); game.addChildAt(background, 0); // En arkaya ekle // Puan göstergesi var scoreTxt = new Text2('0', { size: 120, fill: 0xFFF700 }); scoreTxt.anchor.set(0.5, 0); // Puanı üstte ortala, üstten 40px boşluk bırak scoreTxt.y = 40; LK.gui.top.addChild(scoreTxt); // Kaçırılan köstebek sayısı var missedCount = 0; var maxMissed = 3; // Zorluk: köstebek gösterim süresi (ms) var moleShowTime = 1100; // Başlangıçta 1.1 saniye function updateMoleShowTime() { // Skor arttıkça köstebek daha kısa süre görünür var score = LK.getScore(); if (score >= 20) moleShowTime = 600;else if (score >= 10) moleShowTime = 800;else if (score >= 5) moleShowTime = 950; } // Oyun alanında köstebeklerin çıkacağı pozisyonlar (3x3 grid) var molePositions = []; (function () { var cols = 3, rows = 3; var marginX = 320, marginY = 400; var spacingX = (GAME_W - 2 * marginX) / (cols - 1); var spacingY = (GAME_H - 2 * marginY) / (rows - 1); for (var r = 0; r < rows; r++) { for (var c = 0; c < cols; c++) { var x = marginX + c * spacingX; var y = marginY + r * spacingY + 180; // Hafif aşağıda, daha doğal görünüm molePositions.push({ x: x, y: y }); } } })(); // 3x3 gridde toplam 9 köstebek var moles = []; for (var i = 0; i < 9; i++) { var mole = new Mole(); mole.hide(); moles.push(mole); game.addChild(mole); } // Aktif köstebekleri takip et var activeMoleIndex = -1; // Yeni köstebek çıkar function showRandomMole() { // Önce tüm köstebekleri gizle for (var i = 0; i < moles.length; i++) { moles[i].hide(); } // Rastgele bir pozisyon seç var idx = Math.floor(Math.random() * molePositions.length); activeMoleIndex = idx; var pos = molePositions[idx]; moles[idx].show(pos.x, pos.y, moleShowTime); } // Oyun döngüsü: belirli aralıklarla yeni köstebek çıkar var moleTimer = null; function startMoleLoop() { if (moleTimer) LK.clearInterval(moleTimer); moleTimer = LK.setInterval(function () { showRandomMole(); }, moleShowTime + 350); // Biraz aralık bırak } // Oyun başlatıldığında sıfırla function resetGame() { LK.setScore(0); scoreTxt.setText('0'); missedCount = 0; moleShowTime = 1100; updateMoleShowTime(); for (var i = 0; i < moles.length; i++) { moles[i].hide(); } showRandomMole(); startMoleLoop(); } // Oyun bittiğinde timerları temizle LK.on('gameover', function () { if (moleTimer) LK.clearInterval(moleTimer); for (var i = 0; i < moles.length; i++) { moles[i].hide(); } }); // Oyun kazanınca (ör: 30 puan) game.update = function () { if (LK.getScore() >= 30) { LK.showYouWin(); } }; // Oyun başlatıldığında başlat resetGame();
===================================================================
--- original.js
+++ change.js
@@ -111,15 +111,21 @@
* Game Code
****/
// Animasyonlar için tween eklentisi
// Puan göstergesi için fonta gerek yok, Text2 kullanılacak
-// (Not: Arka plan sadece backgroundColor ile ayarlanır, ekstra asset eklenmez.)
-// Arka plan için çimen yeşili
-// Vurma efekti için beyaz halka
-// Köstebek (mole) asset: kahverengi elips
// Oyun alanı boyutları
var GAME_W = 2048;
var GAME_H = 2732;
+// Arka plan görseli ekle
+var background = LK.getAsset('background', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: 0,
+ width: GAME_W,
+ height: GAME_H
+});
+game.addChildAt(background, 0); // En arkaya ekle
// Puan göstergesi
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFF700