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
/**** * Classes ****/ var Bird = Container.expand(function () { var self = Container.call(this); var birdGraphics = self.attachAsset('bird', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = (Math.random() * 4 + 2) * (Math.random() > 0.5 ? 1 : -1); self.speedY = Math.random() * 2 - 1; self.lastX = 0; self.lastY = 0; self.update = function () { self.lastX = self.x; self.lastY = self.y; self.x += self.speedX; self.y += self.speedY; // Bounce off top and bottom if (self.y < 100 || self.y > 2632) { self.speedY *= -1; } }; return self; }); var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = 0; self.speedY = 0; self.lastX = 0; self.lastY = 0; self.update = function () { self.lastX = self.x; self.lastY = self.y; self.x += self.speedX; self.y += self.speedY; }; return self; }); var Gun = Container.expand(function () { var self = Container.call(this); var gunGraphics = self.attachAsset('gun', { anchorX: 0.5, anchorY: 1.0 }); self.targetX = 0; self.targetY = 0; self.aimAt = function (x, y) { self.targetX = x; self.targetY = y; var dx = x - self.x; var dy = y - self.y; var angle = Math.atan2(dy, dx); gunGraphics.rotation = angle + Math.PI / 2; }; return self; }); /**** * Initialize Game ****/ // Game variables var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Game variables var birds = []; var bullets = []; var gun; var lastBirdSpawn = 0; var gameStarted = false; // Create gun at bottom center gun = game.addChild(new Gun()); gun.x = 1024; gun.y = 2600; // Score display var scoreTxt = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Instructions var instructionTxt = new Text2('Tap to aim and shoot flying birds!', { size: 60, fill: 0xFFFF00 }); instructionTxt.anchor.set(0.5, 0.5); instructionTxt.x = 1024; instructionTxt.y = 1366; game.addChild(instructionTxt); // Remove instructions after 3 seconds LK.setTimeout(function () { if (instructionTxt.parent) { instructionTxt.destroy(); } }, 3000); // Game controls game.down = function (x, y, obj) { gameStarted = true; // Aim gun gun.aimAt(x, y); // Create bullet var bullet = game.addChild(new Bullet()); bullet.x = gun.x; bullet.y = gun.y - 60; bullet.lastX = bullet.x; bullet.lastY = bullet.y; // Calculate bullet direction var dx = x - gun.x; var dy = y - gun.y; var distance = Math.sqrt(dx * dx + dy * dy); var speed = 15; bullet.speedX = dx / distance * speed; bullet.speedY = dy / distance * speed; bullets.push(bullet); // Play shoot sound LK.getSound('shoot').play(); }; // Spawn birds periodically function spawnBird() { var bird = game.addChild(new Bird()); // Random spawn from sides if (Math.random() > 0.5) { bird.x = -50; bird.speedX = Math.abs(bird.speedX); } else { bird.x = 2098; bird.speedX = -Math.abs(bird.speedX); } bird.y = Math.random() * 1500 + 200; bird.lastX = bird.x; bird.lastY = bird.y; birds.push(bird); } // Main game update game.update = function () { if (!gameStarted) return; // Spawn birds if (LK.ticks - lastBirdSpawn > 120) { spawnBird(); lastBirdSpawn = LK.ticks; } // Update and check birds for (var i = birds.length - 1; i >= 0; i--) { var bird = birds[i]; // Remove birds that flew off screen if (bird.lastX >= -100 && bird.x < -100) { bird.destroy(); birds.splice(i, 1); continue; } if (bird.lastX <= 2148 && bird.x > 2148) { bird.destroy(); birds.splice(i, 1); continue; } } // Update and check bullets for (var j = bullets.length - 1; j >= 0; j--) { var bullet = bullets[j]; // Remove bullets that go off screen if (bullet.x < -50 || bullet.x > 2098 || bullet.y < -50 || bullet.y > 2782) { bullet.destroy(); bullets.splice(j, 1); continue; } // Check bullet-bird collisions for (var k = birds.length - 1; k >= 0; k--) { var bird = birds[k]; if (bullet.intersects(bird)) { // Hit! LK.setScore(LK.getScore() + 10); scoreTxt.setText('Score: ' + LK.getScore()); // Play hit sound LK.getSound('hit').play(); // Flash bird and remove LK.effects.flashObject(bird, 0xff0000, 200); // Remove bullet and bird bullet.destroy(); bullets.splice(j, 1); bird.destroy(); birds.splice(k, 1); break; } } } };
===================================================================
--- original.js
+++ change.js
@@ -1,437 +1,196 @@
/****
-* Plugins
-****/
-var tween = LK.import("@upit/tween.v1");
-
-/****
* Classes
****/
-// Bullet class
-var Bullet = Container.expand(function () {
+var Bird = Container.expand(function () {
var self = Container.call(this);
- var bulletGfx = self.attachAsset('bullet', {
+ var birdGraphics = self.attachAsset('bird', {
anchorX: 0.5,
anchorY: 0.5
});
- self.dx = 0;
- self.dy = 0;
- self.damage = 1;
- self.lifetime = 60; // ticks
+ self.speedX = (Math.random() * 4 + 2) * (Math.random() > 0.5 ? 1 : -1);
+ self.speedY = Math.random() * 2 - 1;
+ self.lastX = 0;
+ self.lastY = 0;
self.update = function () {
- self.x += self.dx;
- self.y += self.dy;
- self.lifetime--;
- if (self.lifetime <= 0) {
- self.destroy();
+ self.lastX = self.x;
+ self.lastY = self.y;
+ self.x += self.speedX;
+ self.y += self.speedY;
+ // Bounce off top and bottom
+ if (self.y < 100 || self.y > 2632) {
+ self.speedY *= -1;
}
};
return self;
});
-// Enemy class
-var Enemy = Container.expand(function () {
+var Bullet = Container.expand(function () {
var self = Container.call(this);
- var enemyGfx = self.attachAsset('enemyUnit', {
+ var bulletGraphics = self.attachAsset('bullet', {
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.speedX = 0;
+ self.speedY = 0;
+ self.lastX = 0;
+ self.lastY = 0;
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;
- }
+ self.lastX = self.x;
+ self.lastY = self.y;
+ self.x += self.speedX;
+ self.y += self.speedY;
};
return self;
});
-// Turret class
-var Turret = Container.expand(function () {
+var Gun = Container.expand(function () {
var self = Container.call(this);
- // Attach base
- var base = self.attachAsset('turretBase', {
+ var gunGraphics = self.attachAsset('gun', {
anchorX: 0.5,
- anchorY: 0.5
+ anchorY: 1.0
});
- // 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
- });
- }
- });
- }
+ self.targetX = 0;
+ self.targetY = 0;
+ self.aimAt = function (x, y) {
+ self.targetX = x;
+ self.targetY = y;
+ var dx = x - self.x;
+ var dy = y - self.y;
+ var angle = Math.atan2(dy, dx);
+ gunGraphics.rotation = angle + Math.PI / 2;
};
- // 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
****/
+// Game variables
var game = new LK.Game({
- backgroundColor: 0x222831
+ backgroundColor: 0x000000
});
/****
* 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 = [];
+// Game variables
+var birds = [];
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', {
+var gun;
+var lastBirdSpawn = 0;
+var gameStarted = false;
+// Create gun at bottom center
+gun = game.addChild(new Gun());
+gun.x = 1024;
+gun.y = 2600;
+// Score display
+var scoreTxt = new Text2('Score: 0', {
size: 80,
- fill: "#fff"
+ fill: 0xFFFFFF
});
-resourceTxt.anchor.set(0.5, 0);
-LK.gui.top.addChild(resourceTxt);
-// GUI: Wave display
-var waveTxt = new Text2('Wave: 1', {
- size: 80,
- fill: "#fff"
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Instructions
+var instructionTxt = new Text2('Tap to aim and shoot flying birds!', {
+ size: 60,
+ fill: 0xFFFF00
});
-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();
- }
+instructionTxt.anchor.set(0.5, 0.5);
+instructionTxt.x = 1024;
+instructionTxt.y = 1366;
+game.addChild(instructionTxt);
+// Remove instructions after 3 seconds
+LK.setTimeout(function () {
+ if (instructionTxt.parent) {
+ instructionTxt.destroy();
}
- updateResourceText();
-}
-// Build button event
-buildBtn.down = function (x, y, obj) {
- buildTurret();
+}, 3000);
+// Game controls
+game.down = function (x, y, obj) {
+ gameStarted = true;
+ // Aim gun
+ gun.aimAt(x, y);
+ // Create bullet
+ var bullet = game.addChild(new Bullet());
+ bullet.x = gun.x;
+ bullet.y = gun.y - 60;
+ bullet.lastX = bullet.x;
+ bullet.lastY = bullet.y;
+ // Calculate bullet direction
+ var dx = x - gun.x;
+ var dy = y - gun.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ var speed = 15;
+ bullet.speedX = dx / distance * speed;
+ bullet.speedY = dy / distance * speed;
+ bullets.push(bullet);
+ // Play shoot sound
+ LK.getSound('shoot').play();
};
-// 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();
+// Spawn birds periodically
+function spawnBird() {
+ var bird = game.addChild(new Bird());
+ // Random spawn from sides
+ if (Math.random() > 0.5) {
+ bird.x = -50;
+ bird.speedX = Math.abs(bird.speedX);
+ } else {
+ bird.x = 2098;
+ bird.speedX = -Math.abs(bird.speedX);
+ }
+ bird.y = Math.random() * 1500 + 200;
+ bird.lastX = bird.x;
+ bird.lastY = bird.y;
+ birds.push(bird);
}
-startWave();
// Main game update
game.update = function () {
- // Turrets update
- for (var i = 0; i < turrets.length; i++) {
- turrets[i].update();
+ if (!gameStarted) return;
+ // Spawn birds
+ if (LK.ticks - lastBirdSpawn > 120) {
+ spawnBird();
+ lastBirdSpawn = LK.ticks;
}
- // 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);
+ // Update and check birds
+ for (var i = birds.length - 1; i >= 0; i--) {
+ var bird = birds[i];
+ // Remove birds that flew off screen
+ if (bird.lastX >= -100 && bird.x < -100) {
+ bird.destroy();
+ birds.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;
- }
+ if (bird.lastX <= 2148 && bird.x > 2148) {
+ bird.destroy();
+ birds.splice(i, 1);
+ continue;
}
}
- // 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;
- }
+ // Update and check bullets
+ for (var j = bullets.length - 1; j >= 0; j--) {
+ var bullet = bullets[j];
+ // Remove bullets that go off screen
+ if (bullet.x < -50 || bullet.x > 2098 || bullet.y < -50 || bullet.y > 2782) {
+ bullet.destroy();
+ bullets.splice(j, 1);
+ continue;
}
- }
- // 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;
+ // Check bullet-bird collisions
+ for (var k = birds.length - 1; k >= 0; k--) {
+ var bird = birds[k];
+ if (bullet.intersects(bird)) {
+ // Hit!
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ // Play hit sound
+ LK.getSound('hit').play();
+ // Flash bird and remove
+ LK.effects.flashObject(bird, 0xff0000, 200);
+ // Remove bullet and bird
+ bullet.destroy();
+ bullets.splice(j, 1);
+ bird.destroy();
+ birds.splice(k, 1);
+ break;
}
- 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
+};
\ 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