User prompt
Yetenek çıkma şansı 100 de 100 olsun
User prompt
Yetenek direkt olarak kazanılması yerine düşsün ve oyuncunun onu tutması gereksin
User prompt
Bu güçlendirme boss un yaptığı gibi çapraz yönlere 3 lü atış olsun
User prompt
Bu olasılığı yüzde 25 yap
User prompt
Vurulan düşmanlar yüzde 15 ihtimal ile güçlendirme versin. Bu güçlendirme seri 3 lü atış olsun
User prompt
Boss ateşleme sıklığını yüzde 30 azalt
User prompt
Bunu ekle
User prompt
Please fix the bug: 'TypeError: Cannot read properties of null (reading 'intersects')' in or related to this line: 'if (player && !player.invincible && boss.intersects(player)) {' Line Number: 352
User prompt
Bu hatayı düzelt
User prompt
Please fix the bug: 'ReferenceError: bossActive is not defined' in or related to this line: 'if (bossActive && boss) {' Line Number: 293
User prompt
Spawnboss ekle
User prompt
30 ve katları olan skorlarda boss savaşları başlasın
User prompt
Skor sistemini yenile ve yok edilen düşman başına 1 puan ver
User prompt
Her düşman vuruşu 1 puan olsun
User prompt
Assetleri yüzde 25 büyüt
User prompt
Her düşman mermisi 1 can götürsün oyuncunun 3 canı olsun
User prompt
Arka plan için asset ekle
User prompt
Karaktere 3 can hakkı ver
User prompt
5000 puanda bir boss savaşı başlasın
User prompt
Boss her 500 puanda bir gelsin
User prompt
Her 50 düşman yok edildiğinde boss savaşı olsun
User prompt
Güçlendirmeyi kaldır
User prompt
Astreoidi kaldır
User prompt
Uzaylı mermisi daha seyrek olsun
User prompt
Oyuncu mermisi otomatik olsun
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Asteroid var Asteroid = Container.expand(function () { var self = Container.call(this); var rock = self.attachAsset('asteroid', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10 + Math.random() * 6; self.rotationSpeed = (Math.random() - 0.5) * 0.1; self.update = function () { self.y += self.speed; rock.rotation += self.rotationSpeed; }; return self; }); // Enemy bullet var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bullet = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 18; self.update = function () { self.y += self.speed; }; return self; }); // Enemy ship var EnemyShip = Container.expand(function () { var self = Container.call(this); var enemy = self.attachAsset('enemyShip', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3 + Math.random() * 2; self.shootCooldown = 60 + Math.floor(Math.random() * 60); self.radius = enemy.width * 0.5; self.update = function () { self.y += self.speed; self.shootCooldown--; }; return self; }); // Player bullet var PlayerBullet = Container.expand(function () { var self = Container.call(this); var bullet = self.attachAsset('playerBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -32; self.update = function () { self.y += self.speed; }; return self; }); // Powerup var Powerup = Container.expand(function () { var self = Container.call(this); var p = self.attachAsset('powerup', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.type = 'invincible'; self.update = function () { self.y += self.speed; }; return self; }); // Player spaceship var Spaceship = Container.expand(function () { var self = Container.call(this); var ship = self.attachAsset('spaceship', { anchorX: 0.5, anchorY: 0.5 }); self.radius = ship.width * 0.5; self.invincible = false; self.invincibleTimer = 0; self.update = function () { if (self.invincible) { self.invincibleTimer--; if (self.invincibleTimer <= 0) { self.invincible = false; ship.alpha = 1; } else { ship.alpha = LK.ticks % 10 < 5 ? 0.5 : 1; } } }; self.makeInvincible = function (duration) { self.invincible = true; self.invincibleTimer = duration; ship.alpha = 0.5; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000010 }); /**** * Game Code ****/ // Powerup // Asteroid // Enemy bullet // Enemy ship // Player bullet // Spaceship (player) // Game variables var player; var playerBullets = []; var enemies = []; var enemyBullets = []; var asteroids = []; var powerups = []; var dragNode = null; var lastPlayerX = 0, lastPlayerY = 0; var canShoot = true; var shootCooldown = 0; var score = 0; var scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); function spawnPlayer() { player = new Spaceship(); player.x = 2048 / 2; player.y = 2732 - 350; game.addChild(player); } function spawnEnemy() { var enemy = new EnemyShip(); enemy.x = 200 + Math.random() * (2048 - 400); enemy.y = -100; enemies.push(enemy); game.addChild(enemy); } function spawnAsteroid() { var asteroid = new Asteroid(); asteroid.x = 150 + Math.random() * (2048 - 300); asteroid.y = -100; asteroids.push(asteroid); game.addChild(asteroid); } function spawnPowerup() { var powerup = new Powerup(); powerup.x = 200 + Math.random() * (2048 - 400); powerup.y = -80; powerups.push(powerup); game.addChild(powerup); } function firePlayerBullet() { if (!player || player.invincible) return; var bullet = new PlayerBullet(); bullet.x = player.x; bullet.y = player.y - player.radius; playerBullets.push(bullet); game.addChild(bullet); } function fireEnemyBullet(enemy) { var bullet = new EnemyBullet(); bullet.x = enemy.x; bullet.y = enemy.y + enemy.radius; enemyBullets.push(bullet); game.addChild(bullet); } function resetGame() { // Not needed, handled by LK.showGameOver } // Dragging and shooting game.down = function (x, y, obj) { if (!player) return; dragNode = player; lastPlayerX = x; lastPlayerY = y; }; game.up = function (x, y, obj) { dragNode = null; }; function handleMove(x, y, obj) { if (dragNode === player) { // Clamp to game area, avoid top 100px (menu) var minX = player.radius + 20; var maxX = 2048 - player.radius - 20; var minY = 120 + player.radius; var maxY = 2732 - player.radius - 20; player.x = Math.max(minX, Math.min(maxX, x)); player.y = Math.max(minY, Math.min(maxY, y)); } } game.move = handleMove; // Automatic player bullet firing handled in game.update (removed tap-to-shoot) // Main update loop game.update = function () { // Player automatic shooting if (!player.invincible) { if (!canShoot) { shootCooldown--; if (shootCooldown <= 0) { canShoot = true; } } if (canShoot) { firePlayerBullet(); canShoot = false; shootCooldown = 10; } } // Update player if (player) player.update(); // Update and remove player bullets for (var i = playerBullets.length - 1; i >= 0; i--) { var b = playerBullets[i]; b.update(); if (b.y < -80) { b.destroy(); playerBullets.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)) { // Destroy both b.destroy(); playerBullets.splice(i, 1); e.destroy(); enemies.splice(j, 1); score += 100; scoreTxt.setText(score); break; } } } // Update and remove enemies for (var i = enemies.length - 1; i >= 0; i--) { var e = enemies[i]; e.update(); if (e.y > 2732 + 100) { e.destroy(); enemies.splice(i, 1); continue; } // Enemy shooting if (e.shootCooldown <= 0) { fireEnemyBullet(e); e.shootCooldown = 90 + Math.floor(Math.random() * 60); } // Collision with player if (player && !player.invincible && e.intersects(player)) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } // Update and remove enemy bullets for (var i = enemyBullets.length - 1; i >= 0; i--) { var b = enemyBullets[i]; b.update(); if (b.y > 2732 + 80) { b.destroy(); enemyBullets.splice(i, 1); continue; } // Collision with player if (player && !player.invincible && b.intersects(player)) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } // Update and remove asteroids for (var i = asteroids.length - 1; i >= 0; i--) { var a = asteroids[i]; a.update(); if (a.y > 2732 + 100) { a.destroy(); asteroids.splice(i, 1); continue; } // Collision with player if (player && !player.invincible && a.intersects(player)) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } // Update and remove powerups for (var i = powerups.length - 1; i >= 0; i--) { var p = powerups[i]; p.update(); if (p.y > 2732 + 80) { p.destroy(); powerups.splice(i, 1); continue; } // Collision with player if (player && p.intersects(player)) { player.makeInvincible(120); p.destroy(); powerups.splice(i, 1); score += 250; scoreTxt.setText(score); continue; } } // Spawning logic if (LK.ticks % 60 === 0) { spawnEnemy(); } if (LK.ticks % 120 === 0) { spawnAsteroid(); } if (LK.ticks % 600 === 0) { spawnPowerup(); } }; // Start game spawnPlayer();
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Asteroid
var Asteroid = Container.expand(function () {
var self = Container.call(this);
var rock = self.attachAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10 + Math.random() * 6;
self.rotationSpeed = (Math.random() - 0.5) * 0.1;
self.update = function () {
self.y += self.speed;
rock.rotation += self.rotationSpeed;
};
return self;
});
// Enemy bullet
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bullet = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 18;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Enemy ship
var EnemyShip = Container.expand(function () {
var self = Container.call(this);
var enemy = self.attachAsset('enemyShip', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3 + Math.random() * 2;
self.shootCooldown = 60 + Math.floor(Math.random() * 60);
self.radius = enemy.width * 0.5;
self.update = function () {
self.y += self.speed;
self.shootCooldown--;
};
return self;
});
// Player bullet
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bullet = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -32;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Powerup
var Powerup = Container.expand(function () {
var self = Container.call(this);
var p = self.attachAsset('powerup', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.type = 'invincible';
self.update = function () {
self.y += self.speed;
};
return self;
});
// Player spaceship
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var ship = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.radius = ship.width * 0.5;
self.invincible = false;
self.invincibleTimer = 0;
self.update = function () {
if (self.invincible) {
self.invincibleTimer--;
if (self.invincibleTimer <= 0) {
self.invincible = false;
ship.alpha = 1;
} else {
ship.alpha = LK.ticks % 10 < 5 ? 0.5 : 1;
}
}
};
self.makeInvincible = function (duration) {
self.invincible = true;
self.invincibleTimer = duration;
ship.alpha = 0.5;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000010
});
/****
* Game Code
****/
// Powerup
// Asteroid
// Enemy bullet
// Enemy ship
// Player bullet
// Spaceship (player)
// Game variables
var player;
var playerBullets = [];
var enemies = [];
var enemyBullets = [];
var asteroids = [];
var powerups = [];
var dragNode = null;
var lastPlayerX = 0,
lastPlayerY = 0;
var canShoot = true;
var shootCooldown = 0;
var score = 0;
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
function spawnPlayer() {
player = new Spaceship();
player.x = 2048 / 2;
player.y = 2732 - 350;
game.addChild(player);
}
function spawnEnemy() {
var enemy = new EnemyShip();
enemy.x = 200 + Math.random() * (2048 - 400);
enemy.y = -100;
enemies.push(enemy);
game.addChild(enemy);
}
function spawnAsteroid() {
var asteroid = new Asteroid();
asteroid.x = 150 + Math.random() * (2048 - 300);
asteroid.y = -100;
asteroids.push(asteroid);
game.addChild(asteroid);
}
function spawnPowerup() {
var powerup = new Powerup();
powerup.x = 200 + Math.random() * (2048 - 400);
powerup.y = -80;
powerups.push(powerup);
game.addChild(powerup);
}
function firePlayerBullet() {
if (!player || player.invincible) return;
var bullet = new PlayerBullet();
bullet.x = player.x;
bullet.y = player.y - player.radius;
playerBullets.push(bullet);
game.addChild(bullet);
}
function fireEnemyBullet(enemy) {
var bullet = new EnemyBullet();
bullet.x = enemy.x;
bullet.y = enemy.y + enemy.radius;
enemyBullets.push(bullet);
game.addChild(bullet);
}
function resetGame() {
// Not needed, handled by LK.showGameOver
}
// Dragging and shooting
game.down = function (x, y, obj) {
if (!player) return;
dragNode = player;
lastPlayerX = x;
lastPlayerY = y;
};
game.up = function (x, y, obj) {
dragNode = null;
};
function handleMove(x, y, obj) {
if (dragNode === player) {
// Clamp to game area, avoid top 100px (menu)
var minX = player.radius + 20;
var maxX = 2048 - player.radius - 20;
var minY = 120 + player.radius;
var maxY = 2732 - player.radius - 20;
player.x = Math.max(minX, Math.min(maxX, x));
player.y = Math.max(minY, Math.min(maxY, y));
}
}
game.move = handleMove;
// Automatic player bullet firing handled in game.update (removed tap-to-shoot)
// Main update loop
game.update = function () {
// Player automatic shooting
if (!player.invincible) {
if (!canShoot) {
shootCooldown--;
if (shootCooldown <= 0) {
canShoot = true;
}
}
if (canShoot) {
firePlayerBullet();
canShoot = false;
shootCooldown = 10;
}
}
// Update player
if (player) player.update();
// Update and remove player bullets
for (var i = playerBullets.length - 1; i >= 0; i--) {
var b = playerBullets[i];
b.update();
if (b.y < -80) {
b.destroy();
playerBullets.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)) {
// Destroy both
b.destroy();
playerBullets.splice(i, 1);
e.destroy();
enemies.splice(j, 1);
score += 100;
scoreTxt.setText(score);
break;
}
}
}
// Update and remove enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var e = enemies[i];
e.update();
if (e.y > 2732 + 100) {
e.destroy();
enemies.splice(i, 1);
continue;
}
// Enemy shooting
if (e.shootCooldown <= 0) {
fireEnemyBullet(e);
e.shootCooldown = 90 + Math.floor(Math.random() * 60);
}
// Collision with player
if (player && !player.invincible && e.intersects(player)) {
LK.effects.flashScreen(0xff0000, 800);
LK.showGameOver();
return;
}
}
// Update and remove enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var b = enemyBullets[i];
b.update();
if (b.y > 2732 + 80) {
b.destroy();
enemyBullets.splice(i, 1);
continue;
}
// Collision with player
if (player && !player.invincible && b.intersects(player)) {
LK.effects.flashScreen(0xff0000, 800);
LK.showGameOver();
return;
}
}
// Update and remove asteroids
for (var i = asteroids.length - 1; i >= 0; i--) {
var a = asteroids[i];
a.update();
if (a.y > 2732 + 100) {
a.destroy();
asteroids.splice(i, 1);
continue;
}
// Collision with player
if (player && !player.invincible && a.intersects(player)) {
LK.effects.flashScreen(0xff0000, 800);
LK.showGameOver();
return;
}
}
// Update and remove powerups
for (var i = powerups.length - 1; i >= 0; i--) {
var p = powerups[i];
p.update();
if (p.y > 2732 + 80) {
p.destroy();
powerups.splice(i, 1);
continue;
}
// Collision with player
if (player && p.intersects(player)) {
player.makeInvincible(120);
p.destroy();
powerups.splice(i, 1);
score += 250;
scoreTxt.setText(score);
continue;
}
}
// Spawning logic
if (LK.ticks % 60 === 0) {
spawnEnemy();
}
if (LK.ticks % 120 === 0) {
spawnAsteroid();
}
if (LK.ticks % 600 === 0) {
spawnPowerup();
}
};
// Start game
spawnPlayer();