User prompt
Ok atarken enerji artmasin durunca artsin
User prompt
Enerji her saniye artsın ve her okta 2 enerji harcasin
User prompt
Enerji olsun enerji 100 olsun her ok firlattiginda azalsın
Code edit (1 edits merged)
Please save this source code
User prompt
Arrow Defense
Initial prompt
Bana oyun yap sol da duran önüne çöp adamlar çıkan onlara oklarla vururup gelisien
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Archer = Container.expand(function () { var self = Container.call(this); var archerGraphics = self.attachAsset('archer', { anchorX: 0.5, anchorY: 0.5 }); return self; }); var Arrow = Container.expand(function () { var self = Container.call(this); var arrowGraphics = self.attachAsset('arrow', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = 0; self.speedY = 0; self.update = function () { self.x += self.speedX; self.y += self.speedY; }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -2; self.update = function () { self.x += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var archer = game.addChild(new Archer()); archer.x = 150; archer.y = 2732 / 2; var arrows = []; var enemies = []; var enemySpawnTimer = 0; var enemySpawnRate = 120; // frames between spawns var scoreTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.setText(LK.getScore()); game.down = function (x, y, obj) { // Calculate direction from archer to tap point var dirX = x - archer.x; var dirY = y - archer.y; var distance = Math.sqrt(dirX * dirX + dirY * dirY); // Normalize direction var normalX = dirX / distance; var normalY = dirY / distance; // Create arrow var newArrow = new Arrow(); newArrow.x = archer.x; newArrow.y = archer.y; newArrow.speedX = normalX * 15; newArrow.speedY = normalY * 15; // Rotate arrow to face direction newArrow.rotation = Math.atan2(normalY, normalX); arrows.push(newArrow); game.addChild(newArrow); LK.getSound('shoot').play(); }; game.update = function () { // Update enemy spawn timer enemySpawnTimer++; if (enemySpawnTimer >= enemySpawnRate) { enemySpawnTimer = 0; // Spawn new enemy var newEnemy = new Enemy(); newEnemy.x = 2048 + 50; newEnemy.y = Math.random() * (2732 - 200) + 100; enemies.push(newEnemy); game.addChild(newEnemy); // Increase difficulty over time if (enemySpawnRate > 30) { enemySpawnRate -= 0.5; } } // Update arrows for (var i = arrows.length - 1; i >= 0; i--) { var arrow = arrows[i]; // Remove arrows that go off screen if (arrow.x > 2100 || arrow.x < -50 || arrow.y > 2800 || arrow.y < -50) { arrow.destroy(); arrows.splice(i, 1); continue; } // Check arrow-enemy collisions for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (arrow.intersects(enemy)) { // Hit enemy LK.setScore(LK.getScore() + 10); scoreTxt.setText(LK.getScore()); LK.getSound('hit').play(); LK.effects.flashObject(enemy, 0xff0000, 200); // Remove arrow and enemy arrow.destroy(); arrows.splice(i, 1); enemy.destroy(); enemies.splice(j, 1); break; } } } // Update enemies and check if they reached the archer for (var k = enemies.length - 1; k >= 0; k--) { var enemy = enemies[k]; // Check if enemy reached archer if (enemy.x <= archer.x + 50) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,141 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Archer = Container.expand(function () {
+ var self = Container.call(this);
+ var archerGraphics = self.attachAsset('archer', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ return self;
+});
+var Arrow = Container.expand(function () {
+ var self = Container.call(this);
+ var arrowGraphics = self.attachAsset('arrow', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speedX = 0;
+ self.speedY = 0;
+ self.update = function () {
+ self.x += self.speedX;
+ self.y += self.speedY;
+ };
+ return self;
+});
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = -2;
+ self.update = function () {
+ self.x += self.speed;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+var archer = game.addChild(new Archer());
+archer.x = 150;
+archer.y = 2732 / 2;
+var arrows = [];
+var enemies = [];
+var enemySpawnTimer = 0;
+var enemySpawnRate = 120; // frames between spawns
+var scoreTxt = new Text2('0', {
+ size: 100,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+scoreTxt.setText(LK.getScore());
+game.down = function (x, y, obj) {
+ // Calculate direction from archer to tap point
+ var dirX = x - archer.x;
+ var dirY = y - archer.y;
+ var distance = Math.sqrt(dirX * dirX + dirY * dirY);
+ // Normalize direction
+ var normalX = dirX / distance;
+ var normalY = dirY / distance;
+ // Create arrow
+ var newArrow = new Arrow();
+ newArrow.x = archer.x;
+ newArrow.y = archer.y;
+ newArrow.speedX = normalX * 15;
+ newArrow.speedY = normalY * 15;
+ // Rotate arrow to face direction
+ newArrow.rotation = Math.atan2(normalY, normalX);
+ arrows.push(newArrow);
+ game.addChild(newArrow);
+ LK.getSound('shoot').play();
+};
+game.update = function () {
+ // Update enemy spawn timer
+ enemySpawnTimer++;
+ if (enemySpawnTimer >= enemySpawnRate) {
+ enemySpawnTimer = 0;
+ // Spawn new enemy
+ var newEnemy = new Enemy();
+ newEnemy.x = 2048 + 50;
+ newEnemy.y = Math.random() * (2732 - 200) + 100;
+ enemies.push(newEnemy);
+ game.addChild(newEnemy);
+ // Increase difficulty over time
+ if (enemySpawnRate > 30) {
+ enemySpawnRate -= 0.5;
+ }
+ }
+ // Update arrows
+ for (var i = arrows.length - 1; i >= 0; i--) {
+ var arrow = arrows[i];
+ // Remove arrows that go off screen
+ if (arrow.x > 2100 || arrow.x < -50 || arrow.y > 2800 || arrow.y < -50) {
+ arrow.destroy();
+ arrows.splice(i, 1);
+ continue;
+ }
+ // Check arrow-enemy collisions
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ var enemy = enemies[j];
+ if (arrow.intersects(enemy)) {
+ // Hit enemy
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText(LK.getScore());
+ LK.getSound('hit').play();
+ LK.effects.flashObject(enemy, 0xff0000, 200);
+ // Remove arrow and enemy
+ arrow.destroy();
+ arrows.splice(i, 1);
+ enemy.destroy();
+ enemies.splice(j, 1);
+ break;
+ }
+ }
+ }
+ // Update enemies and check if they reached the archer
+ for (var k = enemies.length - 1; k >= 0; k--) {
+ var enemy = enemies[k];
+ // Check if enemy reached archer
+ if (enemy.x <= archer.x + 50) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+};
\ No newline at end of file