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() + 5); 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 ****/ // Oyun alanı boyutları // Puan göstergesi için fonta gerek yok, Text2 kullanılacak // Animasyonlar için tween eklentisi 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() { // Eğer 'canım babam' yazısı gösteriliyorsa köstebek çıkarma if (babamShown && babamText) return; // Ö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 () { // Eğer 'canım babam' yazısı gösteriliyorsa köstebek çıkmasın if (babamShown && babamText) return; 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) // 'canım babam' ve 'you win' için kontrol değişkenleri var babamShown = false; var babamText = null; var babamTimeout = null; game.update = function () { // 30 puana ulaşıldıysa ve daha önce gösterilmediyse if (LK.getScore() >= 30 && !babamShown) { babamShown = true; // 'canım babam' yazısını ekrana ortala babamText = new Text2('canım babam', { size: 180, fill: 0xFF3B3B }); babamText.anchor.set(0.5, 0.5); babamText.x = GAME_W / 2; babamText.y = GAME_H / 2; game.addChild(babamText); // 5 sn sonra 'you win' göster ve yazıyı kaldır babamTimeout = LK.setTimeout(function () { if (babamText) { babamText.destroy(); babamText = null; } LK.showYouWin(); }, 5000); } }; // Oyun başlatıldığında başlat resetGame();
===================================================================
--- original.js
+++ change.js
@@ -175,8 +175,10 @@
// Aktif köstebekleri takip et
var activeMoleIndex = -1;
// Yeni köstebek çıkar
function showRandomMole() {
+ // Eğer 'canım babam' yazısı gösteriliyorsa köstebek çıkarma
+ if (babamShown && babamText) return;
// Önce tüm köstebekleri gizle
for (var i = 0; i < moles.length; i++) {
moles[i].hide();
}
@@ -190,8 +192,10 @@
var moleTimer = null;
function startMoleLoop() {
if (moleTimer) LK.clearInterval(moleTimer);
moleTimer = LK.setInterval(function () {
+ // Eğer 'canım babam' yazısı gösteriliyorsa köstebek çıkmasın
+ if (babamShown && babamText) return;
showRandomMole();
}, moleShowTime + 350); // Biraz aralık bırak
}
// Oyun başlatıldığında sıfırla