/**** * Classes ****/ var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemyBox', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; self.update = function () { self.y += self.speed; }; return self; }); // Set background var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.attachAsset('heroBox', { anchorX: 0.5, anchorY: 0.5 }); self.fireRate = 5; // Fire every 5 ticks (4x faster) self.lastFire = 0; self.barrels = 1; // Start with 1 barrel self.update = function () { // Auto fire bullets if (LK.ticks - self.lastFire > self.fireRate) { self.lastFire = LK.ticks; // Fire bullets from multiple barrels for (var b = 0; b < self.barrels; b++) { var bullet = new HeroBullet(); // Calculate bullet position to spread horizontally toward top of screen var totalWidth = (self.barrels - 1) * 80; // 80 pixels apart horizontally var offsetX = b * 80 - totalWidth / 2; // Center the spread bullet.x = self.x + offsetX; bullet.y = self.y - 50; heroBullets.push(bullet); game.addChild(bullet); } } }; return self; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -60; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Set background game.setBackgroundColor(0x001122); // Game variables var hero; var enemies = []; var heroBullets = []; var waveNumber = 1; var enemiesSpawned = 0; var enemiesPerWave = 5; var spawnTimer = 0; var spawnRate = 60; // Spawn every 60 ticks initially var dragNode = null; // Create hero hero = new Hero(); hero.x = 2048 / 2; hero.y = 2732 - 200; game.addChild(hero); // Score display var scoreTxt = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Wave display var waveTxt = new Text2('Wave: 1', { size: 60, fill: 0xFFFF00 }); waveTxt.anchor.set(0, 0); waveTxt.x = 50; waveTxt.y = 50; LK.gui.topLeft.addChild(waveTxt); // Touch controls game.down = function (x, y, obj) { dragNode = hero; hero.x = x; hero.y = y; }; game.move = function (x, y, obj) { if (dragNode) { dragNode.x = x; dragNode.y = y; } }; game.up = function (x, y, obj) { dragNode = null; }; // Main game loop game.update = function () { // Spawn enemies spawnTimer++; if (spawnTimer >= spawnRate && enemiesSpawned < enemiesPerWave) { spawnTimer = 0; var enemy = new Enemy(); enemy.x = Math.random() * (2048 - 200) + 100; enemy.y = -100; enemy.speed = 2 + waveNumber * 0.5; // Increase speed with waves enemies.push(enemy); game.addChild(enemy); enemiesSpawned++; } // Update and check bullet collisions for (var i = heroBullets.length - 1; i >= 0; i--) { var bullet = heroBullets[i]; // Remove bullets that go off screen if (bullet.y < -50) { bullet.destroy(); heroBullets.splice(i, 1); continue; } // Check collision with enemies for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (bullet.intersects(enemy)) { // Enemy hit LK.setScore(LK.getScore() + 10); scoreTxt.setText('Score: ' + LK.getScore()); // Remove bullet and enemy bullet.destroy(); enemy.destroy(); heroBullets.splice(i, 1); enemies.splice(j, 1); break; } } } // Update and check enemy collisions with hero for (var k = enemies.length - 1; k >= 0; k--) { var enemy = enemies[k]; // Check if enemy reached hero if (enemy.intersects(hero)) { LK.showGameOver(); return; } // Remove enemies that go off screen if (enemy.y > 2732 + 100) { enemy.destroy(); enemies.splice(k, 1); } } // Check if wave is complete if (enemies.length === 0 && enemiesSpawned >= enemiesPerWave) { waveNumber++; waveTxt.setText('Wave: ' + waveNumber); enemiesSpawned = 0; enemiesPerWave = Math.min(5 + waveNumber, 15); // Increase enemies per wave spawnRate = Math.max(30, 60 - waveNumber * 2); // Decrease spawn rate // Increase barrels every 5 waves hero.barrels = Math.floor(waveNumber / 5) + 1; } }; // Start background music LK.playMusic('1a439');
/****
* Classes
****/
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemyBox', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Set background
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.attachAsset('heroBox', {
anchorX: 0.5,
anchorY: 0.5
});
self.fireRate = 5; // Fire every 5 ticks (4x faster)
self.lastFire = 0;
self.barrels = 1; // Start with 1 barrel
self.update = function () {
// Auto fire bullets
if (LK.ticks - self.lastFire > self.fireRate) {
self.lastFire = LK.ticks;
// Fire bullets from multiple barrels
for (var b = 0; b < self.barrels; b++) {
var bullet = new HeroBullet();
// Calculate bullet position to spread horizontally toward top of screen
var totalWidth = (self.barrels - 1) * 80; // 80 pixels apart horizontally
var offsetX = b * 80 - totalWidth / 2; // Center the spread
bullet.x = self.x + offsetX;
bullet.y = self.y - 50;
heroBullets.push(bullet);
game.addChild(bullet);
}
}
};
return self;
});
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('heroBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -60;
self.update = function () {
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Set background
game.setBackgroundColor(0x001122);
// Game variables
var hero;
var enemies = [];
var heroBullets = [];
var waveNumber = 1;
var enemiesSpawned = 0;
var enemiesPerWave = 5;
var spawnTimer = 0;
var spawnRate = 60; // Spawn every 60 ticks initially
var dragNode = null;
// Create hero
hero = new Hero();
hero.x = 2048 / 2;
hero.y = 2732 - 200;
game.addChild(hero);
// Score display
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Wave display
var waveTxt = new Text2('Wave: 1', {
size: 60,
fill: 0xFFFF00
});
waveTxt.anchor.set(0, 0);
waveTxt.x = 50;
waveTxt.y = 50;
LK.gui.topLeft.addChild(waveTxt);
// Touch controls
game.down = function (x, y, obj) {
dragNode = hero;
hero.x = x;
hero.y = y;
};
game.move = function (x, y, obj) {
if (dragNode) {
dragNode.x = x;
dragNode.y = y;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Main game loop
game.update = function () {
// Spawn enemies
spawnTimer++;
if (spawnTimer >= spawnRate && enemiesSpawned < enemiesPerWave) {
spawnTimer = 0;
var enemy = new Enemy();
enemy.x = Math.random() * (2048 - 200) + 100;
enemy.y = -100;
enemy.speed = 2 + waveNumber * 0.5; // Increase speed with waves
enemies.push(enemy);
game.addChild(enemy);
enemiesSpawned++;
}
// Update and check bullet collisions
for (var i = heroBullets.length - 1; i >= 0; i--) {
var bullet = heroBullets[i];
// Remove bullets that go off screen
if (bullet.y < -50) {
bullet.destroy();
heroBullets.splice(i, 1);
continue;
}
// Check collision with enemies
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
// Enemy hit
LK.setScore(LK.getScore() + 10);
scoreTxt.setText('Score: ' + LK.getScore());
// Remove bullet and enemy
bullet.destroy();
enemy.destroy();
heroBullets.splice(i, 1);
enemies.splice(j, 1);
break;
}
}
}
// Update and check enemy collisions with hero
for (var k = enemies.length - 1; k >= 0; k--) {
var enemy = enemies[k];
// Check if enemy reached hero
if (enemy.intersects(hero)) {
LK.showGameOver();
return;
}
// Remove enemies that go off screen
if (enemy.y > 2732 + 100) {
enemy.destroy();
enemies.splice(k, 1);
}
}
// Check if wave is complete
if (enemies.length === 0 && enemiesSpawned >= enemiesPerWave) {
waveNumber++;
waveTxt.setText('Wave: ' + waveNumber);
enemiesSpawned = 0;
enemiesPerWave = Math.min(5 + waveNumber, 15); // Increase enemies per wave
spawnRate = Math.max(30, 60 - waveNumber * 2); // Decrease spawn rate
// Increase barrels every 5 waves
hero.barrels = Math.floor(waveNumber / 5) + 1;
}
};
// Start background music
LK.playMusic('1a439');
uzay aracı olsun . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
ahtapot şekilli canavar olsun. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
uzay aracı olsun . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat