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