User prompt
her çağ için arka planları assetlerden yararlanarak oyuna entegre et
User prompt
Modern çağ için arka plan assets i oluştur
User prompt
Medieval devri için arka plan asseti oluştur
User prompt
stone çağı için arka plan asseti oluştur
User prompt
Her çağ için arka plan asseti oluştur
User prompt
düşman tek bir düzlem boyunca hareket etsin
User prompt
çağ atladıkça karakterin ateş hızını arttır
User prompt
düşmanın geliş hızını yavaşlat
User prompt
düşman karakterlerin doğması için bi kule yap
User prompt
düşmanlarsan sağdan sola gelsinler
User prompt
savaşı yatay düzlemde pozisyonlandır
Code edit (1 edits merged)
Please save this source code
User prompt
Çağlar Savaşı
Initial prompt
çağlar savaşı oyunu yap
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Savunma birimi (Defender) var Defender = Container.expand(function () { var self = Container.call(this); // Çağa göre asset id self.age = 0; // 0: taş, 1: ortaçağ, 2: modern self.assetIds = ['defender_stone', 'defender_medieval', 'defender_modern']; self.asset = null; // Savunma birimini güncelle self.setAge = function (age) { self.age = age; if (self.asset) { self.removeChild(self.asset); } self.asset = self.attachAsset(self.assetIds[self.age], { anchorX: 0.5, anchorY: 0.5 }); }; self.setAge(0); // Sürükleme için self.down = function (x, y, obj) {}; self.up = function (x, y, obj) {}; return self; }); // Düşman var Enemy = Container.expand(function () { var self = Container.call(this); self.age = 0; // 0: taş, 1: ortaçağ, 2: modern self.assetIds = ['enemy_stone', 'enemy_medieval', 'enemy_modern']; self.asset = null; self.setAge = function (age) { self.age = age; if (self.asset) { self.removeChild(self.asset); } self.asset = self.attachAsset(self.assetIds[self.age], { anchorX: 0.5, anchorY: 0.5 }); }; self.setAge(0); // Düşman hızı çağ ve dalga ile artar self.speed = 3; // px/frame, yavaşlatıldı self.dirX = -1; self.dirY = 0; self.update = function () { self.x += self.dirX * self.speed; self.y += self.dirY * self.speed; }; return self; }); // Düşman doğma kulesi (Enemy Spawn Tower) var EnemyTower = Container.expand(function () { var self = Container.call(this); self.age = 0; // 0: taş, 1: ortaçağ, 2: modern self.assetIds = ['defender_stone', 'defender_medieval', 'defender_modern']; self.asset = null; self.setAge = function (age) { self.age = age; if (self.asset) { self.removeChild(self.asset); } self.asset = self.attachAsset(self.assetIds[self.age], { anchorX: 0.5, anchorY: 0.5 }); }; self.setAge(0); return self; }); // Mermi/Ok/Kurşun var Projectile = Container.expand(function () { var self = Container.call(this); self.age = 0; // 0: taş, 1: ortaçağ, 2: modern self.assetIds = ['projectile_stone', 'projectile_medieval', 'projectile_modern']; self.asset = null; self.setAge = function (age) { self.age = age; if (self.asset) { self.removeChild(self.asset); } self.asset = self.attachAsset(self.assetIds[self.age], { anchorX: 0.5, anchorY: 0.5 }); }; self.setAge(0); // Hedefe doğru hareket self.speed = 40; // px/frame self.targetX = 0; self.targetY = 0; self.dirX = 0; self.dirY = 0; self.setTarget = function (x, y) { var dx = x - self.x; var dy = y - self.y; var len = Math.sqrt(dx * dx + dy * dy); if (len === 0) { self.dirX = 1; self.dirY = 0; } else { self.dirX = dx / len; self.dirY = dy / len; } }; self.update = function () { self.x += self.dirX * self.speed; self.y += self.dirY * self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // Geçiş efekti için // Düşmanlar (çağa göre farklı renkler) // Farklı çağlar için mermi/ok/kurşun // Silahlar ve çağlar için farklı renklerde savunma birimi // Oyun parametreleri var AGES = [{ name: "Taş Çağı", scoreToNext: 10 }, { name: "Orta Çağ", scoreToNext: 25 }, { name: "Modern Çağ", scoreToNext: 50 }]; var currentAge = 0; var score = 0; var wave = 1; var enemies = []; var projectiles = []; var defender = null; var dragNode = null; var lastTouch = { x: 1024, y: 2300 }; var canShoot = true; // Ateş hızı çağlara göre: taş 200ms, ortaçağ 120ms, modern 60ms var shootCooldowns = [200, 120, 60]; var shootCooldown = shootCooldowns[0]; var lastShotTime = 0; var ageFlash = null; var ageText = null; var scoreTxt = null; var waveTxt = null; var ageTxt = null; var gameOver = false; // Savunma birimini oluştur ve ortala defender = new Defender(); defender.x = 180; defender.y = 1366; game.addChild(defender); // Skor ve çağ göstergeleri scoreTxt = new Text2('0', { size: 100, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); ageTxt = new Text2(AGES[currentAge].name, { size: 70, fill: 0xFFE066 }); ageTxt.anchor.set(0.5, 0); LK.gui.top.addChild(ageTxt); waveTxt = new Text2('Dalga: 1', { size: 60, fill: "#fff" }); waveTxt.anchor.set(0.5, 0); LK.gui.top.addChild(waveTxt); // GUI pozisyonları scoreTxt.y = 20; scoreTxt.x = 2048 / 2; ageTxt.y = 140; ageTxt.x = 2048 / 2; waveTxt.y = 220; waveTxt.x = 2048 / 2; // Çağ geçiş efekti function showAgeFlash(newAge) { if (ageFlash) { ageFlash.destroy(); ageFlash = null; } ageFlash = LK.getAsset('age_flash', { anchorX: 0, anchorY: 0, x: 0, y: 0, alpha: 0.0 }); game.addChild(ageFlash); ageFlash.alpha = 0.8; var txt = new Text2(AGES[newAge].name + "!", { size: 180, fill: "#222" }); txt.anchor.set(0.5, 0.5); txt.x = 2048 / 2; txt.y = 2732 / 2; game.addChild(txt); // Kule çağını güncelle if (typeof enemyTower !== "undefined" && enemyTower.setAge) { enemyTower.setAge(newAge); } tween(ageFlash, { alpha: 0 }, { duration: 1200, easing: tween.linear, onFinish: function onFinish() { ageFlash.destroy(); txt.destroy(); ageFlash = null; } }); tween(txt, { alpha: 0 }, { duration: 1200, easing: tween.linear }); } // Düşman dalgası oluştur function spawnWave() { var count = 3 + wave; // Dalga başına düşman sayısı artar var minY = 180, maxY = 2732 - 180; for (var i = 0; i < count; i++) { var enemy = new Enemy(); enemy.setAge(currentAge); enemy.x = 2048 + 150 + i * 180; // Tüm düşmanlar aynı yatay çizgide hareket etsin (ekranın ortası) enemy.y = 1366; // Hız çağ ve dalgaya göre artar (yavaşlatıldı) enemy.speed = 3 + currentAge * 1 + Math.floor(wave / 3); enemies.push(enemy); game.addChild(enemy); } } // İlk dalga spawnWave(); // Sürükleme ve ateşleme function handleMove(x, y, obj) { if (dragNode) { // Savunma birimini ekranda tut var minX = 180, maxX = 180; var minY = 180, maxY = 2732 - 180; dragNode.x = minX; // Defender stays at left edge dragNode.y = Math.max(minY, Math.min(maxY, y)); lastTouch.x = dragNode.x; lastTouch.y = dragNode.y; } } game.down = function (x, y, obj) { // Savunma birimini sürükle if (!gameOver) { dragNode = defender; handleMove(x, y, obj); // Ateşle tryShoot(x, y); } }; game.move = function (x, y, obj) { handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; }; // Ateşleme fonksiyonu function tryShoot(x, y) { var now = Date.now(); if (canShoot && now - lastShotTime > shootCooldown) { var proj = new Projectile(); proj.setAge(currentAge); proj.x = defender.x + 80; proj.y = defender.y; proj.setTarget(x, y); projectiles.push(proj); game.addChild(proj); lastShotTime = now; } } // Oyun güncelleme game.update = function () { if (gameOver) return; // Mermileri güncelle for (var i = projectiles.length - 1; i >= 0; i--) { var p = projectiles[i]; p.update(); // Ekran dışıysa sil if (p.x < -100 || p.x > 2148) { p.destroy(); projectiles.splice(i, 1); } } // Düşmanları güncelle for (var j = enemies.length - 1; j >= 0; j--) { var e = enemies[j]; e.update(); // Düşman savunma birimine ulaştıysa oyun biter if (e.intersects(defender)) { LK.effects.flashScreen(0xff0000, 1000); gameOver = true; LK.showGameOver(); return; } // Düşman ekranın solundan geçtiyse oyun biter if (e.x < -100) { LK.effects.flashScreen(0xff0000, 1000); gameOver = true; LK.showGameOver(); return; } // Mermi ile çarpışma for (var k = projectiles.length - 1; k >= 0; k--) { var p = projectiles[k]; if (e.intersects(p)) { // Düşman ve mermi yok olur, skor artar e.destroy(); p.destroy(); enemies.splice(j, 1); projectiles.splice(k, 1); score += 1; LK.setScore(score); scoreTxt.setText(score); // Çağ atlama kontrolü if (currentAge < AGES.length - 1 && score >= AGES[currentAge].scoreToNext) { currentAge += 1; defender.setAge(currentAge); showAgeFlash(currentAge); ageTxt.setText(AGES[currentAge].name); // Çağ atladıkça ateş hızını güncelle shootCooldown = shootCooldowns[currentAge]; } // Kazanma kontrolü if (score >= AGES[AGES.length - 1].scoreToNext) { LK.showYouWin(); gameOver = true; return; } break; } } } // Dalga bitti mi? if (enemies.length === 0 && !gameOver) { wave += 1; waveTxt.setText('Dalga: ' + wave); spawnWave(); } }; // Oyun başında çağ ve skorları sıfırla function resetGame() { currentAge = 0; score = 0; wave = 1; enemies = []; projectiles = []; defender.setAge(0); shootCooldown = shootCooldowns[0]; defender.x = 180; defender.y = 1366; // Kuleyi de sıfırla if (typeof enemyTower !== "undefined" && enemyTower.setAge) { enemyTower.setAge(0); enemyTower.x = 2048 - 180; enemyTower.y = 1366; } scoreTxt.setText('0'); ageTxt.setText(AGES[0].name); waveTxt.setText('Dalga: 1'); gameOver = false; } // Oyun yeniden başlatıldığında sıfırla LK.on('gameStart', function () { resetGame(); // Tüm düşman ve mermileri sil for (var i = 0; i < enemies.length; i++) { enemies[i].destroy(); } for (var j = 0; j < projectiles.length; j++) { projectiles[j].destroy(); } enemies = []; projectiles = []; spawnWave(); });
===================================================================
--- original.js
+++ change.js
taş devri döneminde savaşçı. In-Game asset. 2d. High contrast. No shadows. taş devri asker
Ortaçağ dönemi savaşçı. In-Game asset. 2d. High contrast. No shadows
Modern çağ dönemi savaşçı. In-Game asset. 2d. High contrast. No shadows
Taş devri düşman. In-Game asset. 2d. High contrast. No shadows
Modern çağ düşman. In-Game asset. 2d. High contrast. No shadows
Orta çağ dönemi düşman. In-Game asset. 2d. High contrast. No shadows
Taş devri cephane mermisi. In-Game asset. 2d. High contrast. No shadows
Modern çağ dönemi cephane mermisi. In-Game asset. 2d. High contrast. No shadows
Orta çağ dönemi silah mermisi. In-Game asset. 2d. High contrast. No shadows
Taş devri arka plan. In-Game asset. 2d. High contrast. No shadows
Modern çağ için savaş arka planı. In-Game asset. 2d. High contrast. No shadows
Orta çağ dönemi için savaş arka planı. In-Game asset. 2d. High contrast. No shadows
Taş devri Kule. In-Game asset. 2d. High contrast. No shadows
Orta çağ dönemi kule savunma. In-Game asset. 2d. High contrast. No shadows
modern çağ dönemi kule savunma. In-Game asset. 2d. High contrast. No shadows