User prompt
her atak 100 hedef olsun
User prompt
100 level olsun.Her level 5 atak olsun.
User prompt
mermi hızı iki kat artsın
User prompt
kule atışını yarıya düşür.
User prompt
arka ekran rengi ayarla
User prompt
20 canımız olsun
User prompt
kuşlar 4 katı gelsin
User prompt
her 100 skorda namlu adedi ve mermiler çoğalsın
User prompt
mermiler 4 kat hızlansın
User prompt
6 farklı kuş türü olsun.
User prompt
uçan kuşları silahla vurma oyunu yap
User prompt
Compilation error[L15]: Plugins failed to load.clen
Code edit (1 edits merged)
Please save this source code
User prompt
Modern Commander: Base Defense
Initial prompt
modern commander tarzı bir oyun olsun
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGfx = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.dx = 0; self.dy = 0; self.damage = 1; self.lifetime = 60; // ticks self.update = function () { self.x += self.dx; self.y += self.dy; self.lifetime--; if (self.lifetime <= 0) { self.destroy(); } }; return self; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGfx = self.attachAsset('enemyUnit', { anchorX: 0.5, anchorY: 0.5 }); self.hp = 2 + wave; self.speed = 2 + 0.2 * wave; self.targetX = commandCenterPos.x; self.targetY = commandCenterPos.y; self.reward = 10 + 2 * wave; self.update = function () { var dx = self.targetX - self.x; var dy = self.targetY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 2) { self.x += dx / dist * self.speed; self.y += dy / dist * self.speed; } }; return self; }); // Turret class var Turret = Container.expand(function () { var self = Container.call(this); // Attach base var base = self.attachAsset('turretBase', { anchorX: 0.5, anchorY: 0.5 }); // Attach barrel var barrel = self.attachAsset('turretBarrel', { anchorX: 0.5, anchorY: 0.85, y: -30 }); self.level = 1; self.fireRate = 60; // ticks between shots self.lastShot = 0; self.range = 500; self.damage = 1; self.upgrade = function () { if (self.level < 3) { self.level += 1; self.fireRate = Math.max(30, self.fireRate - 10); self.range += 80; self.damage += 1; // Animate upgrade tween(self, { scaleX: 1.2, scaleY: 1.2 }, { duration: 120, easing: tween.easeOut, onFinish: function onFinish() { tween(self, { scaleX: 1, scaleY: 1 }, { duration: 120, easing: tween.easeIn }); } }); } }; // Find nearest enemy in range self.findTarget = function () { var minDist = self.range; var target = null; for (var i = 0; i < enemies.length; i++) { var e = enemies[i]; var dx = e.x - self.x; var dy = e.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist < minDist) { minDist = dist; target = e; } } return target; }; // Called every tick self.update = function () { // Find target var target = self.findTarget(); if (target) { // Rotate barrel towards target var dx = target.x - self.x; var dy = target.y - self.y; var angle = Math.atan2(dy, dx) - Math.PI / 2; barrel.rotation = angle; // Fire if ready if (LK.ticks - self.lastShot >= self.fireRate) { self.lastShot = LK.ticks; var b = new Bullet(); b.x = self.x; b.y = self.y; b.rotation = angle + Math.PI / 2; b.dx = Math.cos(angle + Math.PI / 2) * 32; b.dy = Math.sin(angle + Math.PI / 2) * 32; b.damage = self.damage; bullets.push(b); game.addChild(b); } } }; // Touch to upgrade self.down = function (x, y, obj) { if (resources >= turretUpgradeCost(self.level)) { resources -= turretUpgradeCost(self.level); self.upgrade(); updateResourceText(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222831 }); /**** * Game Code ****/ // Build button // Upgrade button // Bullet // Enemy unit // Command center // Turret barrel // Turret base // Game constants var baseWidth = 2048; var baseHeight = 2732; var commandCenterPos = { x: baseWidth / 2, y: baseHeight - 350 }; var turretSpots = [{ x: baseWidth / 2 - 350, y: baseHeight - 700 }, { x: baseWidth / 2 + 350, y: baseHeight - 700 }, { x: baseWidth / 2 - 600, y: baseHeight - 1100 }, { x: baseWidth / 2 + 600, y: baseHeight - 1100 }, { x: baseWidth / 2, y: baseHeight - 1100 }]; var maxTurrets = 5; var turretBuildCost = 50; function turretUpgradeCost(level) { return 40 * level; } var wave = 1; var enemies = []; var bullets = []; var turrets = []; var resources = 100; var commandCenterHP = 10; var isPlacingTurret = false; // Command Center var commandCenter = LK.getAsset('commandCenter', { anchorX: 0.5, anchorY: 0.5, x: commandCenterPos.x, y: commandCenterPos.y }); game.addChild(commandCenter); // GUI: Resource display var resourceTxt = new Text2('Resources: 100', { size: 80, fill: "#fff" }); resourceTxt.anchor.set(0.5, 0); LK.gui.top.addChild(resourceTxt); // GUI: Wave display var waveTxt = new Text2('Wave: 1', { size: 80, fill: "#fff" }); waveTxt.anchor.set(0.5, 0); LK.gui.top.addChild(waveTxt); waveTxt.y = 90; // GUI: Command Center HP var hpTxt = new Text2('Base HP: 10', { size: 80, fill: "#fff" }); hpTxt.anchor.set(0.5, 0); LK.gui.top.addChild(hpTxt); hpTxt.y = 180; // GUI: Build Turret Button var buildBtn = LK.getAsset('buildBtn', { anchorX: 0.5, anchorY: 0.5, x: baseWidth / 2 - 250, y: baseHeight - 180 }); var buildBtnTxt = new Text2('Build Turret\n50', { size: 48, fill: "#fff" }); buildBtnTxt.anchor.set(0.5, 0.5); buildBtn.addChild(buildBtnTxt); game.addChild(buildBtn); // GUI: Upgrade All Button var upgradeBtn = LK.getAsset('upgradeBtn', { anchorX: 0.5, anchorY: 0.5, x: baseWidth / 2 + 250, y: baseHeight - 180 }); var upgradeBtnTxt = new Text2('Upgrade All', { size: 48, fill: "#fff" }); upgradeBtnTxt.anchor.set(0.5, 0.5); upgradeBtn.addChild(upgradeBtnTxt); game.addChild(upgradeBtn); // Update resource text function updateResourceText() { resourceTxt.setText('Resources: ' + resources); } function updateWaveText() { waveTxt.setText('Wave: ' + wave); } function updateHPText() { hpTxt.setText('Base HP: ' + commandCenterHP); } // Build turret on next available spot function buildTurret() { if (resources < turretBuildCost) return; if (turrets.length >= maxTurrets) return; var spot = turretSpots[turrets.length]; var t = new Turret(); t.x = spot.x; t.y = spot.y; turrets.push(t); game.addChild(t); resources -= turretBuildCost; updateResourceText(); } // Upgrade all turrets function upgradeAllTurrets() { for (var i = 0; i < turrets.length; i++) { var t = turrets[i]; if (t.level < 3 && resources >= turretUpgradeCost(t.level)) { resources -= turretUpgradeCost(t.level); t.upgrade(); } } updateResourceText(); } // Build button event buildBtn.down = function (x, y, obj) { buildTurret(); }; // Upgrade button event upgradeBtn.down = function (x, y, obj) { upgradeAllTurrets(); }; // Place initial turret buildTurret(); // Enemy spawn logic var spawnTimer = 0; var enemiesToSpawn = 0; function startWave() { enemiesToSpawn = 4 + wave * 2; spawnTimer = 0; updateWaveText(); } startWave(); // Main game update game.update = function () { // Turrets update for (var i = 0; i < turrets.length; i++) { turrets[i].update(); } // Bullets update for (var i = bullets.length - 1; i >= 0; i--) { var b = bullets[i]; b.update(); // Remove if out of bounds if (b.x < -100 || b.x > baseWidth + 100 || b.y < -100 || b.y > baseHeight + 100 || b.lifetime <= 0) { b.destroy(); bullets.splice(i, 1); continue; } // Check collision with enemies for (var j = enemies.length - 1; j >= 0; j--) { var e = enemies[j]; if (b.intersects(e)) { e.hp -= b.damage; b.destroy(); bullets.splice(i, 1); // Animate hit tween(e, { scaleX: 1.2, scaleY: 1.2 }, { duration: 80, onFinish: function onFinish() { tween(e, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); if (e.hp <= 0) { // Enemy destroyed resources += e.reward; updateResourceText(); e.destroy(); enemies.splice(j, 1); } break; } } } // Enemies update for (var i = enemies.length - 1; i >= 0; i--) { var e = enemies[i]; e.update(); // Check if reached command center if (e.intersects(commandCenter)) { commandCenterHP -= 1; updateHPText(); // Animate base hit LK.effects.flashObject(commandCenter, 0xff0000, 300); e.destroy(); enemies.splice(i, 1); if (commandCenterHP <= 0) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } } // Enemy spawn if (enemiesToSpawn > 0) { if (spawnTimer <= 0) { // Spawn enemy at random edge var edge = Math.floor(Math.random() * 3); var ex, ey; if (edge === 0) { // left ex = 100; ey = 600 + Math.random() * 800; } else if (edge === 1) { // right ex = baseWidth - 100; ey = 600 + Math.random() * 800; } else { // top ex = baseWidth / 2 - 400 + Math.random() * 800; ey = 100; } var enemy = new Enemy(); enemy.x = ex; enemy.y = ey; enemies.push(enemy); game.addChild(enemy); enemiesToSpawn--; spawnTimer = Math.max(30, 90 - wave * 2); } else { spawnTimer--; } } else if (enemies.length === 0) { // Next wave wave++; commandCenterHP = Math.min(10, commandCenterHP + 2); updateHPText(); startWave(); } }; // Touch to upgrade turrets directly game.down = function (x, y, obj) { // Check if touch is on a turret for (var i = 0; i < turrets.length; i++) { var t = turrets[i]; var dx = x - t.x; var dy = y - t.y; if (dx * dx + dy * dy < 100 * 100) { // Try upgrade if (resources >= turretUpgradeCost(t.level) && t.level < 3) { resources -= turretUpgradeCost(t.level); t.upgrade(); updateResourceText(); } return; } } }; // Prevent placing elements in top left 100x100 // (All GUI is centered or at bottom, so nothing to do here)
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,437 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Bullet class
+var Bullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletGfx = self.attachAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.dx = 0;
+ self.dy = 0;
+ self.damage = 1;
+ self.lifetime = 60; // ticks
+ self.update = function () {
+ self.x += self.dx;
+ self.y += self.dy;
+ self.lifetime--;
+ if (self.lifetime <= 0) {
+ self.destroy();
+ }
+ };
+ return self;
+});
+// Enemy class
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGfx = self.attachAsset('enemyUnit', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.hp = 2 + wave;
+ self.speed = 2 + 0.2 * wave;
+ self.targetX = commandCenterPos.x;
+ self.targetY = commandCenterPos.y;
+ self.reward = 10 + 2 * wave;
+ self.update = function () {
+ var dx = self.targetX - self.x;
+ var dy = self.targetY - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist > 2) {
+ self.x += dx / dist * self.speed;
+ self.y += dy / dist * self.speed;
+ }
+ };
+ return self;
+});
+// Turret class
+var Turret = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach base
+ var base = self.attachAsset('turretBase', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Attach barrel
+ var barrel = self.attachAsset('turretBarrel', {
+ anchorX: 0.5,
+ anchorY: 0.85,
+ y: -30
+ });
+ self.level = 1;
+ self.fireRate = 60; // ticks between shots
+ self.lastShot = 0;
+ self.range = 500;
+ self.damage = 1;
+ self.upgrade = function () {
+ if (self.level < 3) {
+ self.level += 1;
+ self.fireRate = Math.max(30, self.fireRate - 10);
+ self.range += 80;
+ self.damage += 1;
+ // Animate upgrade
+ tween(self, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 120,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 120,
+ easing: tween.easeIn
+ });
+ }
+ });
+ }
+ };
+ // Find nearest enemy in range
+ self.findTarget = function () {
+ var minDist = self.range;
+ var target = null;
+ for (var i = 0; i < enemies.length; i++) {
+ var e = enemies[i];
+ var dx = e.x - self.x;
+ var dy = e.y - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < minDist) {
+ minDist = dist;
+ target = e;
+ }
+ }
+ return target;
+ };
+ // Called every tick
+ self.update = function () {
+ // Find target
+ var target = self.findTarget();
+ if (target) {
+ // Rotate barrel towards target
+ var dx = target.x - self.x;
+ var dy = target.y - self.y;
+ var angle = Math.atan2(dy, dx) - Math.PI / 2;
+ barrel.rotation = angle;
+ // Fire if ready
+ if (LK.ticks - self.lastShot >= self.fireRate) {
+ self.lastShot = LK.ticks;
+ var b = new Bullet();
+ b.x = self.x;
+ b.y = self.y;
+ b.rotation = angle + Math.PI / 2;
+ b.dx = Math.cos(angle + Math.PI / 2) * 32;
+ b.dy = Math.sin(angle + Math.PI / 2) * 32;
+ b.damage = self.damage;
+ bullets.push(b);
+ game.addChild(b);
+ }
+ }
+ };
+ // Touch to upgrade
+ self.down = function (x, y, obj) {
+ if (resources >= turretUpgradeCost(self.level)) {
+ resources -= turretUpgradeCost(self.level);
+ self.upgrade();
+ updateResourceText();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x222831
+});
+
+/****
+* Game Code
+****/
+// Build button
+// Upgrade button
+// Bullet
+// Enemy unit
+// Command center
+// Turret barrel
+// Turret base
+// Game constants
+var baseWidth = 2048;
+var baseHeight = 2732;
+var commandCenterPos = {
+ x: baseWidth / 2,
+ y: baseHeight - 350
+};
+var turretSpots = [{
+ x: baseWidth / 2 - 350,
+ y: baseHeight - 700
+}, {
+ x: baseWidth / 2 + 350,
+ y: baseHeight - 700
+}, {
+ x: baseWidth / 2 - 600,
+ y: baseHeight - 1100
+}, {
+ x: baseWidth / 2 + 600,
+ y: baseHeight - 1100
+}, {
+ x: baseWidth / 2,
+ y: baseHeight - 1100
+}];
+var maxTurrets = 5;
+var turretBuildCost = 50;
+function turretUpgradeCost(level) {
+ return 40 * level;
+}
+var wave = 1;
+var enemies = [];
+var bullets = [];
+var turrets = [];
+var resources = 100;
+var commandCenterHP = 10;
+var isPlacingTurret = false;
+// Command Center
+var commandCenter = LK.getAsset('commandCenter', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: commandCenterPos.x,
+ y: commandCenterPos.y
+});
+game.addChild(commandCenter);
+// GUI: Resource display
+var resourceTxt = new Text2('Resources: 100', {
+ size: 80,
+ fill: "#fff"
+});
+resourceTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(resourceTxt);
+// GUI: Wave display
+var waveTxt = new Text2('Wave: 1', {
+ size: 80,
+ fill: "#fff"
+});
+waveTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(waveTxt);
+waveTxt.y = 90;
+// GUI: Command Center HP
+var hpTxt = new Text2('Base HP: 10', {
+ size: 80,
+ fill: "#fff"
+});
+hpTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(hpTxt);
+hpTxt.y = 180;
+// GUI: Build Turret Button
+var buildBtn = LK.getAsset('buildBtn', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: baseWidth / 2 - 250,
+ y: baseHeight - 180
+});
+var buildBtnTxt = new Text2('Build Turret\n50', {
+ size: 48,
+ fill: "#fff"
+});
+buildBtnTxt.anchor.set(0.5, 0.5);
+buildBtn.addChild(buildBtnTxt);
+game.addChild(buildBtn);
+// GUI: Upgrade All Button
+var upgradeBtn = LK.getAsset('upgradeBtn', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: baseWidth / 2 + 250,
+ y: baseHeight - 180
+});
+var upgradeBtnTxt = new Text2('Upgrade All', {
+ size: 48,
+ fill: "#fff"
+});
+upgradeBtnTxt.anchor.set(0.5, 0.5);
+upgradeBtn.addChild(upgradeBtnTxt);
+game.addChild(upgradeBtn);
+// Update resource text
+function updateResourceText() {
+ resourceTxt.setText('Resources: ' + resources);
+}
+function updateWaveText() {
+ waveTxt.setText('Wave: ' + wave);
+}
+function updateHPText() {
+ hpTxt.setText('Base HP: ' + commandCenterHP);
+}
+// Build turret on next available spot
+function buildTurret() {
+ if (resources < turretBuildCost) return;
+ if (turrets.length >= maxTurrets) return;
+ var spot = turretSpots[turrets.length];
+ var t = new Turret();
+ t.x = spot.x;
+ t.y = spot.y;
+ turrets.push(t);
+ game.addChild(t);
+ resources -= turretBuildCost;
+ updateResourceText();
+}
+// Upgrade all turrets
+function upgradeAllTurrets() {
+ for (var i = 0; i < turrets.length; i++) {
+ var t = turrets[i];
+ if (t.level < 3 && resources >= turretUpgradeCost(t.level)) {
+ resources -= turretUpgradeCost(t.level);
+ t.upgrade();
+ }
+ }
+ updateResourceText();
+}
+// Build button event
+buildBtn.down = function (x, y, obj) {
+ buildTurret();
+};
+// Upgrade button event
+upgradeBtn.down = function (x, y, obj) {
+ upgradeAllTurrets();
+};
+// Place initial turret
+buildTurret();
+// Enemy spawn logic
+var spawnTimer = 0;
+var enemiesToSpawn = 0;
+function startWave() {
+ enemiesToSpawn = 4 + wave * 2;
+ spawnTimer = 0;
+ updateWaveText();
+}
+startWave();
+// Main game update
+game.update = function () {
+ // Turrets update
+ for (var i = 0; i < turrets.length; i++) {
+ turrets[i].update();
+ }
+ // Bullets update
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ var b = bullets[i];
+ b.update();
+ // Remove if out of bounds
+ if (b.x < -100 || b.x > baseWidth + 100 || b.y < -100 || b.y > baseHeight + 100 || b.lifetime <= 0) {
+ b.destroy();
+ bullets.splice(i, 1);
+ continue;
+ }
+ // Check collision with enemies
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ var e = enemies[j];
+ if (b.intersects(e)) {
+ e.hp -= b.damage;
+ b.destroy();
+ bullets.splice(i, 1);
+ // Animate hit
+ tween(e, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 80,
+ onFinish: function onFinish() {
+ tween(e, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 80
+ });
+ }
+ });
+ if (e.hp <= 0) {
+ // Enemy destroyed
+ resources += e.reward;
+ updateResourceText();
+ e.destroy();
+ enemies.splice(j, 1);
+ }
+ break;
+ }
+ }
+ }
+ // Enemies update
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var e = enemies[i];
+ e.update();
+ // Check if reached command center
+ if (e.intersects(commandCenter)) {
+ commandCenterHP -= 1;
+ updateHPText();
+ // Animate base hit
+ LK.effects.flashObject(commandCenter, 0xff0000, 300);
+ e.destroy();
+ enemies.splice(i, 1);
+ if (commandCenterHP <= 0) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ }
+ // Enemy spawn
+ if (enemiesToSpawn > 0) {
+ if (spawnTimer <= 0) {
+ // Spawn enemy at random edge
+ var edge = Math.floor(Math.random() * 3);
+ var ex, ey;
+ if (edge === 0) {
+ // left
+ ex = 100;
+ ey = 600 + Math.random() * 800;
+ } else if (edge === 1) {
+ // right
+ ex = baseWidth - 100;
+ ey = 600 + Math.random() * 800;
+ } else {
+ // top
+ ex = baseWidth / 2 - 400 + Math.random() * 800;
+ ey = 100;
+ }
+ var enemy = new Enemy();
+ enemy.x = ex;
+ enemy.y = ey;
+ enemies.push(enemy);
+ game.addChild(enemy);
+ enemiesToSpawn--;
+ spawnTimer = Math.max(30, 90 - wave * 2);
+ } else {
+ spawnTimer--;
+ }
+ } else if (enemies.length === 0) {
+ // Next wave
+ wave++;
+ commandCenterHP = Math.min(10, commandCenterHP + 2);
+ updateHPText();
+ startWave();
+ }
+};
+// Touch to upgrade turrets directly
+game.down = function (x, y, obj) {
+ // Check if touch is on a turret
+ for (var i = 0; i < turrets.length; i++) {
+ var t = turrets[i];
+ var dx = x - t.x;
+ var dy = y - t.y;
+ if (dx * dx + dy * dy < 100 * 100) {
+ // Try upgrade
+ if (resources >= turretUpgradeCost(t.level) && t.level < 3) {
+ resources -= turretUpgradeCost(t.level);
+ t.upgrade();
+ updateResourceText();
+ }
+ return;
+ }
+ }
+};
+// Prevent placing elements in top left 100x100
+// (All GUI is centered or at bottom, so nothing to do here)
\ No newline at end of file
uçan kuş. In-Game asset. 2d. High contrast. No shadows
havan. In-Game asset. 2d. High contrast. No shadows
mızrak ucu yukarı olsun.. In-Game asset. 2d. High contrast. No shadows uzun ve ince saplı.
uçan kaz. In-Game asset. 2d. High contrast. No shadows
bulut. In-Game asset. 2d. High contrast. No shadows
güneş. In-Game asset. 2d. High contrast. No shadows
çimen uzun otlar.. In-Game asset. 2d. High contrast. No shadows
ağaç çınar. In-Game asset. 2d. High contrast. No shadows
karlı büyük dağ.. In-Game asset. 2d. High contrast. No shadows
grii dağlar.. In-Game asset. 2d. High contrast. No shadows
ağaçlı, çimenli dağ.. In-Game asset. 2d. High contrast. No shadows