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
// (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;
// 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
@@ -1,6 +1,218 @@
-/****
+/****
+* 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: 0x000000
-});
\ No newline at end of file
+ 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
+// (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;
+// 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();
\ No newline at end of file