User prompt
Kazanma mesajından önce ekranda “Canım Annem” yazısı 5 sn görünsün sonra you win yazsın
Code edit (1 edits merged)
Please save this source code
User prompt
Oyunu kazanınca you win yerine canım annem yazsın
User prompt
Please fix the bug: 'TypeError: LK.showMessage is not a function. (In 'LK.showMessage("canım anem")', 'LK.showMessage' is undefined)' in or related to this line: 'LK.showMessage("canım anem");' Line Number: 304
User prompt
50 puan ve üzerinde oyunu kazanalım ve you win yerine canım anem yazsın
User prompt
50 puanda oyunu kazanalım ve ekranda anneler günün kutlu olsun yazsın
User prompt
50 puanda yeni haritaya geçsin
User prompt
55 puanda oyunu kazanalım
User prompt
30 puanda oyunu kazan mıyalım
User prompt
Har köstebek 5 puan versin
User prompt
50 puanda yeni bir alana geçsin.
Remix started
Copy baba
/****
* 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() {
// Ö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)
// Yeni alan kontrolü için flag
var areaLevel = 1;
var areaTransitioned = false;
game.update = function () {
// 50 puanda yeni alana geçiş
if (!areaTransitioned && LK.getScore() >= 50) {
areaTransitioned = true;
areaLevel = 2;
// Arka planı değiştir (farklı bir resim kullanılacaksa asset id'si burada değiştirilebilir)
var newBg = LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: GAME_W,
height: GAME_H
});
if (background && background.parent) {
background.parent.removeChild(background);
}
background = newBg;
game.addChildAt(background, 0);
// Yeni alan için köstebek pozisyonlarını güncelle (4x4 grid)
molePositions = [];
var cols = 4,
rows = 4;
var marginX = 220,
marginY = 300;
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 + 120;
molePositions.push({
x: x,
y: y
});
}
}
// Eski köstebekleri temizle
for (var i = 0; i < moles.length; i++) {
moles[i].hide();
if (typeof moles[i].destroy === "function") {
moles[i].destroy();
}
}
moles = [];
for (var i = 0; i < 16; i++) {
var mole = new Mole();
mole.hide();
moles.push(mole);
game.addChild(mole);
}
// Yeni alan için zorluk ayarı
moleShowTime = 500;
updateMoleShowTime();
showRandomMole();
startMoleLoop();
}
// Oyun kazanınca (ör: 50 puan ve üzeri)
if (LK.getScore() >= 50) {
// Sadece bir kez tetiklensin diye flag
if (!game._winSequenceStarted) {
game._winSequenceStarted = true;
// Tüm köstebekleri ve timerları durdur
areaTransitioned = true;
if (moleTimer) {
LK.clearInterval(moleTimer);
}
for (var i = 0; i < moles.length; i++) {
moles[i].hide();
}
// "Canım Annem" yazısı ekrana gelsin
var annemTxt = new Text2("Canım Annem", {
size: 180,
fill: 0xff3e9e
});
annemTxt.anchor.set(0.5, 0.5);
annemTxt.x = GAME_W / 2;
annemTxt.y = GAME_H / 2;
game.addChild(annemTxt);
// 5 saniye sonra yazıyı kaldırıp you win göster
LK.setTimeout(function () {
if (annemTxt && annemTxt.parent) {
annemTxt.parent.removeChild(annemTxt);
}
LK.showYouWin();
}, 5000);
return;
}
return;
}
};
// Oyun başlatıldığında başlat
resetGame(); ===================================================================
--- original.js
+++ change.js
@@ -115,11 +115,11 @@
/****
* Game Code
****/
-// Animasyonlar için tween eklentisi
-// Puan göstergesi için fonta gerek yok, Text2 kullanılacak
// 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', {
@@ -292,19 +292,37 @@
startMoleLoop();
}
// Oyun kazanınca (ör: 50 puan ve üzeri)
if (LK.getScore() >= 50) {
- // Kendi özel kazandın mesajımızı göster
- LK.showYouWin("canim annem");
- // Oyun döngüsünü durdurmak için areaTransitioned flagini true yapıyoruz
- areaTransitioned = true;
- // Timerları temizle
- if (moleTimer) {
- LK.clearInterval(moleTimer);
+ // Sadece bir kez tetiklensin diye flag
+ if (!game._winSequenceStarted) {
+ game._winSequenceStarted = true;
+ // Tüm köstebekleri ve timerları durdur
+ areaTransitioned = true;
+ if (moleTimer) {
+ LK.clearInterval(moleTimer);
+ }
+ for (var i = 0; i < moles.length; i++) {
+ moles[i].hide();
+ }
+ // "Canım Annem" yazısı ekrana gelsin
+ var annemTxt = new Text2("Canım Annem", {
+ size: 180,
+ fill: 0xff3e9e
+ });
+ annemTxt.anchor.set(0.5, 0.5);
+ annemTxt.x = GAME_W / 2;
+ annemTxt.y = GAME_H / 2;
+ game.addChild(annemTxt);
+ // 5 saniye sonra yazıyı kaldırıp you win göster
+ LK.setTimeout(function () {
+ if (annemTxt && annemTxt.parent) {
+ annemTxt.parent.removeChild(annemTxt);
+ }
+ LK.showYouWin();
+ }, 5000);
+ return;
}
- for (var i = 0; i < moles.length; i++) {
- moles[i].hide();
- }
return;
}
};
// Oyun başlatıldığında başlat