/**** 
* Classes
****/ 
// Define the Enemy class
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.y += self.speed;
	};
});
// Define the EnemyBullet class
var EnemyBullet = Container.expand(function () {
	var self = Container.call(this);
	var enemyBulletGraphics = self.attachAsset('fire', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.update = function () {
		self.y += self.speed;
	};
});
var FieryBullet = Container.expand(function () {
	var self = Container.call(this);
	var fieryBulletGraphics = self.attachAsset('fieryBullet', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.update = function () {
		self.y -= self.speed;
	};
});
// Define the Fire class
var Fire = Container.expand(function () {
	var self = Container.call(this);
	var fireGraphics = self.attachAsset('fire', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.update = function () {
		self.y -= self.speed;
	};
});
//<Assets used in the game will automatically appear here>
// Define the Player class
var Rocket = Container.expand(function () {
	var self = Container.call(this);
	var rocketGraphics = self.attachAsset('rocket', {
		anchorX: 0.5,
		anchorY: 0.5,
		color: 0xffa500
	});
	self.speed = 40;
	self.update = function () {
		// Rocket update logic
	};
	self.move = function (x, y) {
		self.x = x;
		self.y = y;
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 //Init game with black background
});
/**** 
* Game Code
****/ 
var background = game.attachAsset('background', {
	anchorX: 0,
	anchorY: 0
});
game.addChild(background);
// Create a home screen with a play button and a quit button
var homeScreen = new Container();
game.addChild(homeScreen);
// Initialize player, target, fire, enemies, joystick and score
var rocket = game.addChild(new Rocket());
rocket.x = 2048 / 2;
rocket.y = 2732 - 200;
rocket.lives = 3 * 3; // Initialize rocket with 9 lives
var score = game.addChild(new Text2('0', {
	size: 150,
	fill: "#ffffff"
}));
score.x = 2048 / 2;
score.y = 50;
var fieryBullets = [];
var enemyBullets = [];
var fire = game.addChild(new Fire());
fire.x = rocket.x;
fire.y = rocket.y;
var enemies = [];
// Create a pool of enemies
var enemyPool = [];
for (var i = 0; i < 5; i++) {
	var enemy = new Enemy();
	enemyPool.push(enemy);
}
// Function to get an enemy from the pool
function getEnemy() {
	for (var i = 0; i < enemyPool.length; i++) {
		if (!enemyPool[i].parent) {
			return enemyPool[i];
		}
	}
	// If all enemies are in use, create a new one
	var enemy = new Enemy();
	enemyPool.push(enemy);
	return enemy;
}
// Add enemies to the game
for (var i = 0; i < 5; i++) {
	var enemy = getEnemy();
	enemy.x = Math.random() * 2048;
	enemy.y = 0;
	game.addChild(enemy);
	enemies.push(enemy);
}
// Handle player movement and fire breathing
game.down = function (x, y, obj) {
	var dx = x - rocket.x;
	var dy = y - rocket.y;
	var angle = Math.atan2(dy, dx);
	rocket.x += Math.cos(angle) * rocket.speed;
	rocket.y += Math.sin(angle) * rocket.speed;
	var newFieryBullet = new FieryBullet();
	newFieryBullet.x = rocket.x;
	newFieryBullet.y = rocket.y;
	fieryBullets.push(newFieryBullet);
	game.addChild(newFieryBullet);
};
// Check for win condition, player lives and enemy movement
game.update = function () {
	for (var i = enemyBullets.length - 1; i >= 0; i--) {
		var enemyBullet = enemyBullets[i];
		if (enemyBullet.intersects(rocket)) {
			rocket.lives--;
			enemyBullet.destroy();
			enemyBullets.splice(i, 1);
		}
		for (var j = fieryBullets.length - 1; j >= 0; j--) {
			var fieryBullet = fieryBullets[j];
			if (fieryBullet.intersects(enemyBullet)) {
				enemyBullet.destroy();
				enemyBullets.splice(i, 1);
				fieryBullet.destroy();
				fieryBullets.splice(j, 1);
				// Increase the score by 50 each time an enemy bullet is hit
				score.text = (parseInt(score.text) + 50).toString();
			}
		}
	}
	if (rocket.lives <= 0) {
		LK.showGameOver(); // Show game over when rocket has no more lives
		LK.gui.top.addChild(new Text2("Game Over.", {
			size: 150,
			fill: "#ffffff"
		}));
	}
	for (var i = enemies.length - 1; i >= 0; i--) {
		var enemy = enemies[i];
		if (enemy.y > 2732) {
			enemy.y = 0;
			enemy.x = Math.random() * 2048;
		} else if (LK.ticks % 120 == 0) {
			var newEnemyBullet = new EnemyBullet();
			newEnemyBullet.x = enemy.x;
			newEnemyBullet.y = enemy.y;
			enemyBullets.push(newEnemyBullet);
			game.addChild(newEnemyBullet);
		}
		if (enemy.intersects(rocket)) {
			rocket.lives--;
			enemy.y = 0;
			enemy.x = Math.random() * 2048;
		}
		for (var j = fieryBullets.length - 1; j >= 0; j--) {
			var fieryBullet = fieryBullets[j];
			if (fieryBullet.intersects(enemy)) {
				enemy.destroy();
				enemies.splice(i, 1);
				fieryBullet.destroy();
				fieryBullets.splice(j, 1);
				// Increase the score by 100 each time an enemy is destroyed
				score.setText(parseInt(score.text) + 100);
			}
		}
	}
}; /**** 
* Classes
****/ 
// Define the Enemy class
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.y += self.speed;
	};
});
// Define the EnemyBullet class
var EnemyBullet = Container.expand(function () {
	var self = Container.call(this);
	var enemyBulletGraphics = self.attachAsset('fire', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.update = function () {
		self.y += self.speed;
	};
});
var FieryBullet = Container.expand(function () {
	var self = Container.call(this);
	var fieryBulletGraphics = self.attachAsset('fieryBullet', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.update = function () {
		self.y -= self.speed;
	};
});
// Define the Fire class
var Fire = Container.expand(function () {
	var self = Container.call(this);
	var fireGraphics = self.attachAsset('fire', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speed = 5;
	self.update = function () {
		self.y -= self.speed;
	};
});
//<Assets used in the game will automatically appear here>
// Define the Player class
var Rocket = Container.expand(function () {
	var self = Container.call(this);
	var rocketGraphics = self.attachAsset('rocket', {
		anchorX: 0.5,
		anchorY: 0.5,
		color: 0xffa500
	});
	self.speed = 40;
	self.update = function () {
		// Rocket update logic
	};
	self.move = function (x, y) {
		self.x = x;
		self.y = y;
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 //Init game with black background
});
/**** 
* Game Code
****/ 
var background = game.attachAsset('background', {
	anchorX: 0,
	anchorY: 0
});
game.addChild(background);
// Create a home screen with a play button and a quit button
var homeScreen = new Container();
game.addChild(homeScreen);
// Initialize player, target, fire, enemies, joystick and score
var rocket = game.addChild(new Rocket());
rocket.x = 2048 / 2;
rocket.y = 2732 - 200;
rocket.lives = 3 * 3; // Initialize rocket with 9 lives
var score = game.addChild(new Text2('0', {
	size: 150,
	fill: "#ffffff"
}));
score.x = 2048 / 2;
score.y = 50;
var fieryBullets = [];
var enemyBullets = [];
var fire = game.addChild(new Fire());
fire.x = rocket.x;
fire.y = rocket.y;
var enemies = [];
// Create a pool of enemies
var enemyPool = [];
for (var i = 0; i < 5; i++) {
	var enemy = new Enemy();
	enemyPool.push(enemy);
}
// Function to get an enemy from the pool
function getEnemy() {
	for (var i = 0; i < enemyPool.length; i++) {
		if (!enemyPool[i].parent) {
			return enemyPool[i];
		}
	}
	// If all enemies are in use, create a new one
	var enemy = new Enemy();
	enemyPool.push(enemy);
	return enemy;
}
// Add enemies to the game
for (var i = 0; i < 5; i++) {
	var enemy = getEnemy();
	enemy.x = Math.random() * 2048;
	enemy.y = 0;
	game.addChild(enemy);
	enemies.push(enemy);
}
// Handle player movement and fire breathing
game.down = function (x, y, obj) {
	var dx = x - rocket.x;
	var dy = y - rocket.y;
	var angle = Math.atan2(dy, dx);
	rocket.x += Math.cos(angle) * rocket.speed;
	rocket.y += Math.sin(angle) * rocket.speed;
	var newFieryBullet = new FieryBullet();
	newFieryBullet.x = rocket.x;
	newFieryBullet.y = rocket.y;
	fieryBullets.push(newFieryBullet);
	game.addChild(newFieryBullet);
};
// Check for win condition, player lives and enemy movement
game.update = function () {
	for (var i = enemyBullets.length - 1; i >= 0; i--) {
		var enemyBullet = enemyBullets[i];
		if (enemyBullet.intersects(rocket)) {
			rocket.lives--;
			enemyBullet.destroy();
			enemyBullets.splice(i, 1);
		}
		for (var j = fieryBullets.length - 1; j >= 0; j--) {
			var fieryBullet = fieryBullets[j];
			if (fieryBullet.intersects(enemyBullet)) {
				enemyBullet.destroy();
				enemyBullets.splice(i, 1);
				fieryBullet.destroy();
				fieryBullets.splice(j, 1);
				// Increase the score by 50 each time an enemy bullet is hit
				score.text = (parseInt(score.text) + 50).toString();
			}
		}
	}
	if (rocket.lives <= 0) {
		LK.showGameOver(); // Show game over when rocket has no more lives
		LK.gui.top.addChild(new Text2("Game Over.", {
			size: 150,
			fill: "#ffffff"
		}));
	}
	for (var i = enemies.length - 1; i >= 0; i--) {
		var enemy = enemies[i];
		if (enemy.y > 2732) {
			enemy.y = 0;
			enemy.x = Math.random() * 2048;
		} else if (LK.ticks % 120 == 0) {
			var newEnemyBullet = new EnemyBullet();
			newEnemyBullet.x = enemy.x;
			newEnemyBullet.y = enemy.y;
			enemyBullets.push(newEnemyBullet);
			game.addChild(newEnemyBullet);
		}
		if (enemy.intersects(rocket)) {
			rocket.lives--;
			enemy.y = 0;
			enemy.x = Math.random() * 2048;
		}
		for (var j = fieryBullets.length - 1; j >= 0; j--) {
			var fieryBullet = fieryBullets[j];
			if (fieryBullet.intersects(enemy)) {
				enemy.destroy();
				enemies.splice(i, 1);
				fieryBullet.destroy();
				fieryBullets.splice(j, 1);
				// Increase the score by 100 each time an enemy is destroyed
				score.setText(parseInt(score.text) + 100);
			}
		}
	}
};
:quality(85)/https://cdn.frvr.ai/66cea37a651049126fa086fc.png%3F3) 
 Red fiery bullet. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/66cea4a6651049126fa08714.png%3F3) 
 Monster. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/66cea8f6651049126fa08734.png%3F3) 
 Rocket. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/66ceaaef651049126fa08742.png%3F3) 
 Space scene that would be good for an app background. Single Game Texture. In-Game asset. 3d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/66ceabb1651049126fa08753.png%3F3) 
 Bullet dropping downward. Single Game Texture. In-Game asset. 3D. Blank background. High contrast. No shadows.