User prompt
score yi sola yasla
User prompt
İz olarak silah çıkmasın
User prompt
HEDEF ÜZERİNDEKİ İZ iz olsun
User prompt
SİLAH MERMİ ATSIN
User prompt
Seviye 1 tamamlandı yazısı çıktıktan 5 saniye sonra diğer seviyeye geçsin
User prompt
"Seviye Tamamlandı!" yazısı ile "Sonraki Seviye" yazısı arasında 20 px aralık olsun
User prompt
"Seviye Tamamlandı!" yazısı ile "Sonraki Seviye" yazısı arasında 200 px aralık olsun
User prompt
seviye tamamlandı yazısı sonraki seviye yazısının 200 px üstünde yazsın
User prompt
seviye tamamlandı yazısı sonraki seviye yazısının üstüne gelsin
User prompt
hedeflerden birini vurunca seviye yazısı gitsin diğer seviyeye kadar
User prompt
mermi silahın baktığıyerden çıksın
User prompt
silah fareye baksın
User prompt
elimizde silah olsun ve hedefler sabit olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Target Master: Character Quest
Initial prompt
oyuncu ilk başta karaterini seçsin ve oyuna başlasın oyunda hedefler olsun ve onları vurarak seviye atlayalım 10 seviye olsun
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
// Karakter sınıfı
var PlayerCharacter = Container.expand(function () {
var self = Container.call(this);
self.type = 'box'; // default
self.asset = 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
});
}
};
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) {
// Seviye arttıkça hız artar
var base = 2 + level;
self.speedY = base + Math.random() * base;
self.speedX = (Math.random() - 0.5) * base;
};
self.update = function () {
if (self.isHit) return;
self.y += self.speedY;
self.x += self.speedX;
// Ekran dışına çıkarsa yok et
if (self.y > 2732 + 100 || self.x < -100 || self.x > 2048 + 100) {
self.destroy();
}
};
self.hit = function () {
if (self.isHit) return;
self.isHit = true;
// 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
****/
// Atış efekti için ses
// Vuruş efekti için küçük sarı daire
// Hedefler için kırmızı daire
// Karakterler için kutu ve elips şeklinde iki farklı karakter
// Oyun değişkenleri
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"
});
scoreText.anchor.set(0.5, 0);
LK.gui.topRight.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);
// 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();
// Rastgele x, üstte başlasın
t.x = 200 + Math.random() * (2048 - 400);
t.y = -100 - Math.random() * 200;
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;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Ekrana dokununca hedef vurma
game.downTarget = function (x, y, obj) {
if (isSelectingCharacter) return;
// Hedeflere tıklanırsa vur
for (var i = targets.length - 1; i >= 0; i--) {
var t = targets[i];
if (t.isHit) continue;
var dx = t.x - x;
var dy = t.y - y;
if (dx * dx + dy * dy < 70 * 70) {
t.hit();
score += 10;
updateScoreText();
targetsLeft--;
if (targetsLeft <= 0) {
// Seviye tamamlandı
if (level < maxLevel) {
infoText.setText('Seviye ' + level + ' Tamamlandı!');
showNextButton('Sonraki Seviye', function () {
infoText.setText('');
clearTargets();
startLevel(level + 1);
});
} else {
infoText.setText('Tebrikler! Tüm seviyeler tamamlandı!');
showNextButton('Tekrar Oyna', function () {
infoText.setText('');
clearTargets();
startLevel(1);
});
}
}
break;
}
}
};
// 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();
// Ekran dışına çıkan hedefi sil
if (t.y > 2732 + 100 || t.x < -100 || t.x > 2048 + 100) {
t.destroy();
targets.splice(i, 1);
targetsLeft--;
if (targetsLeft <= 0) {
if (level < maxLevel) {
infoText.setText('Seviye ' + level + ' Tamamlandı!');
showNextButton('Sonraki Seviye', function () {
infoText.setText('');
clearTargets();
startLevel(level + 1);
});
} else {
infoText.setText('Tebrikler! Tüm seviyeler tamamlandı!');
showNextButton('Tekrar Oyna', function () {
infoText.setText('');
clearTargets();
startLevel(1);
});
}
}
}
}
};
// Tüm ekrana dokunma eventini hedef vurmak için kullan
game.on('down', function (x, y, obj) {
game.downTarget(x, y, obj);
}); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,362 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+// Karakter sınıfı
+var PlayerCharacter = Container.expand(function () {
+ var self = Container.call(this);
+ self.type = 'box'; // default
+ self.asset = 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
+ });
+ }
+ };
+ 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) {
+ // Seviye arttıkça hız artar
+ var base = 2 + level;
+ self.speedY = base + Math.random() * base;
+ self.speedX = (Math.random() - 0.5) * base;
+ };
+ self.update = function () {
+ if (self.isHit) return;
+ self.y += self.speedY;
+ self.x += self.speedX;
+ // Ekran dışına çıkarsa yok et
+ if (self.y > 2732 + 100 || self.x < -100 || self.x > 2048 + 100) {
+ self.destroy();
+ }
+ };
+ self.hit = function () {
+ if (self.isHit) return;
+ self.isHit = true;
+ // 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: 0x000000
+ backgroundColor: 0x222222
+});
+
+/****
+* Game Code
+****/
+// Atış efekti için ses
+// Vuruş efekti için küçük sarı daire
+// Hedefler için kırmızı daire
+// Karakterler için kutu ve elips şeklinde iki farklı karakter
+// Oyun değişkenleri
+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"
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.topRight.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);
+ // 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();
+ // Rastgele x, üstte başlasın
+ t.x = 200 + Math.random() * (2048 - 400);
+ t.y = -100 - Math.random() * 200;
+ 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;
+ }
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// Ekrana dokununca hedef vurma
+game.downTarget = function (x, y, obj) {
+ if (isSelectingCharacter) return;
+ // Hedeflere tıklanırsa vur
+ for (var i = targets.length - 1; i >= 0; i--) {
+ var t = targets[i];
+ if (t.isHit) continue;
+ var dx = t.x - x;
+ var dy = t.y - y;
+ if (dx * dx + dy * dy < 70 * 70) {
+ t.hit();
+ score += 10;
+ updateScoreText();
+ targetsLeft--;
+ if (targetsLeft <= 0) {
+ // Seviye tamamlandı
+ if (level < maxLevel) {
+ infoText.setText('Seviye ' + level + ' Tamamlandı!');
+ showNextButton('Sonraki Seviye', function () {
+ infoText.setText('');
+ clearTargets();
+ startLevel(level + 1);
+ });
+ } else {
+ infoText.setText('Tebrikler! Tüm seviyeler tamamlandı!');
+ showNextButton('Tekrar Oyna', function () {
+ infoText.setText('');
+ clearTargets();
+ startLevel(1);
+ });
+ }
+ }
+ break;
+ }
+ }
+};
+// 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();
+ // Ekran dışına çıkan hedefi sil
+ if (t.y > 2732 + 100 || t.x < -100 || t.x > 2048 + 100) {
+ t.destroy();
+ targets.splice(i, 1);
+ targetsLeft--;
+ if (targetsLeft <= 0) {
+ if (level < maxLevel) {
+ infoText.setText('Seviye ' + level + ' Tamamlandı!');
+ showNextButton('Sonraki Seviye', function () {
+ infoText.setText('');
+ clearTargets();
+ startLevel(level + 1);
+ });
+ } else {
+ infoText.setText('Tebrikler! Tüm seviyeler tamamlandı!');
+ showNextButton('Tekrar Oyna', function () {
+ infoText.setText('');
+ clearTargets();
+ startLevel(1);
+ });
+ }
+ }
+ }
+ }
+};
+// Tüm ekrana dokunma eventini hedef vurmak için kullan
+game.on('down', function (x, y, obj) {
+ game.downTarget(x, y, obj);
});
\ No newline at end of file