/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
var Bullet = Container.expand(function () {
	var self = Container.call(this);
	var bulletGraphics = self.attachAsset('bullet', {
		anchorX: 0,
		anchorY: 0.6,
		scaleX: 4,
		scaleY: 4
	});
	self.speed = 10;
	self.update = function () {
		self.x += self.speed;
		if (self.x < 0) {
			self.destroy();
		}
	};
});
var Enemy = Container.expand(function () {
	var self = Container.call(this);
	var enemyGraphics = self.attachAsset('enemy', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 3,
		scaleY: 2
	});
	self.speed = -15;
	self.update = function () {
		self.x += self.speed;
		if (self.x < 0) {
			self.destroy();
		}
	};
});
var Ground = Container.expand(function () {
	var self = Container.call(this);
	var groundGraphics = self.attachAsset('ground', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 3,
		// Scale horizontally by 1.2
		scaleY: 3 // Scale vertically by 1.2
	});
	self.update = function () {
		// Ground moves from right to left
		self.x -= 5;
		if (self.x + self.width < 0) {
			self.x = 2048;
		}
	};
});
var Player = Container.expand(function () {
	var self = Container.call(this);
	var playerGraphics = self.attachAsset('player', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 3,
		// Scale horizontally by 1.2
		scaleY: 3 // Scale vertically by 1.2
	});
	self.speed = 5;
	self.update = function () {
		if (self.x < 0) {
			self.x = 0;
		}
		if (self.x > 300) {
			self.x = 300;
		}
		// Player only moves horizontally
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game();
/**** 
* Game Code
****/ 
var background1 = game.addChild(LK.getAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 1024,
	y: 1366,
	width: 2048,
	height: 2732,
	alpha: 1.0,
	brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var background2 = game.addChild(LK.getAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 3072,
	y: 1366,
	width: 2048,
	height: 2732,
	alpha: 1.0,
	brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var ground = game.addChild(new Ground());
ground.x = 1024;
ground.y = 2732 - 200; // Move the ground asset a little bit up from the bottom of the screen
var player = game.addChild(new Player());
player.x = 1024;
player.y = ground.y - player.height;
var enemies = [];
var bullets = [];
LK.playMusic('backgroundMusic', {
	loop: true
});
game.update = function () {
	background1.x -= 5;
	background2.x -= 5;
	if (background1.x <= -1024) {
		background1.x = background2.x + 2048;
	}
	if (background2.x <= -1024) {
		background2.x = background1.x + 2048;
	}
	if (LK.ticks % 25 == 0) {
		var enemy = game.addChild(new Enemy());
		enemy.x = 2048;
		enemy.y = Math.random() * 2732;
		enemies.push(enemy);
	}
	for (var i = bullets.length - 1; i >= 0; i--) {
		var bullet = bullets[i];
		if (bullet.x > 2048) {
			bullet.destroy();
			bullets.splice(i, 1);
			continue;
		}
		for (var j = enemies.length - 1; j >= 0; j--) {
			var enemy = enemies[j];
			if (bullet.intersects(enemy)) {
				bullet.destroy();
				bullets.splice(i, 1);
				enemy.destroy();
				enemies.splice(j, 1);
				// Calculate score based on distance from player
				var distance = Math.abs(bullet.x - player.x);
				var maxDistance = 2048; // Maximum possible distance
				var scoreIncrement = Math.max(1, Math.floor((maxDistance - distance) / maxDistance * 10)); // Score ranges from 1 to 10
				LK.setScore(LK.getScore() + scoreIncrement);
				// Update the score text with a dynamic effect
				scoreText.setText('Germs: ' + LK.getScore());
				scoreText.scale.set(1.5); // Increase the size of the score text
				LK.setTimeout(function () {
					scoreText.scale.set(1); // Reset the size of the score text after 100ms
				}, 100);
				scoreText.tint = Math.random() * 0xFFFFFF; // Change the color of the score text randomly
				// Create a splash effect when enemy gets destroyed
				var splash = LK.getAsset('splash', {
					anchorX: 0.5,
					anchorY: 0.5,
					x: enemy.x,
					y: enemy.y,
					scaleX: 2,
					scaleY: 2
				});
				game.addChild(splash);
				LK.setTimeout(function () {
					splash.destroy();
				}, 500);
				break;
			}
		}
		if (bullets.length < 1 || enemies.length < 1) {
			break;
		}
	}
	// Check if enemy goes past the player
	for (var i = enemies.length - 1; i >= 0; i--) {
		var enemy = enemies[i];
		if (enemy.x < player.x) {
			enemy.destroy();
			enemies.splice(i, 1);
			// End the game if an enemy passes the player
			LK.showGameOver();
		}
	}
};
game.down = function (x, y, obj) {
	if (bullets.length < 10) {
		var bullet = game.addChild(new Bullet());
		bullet.x = player.x;
		bullet.y = player.y;
		bullets.push(bullet);
		// Play a sound when bullet is fired
		LK.getSound('shoot').play();
	}
};
// Create a score text
var scoreText = new Text2('Score: 0', {
	size: 100,
	fill: 0x00FF00
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
game.move = function (x, y, obj) {
	player.y = y;
	tween(player, {
		x: player.x + 0.5
	}, {
		duration: 1000,
		easing: tween.linear
	}); // Wind effect: move player slightly to the right over time
}; /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
/**** 
* Classes
****/ 
var Bullet = Container.expand(function () {
	var self = Container.call(this);
	var bulletGraphics = self.attachAsset('bullet', {
		anchorX: 0,
		anchorY: 0.6,
		scaleX: 4,
		scaleY: 4
	});
	self.speed = 10;
	self.update = function () {
		self.x += self.speed;
		if (self.x < 0) {
			self.destroy();
		}
	};
});
var Enemy = Container.expand(function () {
	var self = Container.call(this);
	var enemyGraphics = self.attachAsset('enemy', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 3,
		scaleY: 2
	});
	self.speed = -15;
	self.update = function () {
		self.x += self.speed;
		if (self.x < 0) {
			self.destroy();
		}
	};
});
var Ground = Container.expand(function () {
	var self = Container.call(this);
	var groundGraphics = self.attachAsset('ground', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 3,
		// Scale horizontally by 1.2
		scaleY: 3 // Scale vertically by 1.2
	});
	self.update = function () {
		// Ground moves from right to left
		self.x -= 5;
		if (self.x + self.width < 0) {
			self.x = 2048;
		}
	};
});
var Player = Container.expand(function () {
	var self = Container.call(this);
	var playerGraphics = self.attachAsset('player', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 3,
		// Scale horizontally by 1.2
		scaleY: 3 // Scale vertically by 1.2
	});
	self.speed = 5;
	self.update = function () {
		if (self.x < 0) {
			self.x = 0;
		}
		if (self.x > 300) {
			self.x = 300;
		}
		// Player only moves horizontally
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game();
/**** 
* Game Code
****/ 
var background1 = game.addChild(LK.getAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 1024,
	y: 1366,
	width: 2048,
	height: 2732,
	alpha: 1.0,
	brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var background2 = game.addChild(LK.getAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 3072,
	y: 1366,
	width: 2048,
	height: 2732,
	alpha: 1.0,
	brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var ground = game.addChild(new Ground());
ground.x = 1024;
ground.y = 2732 - 200; // Move the ground asset a little bit up from the bottom of the screen
var player = game.addChild(new Player());
player.x = 1024;
player.y = ground.y - player.height;
var enemies = [];
var bullets = [];
LK.playMusic('backgroundMusic', {
	loop: true
});
game.update = function () {
	background1.x -= 5;
	background2.x -= 5;
	if (background1.x <= -1024) {
		background1.x = background2.x + 2048;
	}
	if (background2.x <= -1024) {
		background2.x = background1.x + 2048;
	}
	if (LK.ticks % 25 == 0) {
		var enemy = game.addChild(new Enemy());
		enemy.x = 2048;
		enemy.y = Math.random() * 2732;
		enemies.push(enemy);
	}
	for (var i = bullets.length - 1; i >= 0; i--) {
		var bullet = bullets[i];
		if (bullet.x > 2048) {
			bullet.destroy();
			bullets.splice(i, 1);
			continue;
		}
		for (var j = enemies.length - 1; j >= 0; j--) {
			var enemy = enemies[j];
			if (bullet.intersects(enemy)) {
				bullet.destroy();
				bullets.splice(i, 1);
				enemy.destroy();
				enemies.splice(j, 1);
				// Calculate score based on distance from player
				var distance = Math.abs(bullet.x - player.x);
				var maxDistance = 2048; // Maximum possible distance
				var scoreIncrement = Math.max(1, Math.floor((maxDistance - distance) / maxDistance * 10)); // Score ranges from 1 to 10
				LK.setScore(LK.getScore() + scoreIncrement);
				// Update the score text with a dynamic effect
				scoreText.setText('Germs: ' + LK.getScore());
				scoreText.scale.set(1.5); // Increase the size of the score text
				LK.setTimeout(function () {
					scoreText.scale.set(1); // Reset the size of the score text after 100ms
				}, 100);
				scoreText.tint = Math.random() * 0xFFFFFF; // Change the color of the score text randomly
				// Create a splash effect when enemy gets destroyed
				var splash = LK.getAsset('splash', {
					anchorX: 0.5,
					anchorY: 0.5,
					x: enemy.x,
					y: enemy.y,
					scaleX: 2,
					scaleY: 2
				});
				game.addChild(splash);
				LK.setTimeout(function () {
					splash.destroy();
				}, 500);
				break;
			}
		}
		if (bullets.length < 1 || enemies.length < 1) {
			break;
		}
	}
	// Check if enemy goes past the player
	for (var i = enemies.length - 1; i >= 0; i--) {
		var enemy = enemies[i];
		if (enemy.x < player.x) {
			enemy.destroy();
			enemies.splice(i, 1);
			// End the game if an enemy passes the player
			LK.showGameOver();
		}
	}
};
game.down = function (x, y, obj) {
	if (bullets.length < 10) {
		var bullet = game.addChild(new Bullet());
		bullet.x = player.x;
		bullet.y = player.y;
		bullets.push(bullet);
		// Play a sound when bullet is fired
		LK.getSound('shoot').play();
	}
};
// Create a score text
var scoreText = new Text2('Score: 0', {
	size: 100,
	fill: 0x00FF00
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
game.move = function (x, y, obj) {
	player.y = y;
	tween(player, {
		x: player.x + 0.5
	}, {
		duration: 1000,
		easing: tween.linear
	}); // Wind effect: move player slightly to the right over time
};
 
 
 make a cartoony enemy germs.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
 character with vaccum gun aiming front In-Game asset.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
 green germs splash out. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
 cartoony art style single tree. In-Game asset. Blank background. High contrast.