User prompt
düşman benim uçağımın arkasına geçince kaybedeyim
User prompt
düşman benim alanıma yaklaşınca kaybetmiyim tamamen geçince kaybedeyim,
User prompt
sen sadece düşmanlar bana değince ben ölüyorum düşmanlar benim alanıma geçincede kaybedeyim
User prompt
yeteneklere tıklıyorum ama olmuyor
User prompt
ama uçağın kontrolü çok yavaş biz ne kadar hareket ettirdiysek uçakda eş zamanlı olarak hareket etsin ve her 5 dalgada bir yetenek geliştirme ekranı açılsın o ekrandan istediğimiz bir yeteneği geliştirelim ki güçlü rakiplerle mücadele edeb
Code edit (1 edits merged)
Please save this source code
User prompt
Sky Fighter: Wave Defense
Initial prompt
Hi, I want to make an airplane game. We will control a plane, it will fire from its mouth, and enemies will come from ahead. The word "wave" will appear at the top. Each wave will end after killing a certain number of enemies, and the enemies will become faster and stronger.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.health = 1;
self.lastY = 0;
self.lastIntersecting = false;
self.takeDamage = function (amount) {
self.health -= amount;
};
self.update = function () {
self.y += self.speed;
if (self.lastY === undefined) self.lastY = self.y;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.moveX = 0;
self.speed = 8;
self.update = function () {
self.x += self.moveX * self.speed;
if (self.x < 40) self.x = 40;
if (self.x > 2048 - 40) self.x = 2048 - 40;
};
return self;
});
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -15;
self.lastY = 0;
self.update = function () {
self.y += self.speed;
if (self.lastY === undefined) self.lastY = self.y;
};
return self;
});
var SkillUpgrade = Container.expand(function () {
var self = Container.call(this);
var background = self.attachAsset('upgradeBackground', {
anchorX: 0.5,
anchorY: 0.5
});
background.width = 2048;
background.height = 2732;
background.x = 1024;
background.y = 1366;
var titleText = new Text2('Choose an Upgrade', {
size: 120,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
titleText.x = 1024;
titleText.y = 200;
self.addChild(titleText);
var skills = [{
name: 'Faster Bullets',
effect: 'bulletSpeed'
}, {
name: 'Rapid Fire',
effect: 'fireRate'
}, {
name: 'More Health',
effect: 'playerHealth'
}];
self.skillButtons = [];
for (var i = 0; i < skills.length; i++) {
var buttonBg = self.attachAsset('skillButton', {
anchorX: 0.5,
anchorY: 0.5
});
buttonBg.width = 600;
buttonBg.height = 200;
buttonBg.x = 1024;
buttonBg.y = 800 + i * 300;
var skillText = new Text2(skills[i].name, {
size: 80,
fill: 0xFFFFFF
});
skillText.anchor.set(0.5, 0.5);
skillText.x = 1024;
skillText.y = 800 + i * 300;
self.addChild(skillText);
self.skillButtons.push({
bg: buttonBg,
x: 1024,
y: 800 + i * 300,
effect: skills[i].effect,
index: i
});
}
self.selectedSkill = null;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2400;
var playerBullets = [];
var enemies = [];
var currentWave = 1;
var enemiesKilledInWave = 0;
var enemiesToKillInWave = 5;
var gameScore = 0;
var playerStats = {
bulletSpeed: -15,
fireRate: 400,
playerHealth: 1
};
var upgradeScreenActive = false;
var waveText = new Text2('Wave: ' + currentWave, {
size: 100,
fill: 0xFFFFFF
});
waveText.anchor.set(0.5, 0);
LK.gui.top.addChild(waveText);
var scoreText = new Text2('Score: 0', {
size: 80,
fill: 0xFFFF00
});
scoreText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(scoreText);
var enemyCountText = new Text2('Enemies: 0/' + enemiesToKillInWave, {
size: 80,
fill: 0x00FFFF
});
enemyCountText.anchor.set(0, 1);
LK.gui.bottomLeft.addChild(enemyCountText);
var dragNode = null;
var touchStartX = 0;
function spawnEnemy() {
var newEnemy = new Enemy();
newEnemy.x = Math.random() * (2048 - 140) + 70;
newEnemy.y = -50;
var speedMultiplier = 1 + (currentWave - 1) * 0.3;
newEnemy.speed = 2 + speedMultiplier;
newEnemy.health = 1 + Math.floor((currentWave - 1) / 3);
newEnemy.lastY = newEnemy.y;
newEnemy.lastIntersecting = false;
enemies.push(newEnemy);
game.addChild(newEnemy);
}
function applySkillUpgrade(skillEffect) {
if (skillEffect === 'bulletSpeed') {
playerStats.bulletSpeed -= 3;
} else if (skillEffect === 'fireRate') {
playerStats.fireRate = Math.max(150, playerStats.fireRate - 50);
} else if (skillEffect === 'playerHealth') {
playerStats.playerHealth += 1;
}
}
function fireProjectile() {
var bullet = new PlayerBullet();
bullet.x = player.x;
bullet.y = player.y - 40;
bullet.speed = playerStats.bulletSpeed;
bullet.lastY = bullet.y;
playerBullets.push(bullet);
game.addChild(bullet);
LK.getSound('shoot').play();
}
var spawnTimer = LK.setInterval(function () {
if (enemies.length < 3 + currentWave) {
spawnEnemy();
}
}, 800);
var fireTimer = LK.setInterval(function () {
fireProjectile();
}, playerStats.fireRate);
game.down = function (x, y, obj) {
dragNode = player;
};
game.move = function (x, y, obj) {
if (dragNode) {
player.x = x;
if (player.x < 40) player.x = 40;
if (player.x > 2048 - 40) player.x = 2048 - 40;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.update = function () {
for (var a = playerBullets.length - 1; a >= 0; a--) {
var bullet = playerBullets[a];
if (bullet.y < -50) {
bullet.destroy();
playerBullets.splice(a, 1);
continue;
}
var bulletDestroyed = false;
for (var b = enemies.length - 1; b >= 0; b--) {
var enemy = enemies[b];
if (bullet.intersects(enemy)) {
enemy.takeDamage(1);
LK.getSound('enemyHit').play();
if (enemy.health <= 0) {
enemy.destroy();
enemies.splice(b, 1);
gameScore += 10;
enemiesKilledInWave++;
scoreText.setText('Score: ' + gameScore);
enemyCountText.setText('Enemies: ' + enemiesKilledInWave + '/' + enemiesToKillInWave);
if (enemiesKilledInWave >= enemiesToKillInWave) {
currentWave++;
enemiesKilledInWave = 0;
enemiesToKillInWave = 5 + (currentWave - 1) * 2;
waveText.setText('Wave: ' + currentWave);
enemyCountText.setText('Enemies: 0/' + enemiesToKillInWave);
for (var c = enemies.length - 1; c >= 0; c--) {
enemies[c].destroy();
enemies.splice(c, 1);
}
if (currentWave % 5 === 0) {
upgradeScreenActive = true;
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
var upgradeScreen = game.addChild(new SkillUpgrade());
game.down = function (x, y, obj) {
if (upgradeScreenActive && upgradeScreen && upgradeScreen.skillButtons) {
for (var sb = 0; sb < upgradeScreen.skillButtons.length; sb++) {
var btn = upgradeScreen.skillButtons[sb];
var distance = Math.sqrt(Math.pow(x - btn.x, 2) + Math.pow(y - btn.y, 2));
if (distance < 300) {
applySkillUpgrade(btn.effect);
upgradeScreen.destroy();
upgradeScreenActive = false;
spawnTimer = LK.setInterval(function () {
if (enemies.length < 3 + currentWave) {
spawnEnemy();
}
}, 800);
fireTimer = LK.setInterval(function () {
fireProjectile();
}, playerStats.fireRate);
game.down = function (x, y, obj) {
dragNode = player;
};
return;
}
}
} else if (!upgradeScreenActive) {
dragNode = player;
}
};
}
}
}
bullet.destroy();
playerBullets.splice(a, 1);
bulletDestroyed = true;
break;
}
}
}
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (enemy.y > 2732 + 50) {
enemy.destroy();
enemies.splice(i, 1);
continue;
}
if (enemy.y > 2400 + 50) {
LK.effects.flashScreen(0xff0000, 1000);
LK.getSound('playerHit').play();
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.showGameOver();
return;
}
var currentIntersecting = enemy.intersects(player);
if (!enemy.lastIntersecting && currentIntersecting) {
LK.effects.flashScreen(0xff0000, 1000);
LK.getSound('playerHit').play();
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.showGameOver();
return;
}
enemy.lastIntersecting = currentIntersecting;
}
};
LK.playMusic('bgmusic'); ===================================================================
--- original.js
+++ change.js
@@ -288,9 +288,9 @@
enemy.destroy();
enemies.splice(i, 1);
continue;
}
- if (enemy.lastY <= 2400 && enemy.y > 2400) {
+ if (enemy.y > 2400 + 50) {
LK.effects.flashScreen(0xff0000, 1000);
LK.getSound('playerHit').play();
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);