/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Mermi (Bullet) sınıfı var Bullet = Container.expand(function () { var self = Container.call(this); // Mermi asseti olarak 'mermi' görselini kullan self.asset = self.attachAsset('mermi', { anchorX: 0.5, anchorY: 1 // Silah ucundan çıksın }); self.asset.width = 32; self.asset.height = 80; // Mermi yönü ve hızı self.speedX = 0; self.speedY = -50; // default yukarı self.update = function () { self.x += self.speedX; self.y += self.speedY; }; return self; }); // Karakter sınıfı var PlayerCharacter = Container.expand(function () { var self = Container.call(this); self.type = 'box'; // default self.asset = null; self.gun = null; self.setType = function (type) { self.removeChildren(); self.type = type; if (type === 'box') { self.asset = self.attachAsset('charBox', { anchorX: 0.5, anchorY: 0.5 }); } else { self.asset = self.attachAsset('charEllipse', { anchorX: 0.5, anchorY: 0.5 }); } // Add gun asset (simple yellow ellipse as placeholder) self.gun = self.attachAsset('hitEffect', { anchorX: 0.5, anchorY: 1, x: 0, y: -80 }); self.gun.width = 40; self.gun.height = 80; self.gun.tint = 0xffff00; }; self.setType('box'); return self; }); // Hedef (düşman/nesne) sınıfı var Target = Container.expand(function () { var self = Container.call(this); self.asset = self.attachAsset('target', { anchorX: 0.5, anchorY: 0.5 }); self.isHit = false; self.hitEffect = null; self.speedY = 0; self.speedX = 0; self.setRandomSpeed = function (level) { // Hedefler sabit, hareket etmeyecek self.speedY = 0; self.speedX = 0; }; self.update = function () { if (self.isHit) return; // Sabit hedef, hareket yok }; self.hit = function () { if (self.isHit) return; self.isHit = true; // Hedefin üzerinde iz bırak var iz = self.attachAsset('iz', { anchorX: 0.5, anchorY: 0.5 }); iz.x = 0; iz.y = 0; iz.alpha = 0.8; iz.width = 60; iz.height = 60; // Vuruş efekti self.hitEffect = self.attachAsset('hitEffect', { anchorX: 0.5, anchorY: 0.5 }); self.hitEffect.alpha = 1; tween(self.hitEffect, { alpha: 0 }, { duration: 400, onFinish: function onFinish() { self.destroy(); } }); LK.getSound('hit').play(); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // Oyun değişkenleri // Karakterler için kutu ve elips şeklinde iki farklı karakter // Hedefler için kırmızı daire // Vuruş efekti için küçük sarı daire // Atış efekti için ses var player = null; var targets = []; var level = 1; var maxLevel = 10; var targetsToSpawn = 0; var targetsLeft = 0; var score = 0; var isSelectingCharacter = true; var selectedType = 'box'; var levelText = null; var scoreText = null; var infoText = null; var nextButton = null; var dragNode = null; // GUI elemanları levelText = new Text2('', { size: 90, fill: "#fff" }); levelText.anchor.set(0.5, 0); LK.gui.top.addChild(levelText); scoreText = new Text2('', { size: 90, fill: "#fff" }); // Sola yasla: anchor'ı (0,0) yap ve gui.topLeft'e ekle scoreText.anchor.set(0, 0); LK.gui.topLeft.addChild(scoreText); infoText = new Text2('', { size: 80, fill: "#fff" }); infoText.anchor.set(0.5, 0.5); LK.gui.center.addChild(infoText); // Karakter seçimi ekranı var charBoxBtn = LK.getAsset('charBox', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 - 220, y: 2732 / 2 - 100 }); var charEllipseBtn = LK.getAsset('charEllipse', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 + 220, y: 2732 / 2 - 100 }); var charBoxLabel = new Text2('Kare', { size: 60, fill: "#fff" }); charBoxLabel.anchor.set(0.5, 0); charBoxLabel.x = charBoxBtn.x; charBoxLabel.y = charBoxBtn.y + 120; var charEllipseLabel = new Text2('Elips', { size: 60, fill: "#fff" }); charEllipseLabel.anchor.set(0.5, 0); charEllipseLabel.x = charEllipseBtn.x; charEllipseLabel.y = charEllipseBtn.y + 120; game.addChild(charBoxBtn); game.addChild(charEllipseBtn); game.addChild(charBoxLabel); game.addChild(charEllipseLabel); infoText.setText('Karakterini Seç!'); // Karakter seçimi eventleri charBoxBtn.down = function (x, y, obj) { selectedType = 'box'; charBoxBtn.scaleX = 1.2; charBoxBtn.scaleY = 1.2; charEllipseBtn.scaleX = 1; charEllipseBtn.scaleY = 1; }; charEllipseBtn.down = function (x, y, obj) { selectedType = 'ellipse'; charEllipseBtn.scaleX = 1.2; charEllipseBtn.scaleY = 1.2; charBoxBtn.scaleX = 1; charBoxBtn.scaleY = 1; }; // Başlat butonu var startBtn = new Text2('Başla', { size: 100, fill: 0x00FF00 }); startBtn.anchor.set(0.5, 0.5); startBtn.x = 2048 / 2; startBtn.y = 2732 / 2 + 300; game.addChild(startBtn); startBtn.down = function (x, y, obj) { isSelectingCharacter = false; // Temizle game.removeChild(charBoxBtn); game.removeChild(charEllipseBtn); game.removeChild(charBoxLabel); game.removeChild(charEllipseLabel); game.removeChild(startBtn); infoText.setText(''); startLevel(1); }; // Seviye başlatma fonksiyonu function startLevel(lvl) { level = lvl; targetsToSpawn = 3 + level * 2; targetsLeft = targetsToSpawn; score = 0; updateLevelText(); updateScoreText(); infoText.setText('Seviye ' + level); // Show level text at the start of each level updateLevelText(); // Karakteri oluştur if (player) { player.destroy(); } player = new PlayerCharacter(); player.setType(selectedType); player.x = 2048 / 2; player.y = 2732 - 350; game.addChild(player); // Hedefleri oluştur for (var i = 0; i < targetsToSpawn; i++) { spawnTarget(); } } // Hedef oluşturma fonksiyonu function spawnTarget() { var t = new Target(); // Sabit hedefler: 3 satır, eşit aralıklı, yukarıdan aşağıya var row = Math.floor(targets.length / 4); var col = targets.length % 4; var marginX = 300; var marginY = 350; var spacingX = (2048 - 2 * marginX) / 3; var spacingY = 250; t.x = marginX + col * spacingX; t.y = marginY + row * spacingY; t.setRandomSpeed(level); targets.push(t); game.addChild(t); } // GUI güncelleme function updateLevelText() { levelText.setText('Seviye: ' + level); } function updateScoreText() { scoreText.setText('Puan: ' + score); } // Oyun bittiğinde veya seviye tamamlandığında gösterilecek buton function showNextButton(text, cb) { if (nextButton) { LK.gui.center.removeChild(nextButton); } nextButton = new Text2(text, { size: 100, fill: 0x00FF00 }); nextButton.anchor.set(0.5, 0.5); LK.gui.center.addChild(nextButton); nextButton.down = function (x, y, obj) { LK.gui.center.removeChild(nextButton); nextButton = null; cb(); }; } // Oyuncu karakterini sürükleme game.down = function (x, y, obj) { if (isSelectingCharacter) return; if (!player) return; // Karaktere tıklanırsa sürükle var local = player.toLocal(game.toGlobal({ x: x, y: y })); if (local.x > -90 && local.x < 90 && local.y > -90 && local.y < 90) { dragNode = player; } }; game.move = function (x, y, obj) { if (isSelectingCharacter) return; if (dragNode) { // Sürüklenen karakteri sınırlar içinde hareket ettir var px = Math.max(90, Math.min(2048 - 90, x)); var py = Math.max(2732 / 2 + 100, Math.min(2732 - 90, y)); dragNode.x = px; dragNode.y = py; } // Silahı fareye/touch'a döndür if (player && player.gun) { // player'ın pozisyonunu globalden al, mouse/touch pozisyonu zaten global var dx = x - player.x; var dy = y - (player.y - 80); // silahın ucu biraz yukarıda player.gun.rotation = Math.atan2(dy, dx) + Math.PI / 2; } }; game.up = function (x, y, obj) { dragNode = null; }; // Ekrana dokununca ateş et (mermi fırlat) game.downTarget = function (x, y, obj) { if (isSelectingCharacter) return; if (!player) return; // Sadece oyuncunun üst yarısına dokununca ateş etsin if (y < player.y - 100) { // Silahı ateş edilen noktaya döndür if (player.gun) { var dx = x - player.x; var dy = y - (player.y - 80); player.gun.rotation = Math.atan2(dy, dx) + Math.PI / 2; } // Mermi oluştur var bullet = new Bullet(); // Silahın ucunun pozisyonunu hesapla (player.x, player.y - 80 silahın pivot noktası) // Silahın ucunun global pozisyonunu bulmak için trigonometrik olarak hesapla var gunLength = 80; // Silahın uzunluğu (player.gun.height) var gunAngle = player.gun.rotation - Math.PI / 2; // player.gun.rotation = Math.atan2(dy, dx) + Math.PI/2 var gunTipX = player.x + Math.cos(gunAngle) * gunLength; var gunTipY = player.y - 80 + Math.sin(gunAngle) * gunLength; bullet.x = gunTipX; bullet.y = gunTipY; // Mermiye yön ver bullet.speedX = Math.cos(gunAngle) * 50; bullet.speedY = Math.sin(gunAngle) * 50; // Mermiyi döndür (görsel olarak yönüne baksın) bullet.asset.rotation = gunAngle + Math.PI / 2; game.addChild(bullet); if (!game.bullets) game.bullets = []; game.bullets.push(bullet); } }; // Tüm hedefleri temizle function clearTargets() { for (var i = 0; i < targets.length; i++) { targets[i].destroy(); } targets = []; } // Oyun güncelleme game.update = function () { if (isSelectingCharacter) return; // Hedefleri güncelle for (var i = targets.length - 1; i >= 0; i--) { var t = targets[i]; if (t.isHit && t.hitEffect && t.hitEffect.alpha <= 0) { t.destroy(); targets.splice(i, 1); continue; } t.update(); } // Mermileri güncelle if (!game.bullets) game.bullets = []; for (var b = game.bullets.length - 1; b >= 0; b--) { var bullet = game.bullets[b]; bullet.update(); // Ekran dışına çıkan mermiyi sil if (bullet.y < -50) { bullet.destroy(); game.bullets.splice(b, 1); continue; } // Mermi-hedef çarpışması for (var i = targets.length - 1; i >= 0; i--) { var t = targets[i]; if (t.isHit) continue; if (bullet.intersects(t)) { t.hit(); bullet.destroy(); game.bullets.splice(b, 1); score += 10; updateScoreText(); targetsLeft--; if (targetsLeft <= 0) { // Hide level text until next level starts levelText.setText(''); if (level < maxLevel) { infoText.setText('Seviye ' + level + ' Tamamlandı!'); // 'Seviye tamamlandı' yazısını butonun üstünde göstermek için geçici bir Text2 ekle var levelCompleteText = new Text2('Seviye tamamlandı', { size: 90, fill: "#fff" }); levelCompleteText.anchor.set(0.5, 1); // 'Sonraki Seviye' butonunun geleceği y: 1366, 20px üstü: 1346 // Butonun y'si 1366, yazı 20px üstte olacak şekilde ayarlanacak var nextButtonY = 1366; levelCompleteText.x = 1024; levelCompleteText.y = nextButtonY - 20; LK.gui.center.addChild(levelCompleteText); showNextButton('Sonraki Seviye', function () { infoText.setText(''); if (levelCompleteText && levelCompleteText.parent) { LK.gui.center.removeChild(levelCompleteText); levelCompleteText = null; } clearTargets(); startLevel(level + 1); }); // Sonraki Seviye butonunun y'sini 1366 olarak ayarla if (nextButton) { nextButton.y = nextButtonY; } // 5 saniye sonra otomatik olarak sonraki seviyeye geç if (typeof nextLevelTimeout !== "undefined") { LK.clearTimeout(nextLevelTimeout); } nextLevelTimeout = LK.setTimeout(function () { if (nextButton && nextButton.parent) { LK.gui.center.removeChild(nextButton); nextButton = null; } if (levelCompleteText && levelCompleteText.parent) { LK.gui.center.removeChild(levelCompleteText); levelCompleteText = null; } infoText.setText(''); clearTargets(); startLevel(level + 1); }, 5000); } else { infoText.setText('Tebrikler! Tüm seviyeler tamamlandı!'); showNextButton('Tekrar Oyna', function () { infoText.setText(''); clearTargets(); startLevel(1); }); } } break; } } } }; // Tüm ekrana dokunma eventini hedef vurmak için kullan game.on('down', function (x, y, obj) { game.downTarget(x, y, obj); });
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
// Mermi (Bullet) sınıfı
var Bullet = Container.expand(function () {
var self = Container.call(this);
// Mermi asseti olarak 'mermi' görselini kullan
self.asset = self.attachAsset('mermi', {
anchorX: 0.5,
anchorY: 1 // Silah ucundan çıksın
});
self.asset.width = 32;
self.asset.height = 80;
// Mermi yönü ve hızı
self.speedX = 0;
self.speedY = -50; // default yukarı
self.update = function () {
self.x += self.speedX;
self.y += self.speedY;
};
return self;
});
// Karakter sınıfı
var PlayerCharacter = Container.expand(function () {
var self = Container.call(this);
self.type = 'box'; // default
self.asset = null;
self.gun = null;
self.setType = function (type) {
self.removeChildren();
self.type = type;
if (type === 'box') {
self.asset = self.attachAsset('charBox', {
anchorX: 0.5,
anchorY: 0.5
});
} else {
self.asset = self.attachAsset('charEllipse', {
anchorX: 0.5,
anchorY: 0.5
});
}
// Add gun asset (simple yellow ellipse as placeholder)
self.gun = self.attachAsset('hitEffect', {
anchorX: 0.5,
anchorY: 1,
x: 0,
y: -80
});
self.gun.width = 40;
self.gun.height = 80;
self.gun.tint = 0xffff00;
};
self.setType('box');
return self;
});
// Hedef (düşman/nesne) sınıfı
var Target = Container.expand(function () {
var self = Container.call(this);
self.asset = self.attachAsset('target', {
anchorX: 0.5,
anchorY: 0.5
});
self.isHit = false;
self.hitEffect = null;
self.speedY = 0;
self.speedX = 0;
self.setRandomSpeed = function (level) {
// Hedefler sabit, hareket etmeyecek
self.speedY = 0;
self.speedX = 0;
};
self.update = function () {
if (self.isHit) return;
// Sabit hedef, hareket yok
};
self.hit = function () {
if (self.isHit) return;
self.isHit = true;
// Hedefin üzerinde iz bırak
var iz = self.attachAsset('iz', {
anchorX: 0.5,
anchorY: 0.5
});
iz.x = 0;
iz.y = 0;
iz.alpha = 0.8;
iz.width = 60;
iz.height = 60;
// Vuruş efekti
self.hitEffect = self.attachAsset('hitEffect', {
anchorX: 0.5,
anchorY: 0.5
});
self.hitEffect.alpha = 1;
tween(self.hitEffect, {
alpha: 0
}, {
duration: 400,
onFinish: function onFinish() {
self.destroy();
}
});
LK.getSound('hit').play();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x222222
});
/****
* Game Code
****/
// Oyun değişkenleri
// Karakterler için kutu ve elips şeklinde iki farklı karakter
// Hedefler için kırmızı daire
// Vuruş efekti için küçük sarı daire
// Atış efekti için ses
var player = null;
var targets = [];
var level = 1;
var maxLevel = 10;
var targetsToSpawn = 0;
var targetsLeft = 0;
var score = 0;
var isSelectingCharacter = true;
var selectedType = 'box';
var levelText = null;
var scoreText = null;
var infoText = null;
var nextButton = null;
var dragNode = null;
// GUI elemanları
levelText = new Text2('', {
size: 90,
fill: "#fff"
});
levelText.anchor.set(0.5, 0);
LK.gui.top.addChild(levelText);
scoreText = new Text2('', {
size: 90,
fill: "#fff"
});
// Sola yasla: anchor'ı (0,0) yap ve gui.topLeft'e ekle
scoreText.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreText);
infoText = new Text2('', {
size: 80,
fill: "#fff"
});
infoText.anchor.set(0.5, 0.5);
LK.gui.center.addChild(infoText);
// Karakter seçimi ekranı
var charBoxBtn = LK.getAsset('charBox', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 - 220,
y: 2732 / 2 - 100
});
var charEllipseBtn = LK.getAsset('charEllipse', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2 + 220,
y: 2732 / 2 - 100
});
var charBoxLabel = new Text2('Kare', {
size: 60,
fill: "#fff"
});
charBoxLabel.anchor.set(0.5, 0);
charBoxLabel.x = charBoxBtn.x;
charBoxLabel.y = charBoxBtn.y + 120;
var charEllipseLabel = new Text2('Elips', {
size: 60,
fill: "#fff"
});
charEllipseLabel.anchor.set(0.5, 0);
charEllipseLabel.x = charEllipseBtn.x;
charEllipseLabel.y = charEllipseBtn.y + 120;
game.addChild(charBoxBtn);
game.addChild(charEllipseBtn);
game.addChild(charBoxLabel);
game.addChild(charEllipseLabel);
infoText.setText('Karakterini Seç!');
// Karakter seçimi eventleri
charBoxBtn.down = function (x, y, obj) {
selectedType = 'box';
charBoxBtn.scaleX = 1.2;
charBoxBtn.scaleY = 1.2;
charEllipseBtn.scaleX = 1;
charEllipseBtn.scaleY = 1;
};
charEllipseBtn.down = function (x, y, obj) {
selectedType = 'ellipse';
charEllipseBtn.scaleX = 1.2;
charEllipseBtn.scaleY = 1.2;
charBoxBtn.scaleX = 1;
charBoxBtn.scaleY = 1;
};
// Başlat butonu
var startBtn = new Text2('Başla', {
size: 100,
fill: 0x00FF00
});
startBtn.anchor.set(0.5, 0.5);
startBtn.x = 2048 / 2;
startBtn.y = 2732 / 2 + 300;
game.addChild(startBtn);
startBtn.down = function (x, y, obj) {
isSelectingCharacter = false;
// Temizle
game.removeChild(charBoxBtn);
game.removeChild(charEllipseBtn);
game.removeChild(charBoxLabel);
game.removeChild(charEllipseLabel);
game.removeChild(startBtn);
infoText.setText('');
startLevel(1);
};
// Seviye başlatma fonksiyonu
function startLevel(lvl) {
level = lvl;
targetsToSpawn = 3 + level * 2;
targetsLeft = targetsToSpawn;
score = 0;
updateLevelText();
updateScoreText();
infoText.setText('Seviye ' + level);
// Show level text at the start of each level
updateLevelText();
// Karakteri oluştur
if (player) {
player.destroy();
}
player = new PlayerCharacter();
player.setType(selectedType);
player.x = 2048 / 2;
player.y = 2732 - 350;
game.addChild(player);
// Hedefleri oluştur
for (var i = 0; i < targetsToSpawn; i++) {
spawnTarget();
}
}
// Hedef oluşturma fonksiyonu
function spawnTarget() {
var t = new Target();
// Sabit hedefler: 3 satır, eşit aralıklı, yukarıdan aşağıya
var row = Math.floor(targets.length / 4);
var col = targets.length % 4;
var marginX = 300;
var marginY = 350;
var spacingX = (2048 - 2 * marginX) / 3;
var spacingY = 250;
t.x = marginX + col * spacingX;
t.y = marginY + row * spacingY;
t.setRandomSpeed(level);
targets.push(t);
game.addChild(t);
}
// GUI güncelleme
function updateLevelText() {
levelText.setText('Seviye: ' + level);
}
function updateScoreText() {
scoreText.setText('Puan: ' + score);
}
// Oyun bittiğinde veya seviye tamamlandığında gösterilecek buton
function showNextButton(text, cb) {
if (nextButton) {
LK.gui.center.removeChild(nextButton);
}
nextButton = new Text2(text, {
size: 100,
fill: 0x00FF00
});
nextButton.anchor.set(0.5, 0.5);
LK.gui.center.addChild(nextButton);
nextButton.down = function (x, y, obj) {
LK.gui.center.removeChild(nextButton);
nextButton = null;
cb();
};
}
// Oyuncu karakterini sürükleme
game.down = function (x, y, obj) {
if (isSelectingCharacter) return;
if (!player) return;
// Karaktere tıklanırsa sürükle
var local = player.toLocal(game.toGlobal({
x: x,
y: y
}));
if (local.x > -90 && local.x < 90 && local.y > -90 && local.y < 90) {
dragNode = player;
}
};
game.move = function (x, y, obj) {
if (isSelectingCharacter) return;
if (dragNode) {
// Sürüklenen karakteri sınırlar içinde hareket ettir
var px = Math.max(90, Math.min(2048 - 90, x));
var py = Math.max(2732 / 2 + 100, Math.min(2732 - 90, y));
dragNode.x = px;
dragNode.y = py;
}
// Silahı fareye/touch'a döndür
if (player && player.gun) {
// player'ın pozisyonunu globalden al, mouse/touch pozisyonu zaten global
var dx = x - player.x;
var dy = y - (player.y - 80); // silahın ucu biraz yukarıda
player.gun.rotation = Math.atan2(dy, dx) + Math.PI / 2;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Ekrana dokununca ateş et (mermi fırlat)
game.downTarget = function (x, y, obj) {
if (isSelectingCharacter) return;
if (!player) return;
// Sadece oyuncunun üst yarısına dokununca ateş etsin
if (y < player.y - 100) {
// Silahı ateş edilen noktaya döndür
if (player.gun) {
var dx = x - player.x;
var dy = y - (player.y - 80);
player.gun.rotation = Math.atan2(dy, dx) + Math.PI / 2;
}
// Mermi oluştur
var bullet = new Bullet();
// Silahın ucunun pozisyonunu hesapla (player.x, player.y - 80 silahın pivot noktası)
// Silahın ucunun global pozisyonunu bulmak için trigonometrik olarak hesapla
var gunLength = 80; // Silahın uzunluğu (player.gun.height)
var gunAngle = player.gun.rotation - Math.PI / 2; // player.gun.rotation = Math.atan2(dy, dx) + Math.PI/2
var gunTipX = player.x + Math.cos(gunAngle) * gunLength;
var gunTipY = player.y - 80 + Math.sin(gunAngle) * gunLength;
bullet.x = gunTipX;
bullet.y = gunTipY;
// Mermiye yön ver
bullet.speedX = Math.cos(gunAngle) * 50;
bullet.speedY = Math.sin(gunAngle) * 50;
// Mermiyi döndür (görsel olarak yönüne baksın)
bullet.asset.rotation = gunAngle + Math.PI / 2;
game.addChild(bullet);
if (!game.bullets) game.bullets = [];
game.bullets.push(bullet);
}
};
// Tüm hedefleri temizle
function clearTargets() {
for (var i = 0; i < targets.length; i++) {
targets[i].destroy();
}
targets = [];
}
// Oyun güncelleme
game.update = function () {
if (isSelectingCharacter) return;
// Hedefleri güncelle
for (var i = targets.length - 1; i >= 0; i--) {
var t = targets[i];
if (t.isHit && t.hitEffect && t.hitEffect.alpha <= 0) {
t.destroy();
targets.splice(i, 1);
continue;
}
t.update();
}
// Mermileri güncelle
if (!game.bullets) game.bullets = [];
for (var b = game.bullets.length - 1; b >= 0; b--) {
var bullet = game.bullets[b];
bullet.update();
// Ekran dışına çıkan mermiyi sil
if (bullet.y < -50) {
bullet.destroy();
game.bullets.splice(b, 1);
continue;
}
// Mermi-hedef çarpışması
for (var i = targets.length - 1; i >= 0; i--) {
var t = targets[i];
if (t.isHit) continue;
if (bullet.intersects(t)) {
t.hit();
bullet.destroy();
game.bullets.splice(b, 1);
score += 10;
updateScoreText();
targetsLeft--;
if (targetsLeft <= 0) {
// Hide level text until next level starts
levelText.setText('');
if (level < maxLevel) {
infoText.setText('Seviye ' + level + ' Tamamlandı!');
// 'Seviye tamamlandı' yazısını butonun üstünde göstermek için geçici bir Text2 ekle
var levelCompleteText = new Text2('Seviye tamamlandı', {
size: 90,
fill: "#fff"
});
levelCompleteText.anchor.set(0.5, 1);
// 'Sonraki Seviye' butonunun geleceği y: 1366, 20px üstü: 1346
// Butonun y'si 1366, yazı 20px üstte olacak şekilde ayarlanacak
var nextButtonY = 1366;
levelCompleteText.x = 1024;
levelCompleteText.y = nextButtonY - 20;
LK.gui.center.addChild(levelCompleteText);
showNextButton('Sonraki Seviye', function () {
infoText.setText('');
if (levelCompleteText && levelCompleteText.parent) {
LK.gui.center.removeChild(levelCompleteText);
levelCompleteText = null;
}
clearTargets();
startLevel(level + 1);
});
// Sonraki Seviye butonunun y'sini 1366 olarak ayarla
if (nextButton) {
nextButton.y = nextButtonY;
}
// 5 saniye sonra otomatik olarak sonraki seviyeye geç
if (typeof nextLevelTimeout !== "undefined") {
LK.clearTimeout(nextLevelTimeout);
}
nextLevelTimeout = LK.setTimeout(function () {
if (nextButton && nextButton.parent) {
LK.gui.center.removeChild(nextButton);
nextButton = null;
}
if (levelCompleteText && levelCompleteText.parent) {
LK.gui.center.removeChild(levelCompleteText);
levelCompleteText = null;
}
infoText.setText('');
clearTargets();
startLevel(level + 1);
}, 5000);
} else {
infoText.setText('Tebrikler! Tüm seviyeler tamamlandı!');
showNextButton('Tekrar Oyna', function () {
infoText.setText('');
clearTargets();
startLevel(1);
});
}
}
break;
}
}
}
};
// Tüm ekrana dokunma eventini hedef vurmak için kullan
game.on('down', function (x, y, obj) {
game.downTarget(x, y, obj);
});