/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var Balloon = Container.expand(function (color, speed) {
	var self = Container.call(this);
	self.color = color || 'redBalloon';
	self.speed = speed || 2;
	self.value = 1;
	if (self.color === 'goldBalloon') {
		self.value = 5;
	}
	var balloonGraphics = self.attachAsset(self.color, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	var stringGraphics = self.attachAsset('string', {
		anchorX: 0.5,
		anchorY: 0
	});
	stringGraphics.y = balloonGraphics.height / 2;
	self.radius = balloonGraphics.width / 2;
	self.update = function () {
		self.y -= self.speed;
		// Apply slight horizontal drift
		if (LK.ticks % 30 === 0) {
			self.x += Math.random() * 2 - 1;
		}
	};
	self.pop = function () {
		// Play pop sound
		if (self.color === 'goldBalloon') {
			LK.getSound('goldPop').play();
		} else {
			LK.getSound('pop').play();
		}
		// Flash effect and destroy
		LK.effects.flashObject(self, 0xFFFFFF, 200);
		// Scale up and fade out animation
		tween(self, {
			scaleX: 1.5,
			scaleY: 1.5,
			alpha: 0
		}, {
			duration: 200,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				self.isPopped = true;
			}
		});
	};
	// Receive touch events
	self.down = function (x, y, obj) {
		self.pop();
		return true; // Event handled
	};
	return self;
});
var Bomb = Container.expand(function (speed) {
	var self = Container.call(this);
	self.speed = speed || 1.5;
	var bombGraphics = self.attachAsset('bomb', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	var stringGraphics = self.attachAsset('string', {
		anchorX: 0.5,
		anchorY: 0
	});
	stringGraphics.y = bombGraphics.height / 2;
	self.radius = bombGraphics.width / 2;
	self.update = function () {
		self.y -= self.speed;
		// Apply slight horizontal drift
		if (LK.ticks % 30 === 0) {
			self.x += Math.random() * 2 - 1;
		}
	};
	self.explode = function () {
		// Play explosion sound
		LK.getSound('bombExplode').play();
		// Flash screen and bomb
		LK.effects.flashScreen(0xFF0000, 300);
		LK.effects.flashObject(self, 0xFF0000, 300);
		// Scale up and fade out animation
		tween(self, {
			scaleX: 2,
			scaleY: 2,
			alpha: 0
		}, {
			duration: 300,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				self.isExploded = true;
			}
		});
	};
	// Receive touch events
	self.down = function (x, y, obj) {
		self.explode();
		return true; // Event handled
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87CEEB // Sky blue background
});
/**** 
* Game Code
****/ 
// Game variables
var score = 0;
var level = 1;
var lives = 3;
var balloons = [];
var bombs = [];
var gameActive = true;
var spawnInterval = 60; // Frames between balloon spawns
var bombChance = 0.2; // Chance of spawning a bomb instead of a balloon
var goldChance = 0.1; // Chance of spawning a gold balloon
var lastSpawn = 0;
var highScore = storage.highScore || 0;
// UI elements
var scoreTxt = new Text2('Score: 0', {
	size: 70,
	fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
LK.gui.topRight.addChild(scoreTxt);
scoreTxt.x = -scoreTxt.width - 20;
scoreTxt.y = 20;
var livesTxt = new Text2('Lives: 3', {
	size: 70,
	fill: 0xFFFFFF
});
livesTxt.anchor.set(0, 0);
LK.gui.topRight.addChild(livesTxt);
livesTxt.x = -livesTxt.width - 20;
livesTxt.y = scoreTxt.y + scoreTxt.height + 10;
var levelTxt = new Text2('Level: 1', {
	size: 70,
	fill: 0xFFFFFF
});
levelTxt.anchor.set(0, 0);
LK.gui.top.addChild(levelTxt);
levelTxt.y = 20;
// Function to update score display
function updateScore(points) {
	score += points;
	scoreTxt.setText('Score: ' + score);
	// Update high score if needed
	if (score > highScore) {
		highScore = score;
		storage.highScore = highScore;
	}
	// Level up every 100 points
	var newLevel = Math.floor(score / 100) + 1;
	if (newLevel > level) {
		level = newLevel;
		levelTxt.setText('Level: ' + level);
		// Increase difficulty
		spawnInterval = Math.max(20, 60 - level * 5);
		bombChance = Math.min(0.4, 0.2 + level * 0.03);
	}
	// Set LK engine score for leaderboards
	LK.setScore(score);
}
// Function to update lives display
function updateLives(change) {
	lives += change;
	livesTxt.setText('Lives: ' + lives);
	if (lives <= 0) {
		gameActive = false;
		LK.showGameOver();
	}
}
// Function to spawn a new balloon
function spawnBalloon() {
	// Random horizontal position
	var x = Math.random() * (2048 - 200) + 100;
	// Randomize balloon type
	var randomValue = Math.random();
	if (randomValue < bombChance) {
		// Spawn bomb
		var bomb = new Bomb(1.5 + level * 0.2);
		bomb.x = x;
		bomb.y = 2732 + bomb.radius;
		bombs.push(bomb);
		game.addChild(bomb);
	} else {
		// Spawn balloon
		var colorOptions = ['redBalloon', 'blueBalloon', 'greenBalloon'];
		var balloonColor = colorOptions[Math.floor(Math.random() * colorOptions.length)];
		// Gold balloon chance
		if (Math.random() < goldChance) {
			balloonColor = 'goldBalloon';
		}
		var balloon = new Balloon(balloonColor, 1.5 + level * 0.3);
		balloon.x = x;
		balloon.y = 2732 + balloon.radius;
		balloons.push(balloon);
		game.addChild(balloon);
	}
}
// Start background music
LK.playMusic('gameMusic', {
	fade: {
		start: 0,
		end: 0.4,
		duration: 1000
	}
});
// Game update function
game.update = function () {
	if (!gameActive) {
		return;
	}
	// Spawn new balloons based on interval
	if (LK.ticks - lastSpawn > spawnInterval) {
		spawnBalloon();
		lastSpawn = LK.ticks;
	}
	// Update balloons
	for (var i = balloons.length - 1; i >= 0; i--) {
		var balloon = balloons[i];
		// Check if balloon is off screen
		if (balloon.y < -balloon.radius) {
			// Missed a balloon
			game.removeChild(balloon);
			balloons.splice(i, 1);
			// Only lose a life if it's not a bomb
			updateLives(-1);
			continue;
		}
		// Check if balloon has been popped
		if (balloon.isPopped) {
			game.removeChild(balloon);
			balloons.splice(i, 1);
			updateScore(balloon.value);
		}
	}
	// Update bombs
	for (var j = bombs.length - 1; j >= 0; j--) {
		var bomb = bombs[j];
		// Check if bomb is off screen
		if (bomb.y < -bomb.radius) {
			// Bomb floated away safely
			game.removeChild(bomb);
			bombs.splice(j, 1);
			continue;
		}
		// Check if bomb has exploded
		if (bomb.isExploded) {
			game.removeChild(bomb);
			bombs.splice(j, 1);
			updateLives(-1);
		}
	}
};
// Mouse/touch events for game area (not needed since objects handle their own touch events)
game.down = function (x, y, obj) {
	// This is handled by the individual balloon/bomb objects
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,273 @@
-/****
+/**** 
+* Plugins
+****/ 
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/**** 
+* Classes
+****/ 
+var Balloon = Container.expand(function (color, speed) {
+	var self = Container.call(this);
+	self.color = color || 'redBalloon';
+	self.speed = speed || 2;
+	self.value = 1;
+	if (self.color === 'goldBalloon') {
+		self.value = 5;
+	}
+	var balloonGraphics = self.attachAsset(self.color, {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	var stringGraphics = self.attachAsset('string', {
+		anchorX: 0.5,
+		anchorY: 0
+	});
+	stringGraphics.y = balloonGraphics.height / 2;
+	self.radius = balloonGraphics.width / 2;
+	self.update = function () {
+		self.y -= self.speed;
+		// Apply slight horizontal drift
+		if (LK.ticks % 30 === 0) {
+			self.x += Math.random() * 2 - 1;
+		}
+	};
+	self.pop = function () {
+		// Play pop sound
+		if (self.color === 'goldBalloon') {
+			LK.getSound('goldPop').play();
+		} else {
+			LK.getSound('pop').play();
+		}
+		// Flash effect and destroy
+		LK.effects.flashObject(self, 0xFFFFFF, 200);
+		// Scale up and fade out animation
+		tween(self, {
+			scaleX: 1.5,
+			scaleY: 1.5,
+			alpha: 0
+		}, {
+			duration: 200,
+			easing: tween.easeOut,
+			onFinish: function onFinish() {
+				self.isPopped = true;
+			}
+		});
+	};
+	// Receive touch events
+	self.down = function (x, y, obj) {
+		self.pop();
+		return true; // Event handled
+	};
+	return self;
+});
+var Bomb = Container.expand(function (speed) {
+	var self = Container.call(this);
+	self.speed = speed || 1.5;
+	var bombGraphics = self.attachAsset('bomb', {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	var stringGraphics = self.attachAsset('string', {
+		anchorX: 0.5,
+		anchorY: 0
+	});
+	stringGraphics.y = bombGraphics.height / 2;
+	self.radius = bombGraphics.width / 2;
+	self.update = function () {
+		self.y -= self.speed;
+		// Apply slight horizontal drift
+		if (LK.ticks % 30 === 0) {
+			self.x += Math.random() * 2 - 1;
+		}
+	};
+	self.explode = function () {
+		// Play explosion sound
+		LK.getSound('bombExplode').play();
+		// Flash screen and bomb
+		LK.effects.flashScreen(0xFF0000, 300);
+		LK.effects.flashObject(self, 0xFF0000, 300);
+		// Scale up and fade out animation
+		tween(self, {
+			scaleX: 2,
+			scaleY: 2,
+			alpha: 0
+		}, {
+			duration: 300,
+			easing: tween.easeOut,
+			onFinish: function onFinish() {
+				self.isExploded = true;
+			}
+		});
+	};
+	// Receive touch events
+	self.down = function (x, y, obj) {
+		self.explode();
+		return true; // Event handled
+	};
+	return self;
+});
+
+/**** 
 * Initialize Game
-****/
+****/ 
 var game = new LK.Game({
-	backgroundColor: 0x000000
-});
\ No newline at end of file
+	backgroundColor: 0x87CEEB // Sky blue background
+});
+
+/**** 
+* Game Code
+****/ 
+// Game variables
+var score = 0;
+var level = 1;
+var lives = 3;
+var balloons = [];
+var bombs = [];
+var gameActive = true;
+var spawnInterval = 60; // Frames between balloon spawns
+var bombChance = 0.2; // Chance of spawning a bomb instead of a balloon
+var goldChance = 0.1; // Chance of spawning a gold balloon
+var lastSpawn = 0;
+var highScore = storage.highScore || 0;
+// UI elements
+var scoreTxt = new Text2('Score: 0', {
+	size: 70,
+	fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0, 0);
+LK.gui.topRight.addChild(scoreTxt);
+scoreTxt.x = -scoreTxt.width - 20;
+scoreTxt.y = 20;
+var livesTxt = new Text2('Lives: 3', {
+	size: 70,
+	fill: 0xFFFFFF
+});
+livesTxt.anchor.set(0, 0);
+LK.gui.topRight.addChild(livesTxt);
+livesTxt.x = -livesTxt.width - 20;
+livesTxt.y = scoreTxt.y + scoreTxt.height + 10;
+var levelTxt = new Text2('Level: 1', {
+	size: 70,
+	fill: 0xFFFFFF
+});
+levelTxt.anchor.set(0, 0);
+LK.gui.top.addChild(levelTxt);
+levelTxt.y = 20;
+// Function to update score display
+function updateScore(points) {
+	score += points;
+	scoreTxt.setText('Score: ' + score);
+	// Update high score if needed
+	if (score > highScore) {
+		highScore = score;
+		storage.highScore = highScore;
+	}
+	// Level up every 100 points
+	var newLevel = Math.floor(score / 100) + 1;
+	if (newLevel > level) {
+		level = newLevel;
+		levelTxt.setText('Level: ' + level);
+		// Increase difficulty
+		spawnInterval = Math.max(20, 60 - level * 5);
+		bombChance = Math.min(0.4, 0.2 + level * 0.03);
+	}
+	// Set LK engine score for leaderboards
+	LK.setScore(score);
+}
+// Function to update lives display
+function updateLives(change) {
+	lives += change;
+	livesTxt.setText('Lives: ' + lives);
+	if (lives <= 0) {
+		gameActive = false;
+		LK.showGameOver();
+	}
+}
+// Function to spawn a new balloon
+function spawnBalloon() {
+	// Random horizontal position
+	var x = Math.random() * (2048 - 200) + 100;
+	// Randomize balloon type
+	var randomValue = Math.random();
+	if (randomValue < bombChance) {
+		// Spawn bomb
+		var bomb = new Bomb(1.5 + level * 0.2);
+		bomb.x = x;
+		bomb.y = 2732 + bomb.radius;
+		bombs.push(bomb);
+		game.addChild(bomb);
+	} else {
+		// Spawn balloon
+		var colorOptions = ['redBalloon', 'blueBalloon', 'greenBalloon'];
+		var balloonColor = colorOptions[Math.floor(Math.random() * colorOptions.length)];
+		// Gold balloon chance
+		if (Math.random() < goldChance) {
+			balloonColor = 'goldBalloon';
+		}
+		var balloon = new Balloon(balloonColor, 1.5 + level * 0.3);
+		balloon.x = x;
+		balloon.y = 2732 + balloon.radius;
+		balloons.push(balloon);
+		game.addChild(balloon);
+	}
+}
+// Start background music
+LK.playMusic('gameMusic', {
+	fade: {
+		start: 0,
+		end: 0.4,
+		duration: 1000
+	}
+});
+// Game update function
+game.update = function () {
+	if (!gameActive) {
+		return;
+	}
+	// Spawn new balloons based on interval
+	if (LK.ticks - lastSpawn > spawnInterval) {
+		spawnBalloon();
+		lastSpawn = LK.ticks;
+	}
+	// Update balloons
+	for (var i = balloons.length - 1; i >= 0; i--) {
+		var balloon = balloons[i];
+		// Check if balloon is off screen
+		if (balloon.y < -balloon.radius) {
+			// Missed a balloon
+			game.removeChild(balloon);
+			balloons.splice(i, 1);
+			// Only lose a life if it's not a bomb
+			updateLives(-1);
+			continue;
+		}
+		// Check if balloon has been popped
+		if (balloon.isPopped) {
+			game.removeChild(balloon);
+			balloons.splice(i, 1);
+			updateScore(balloon.value);
+		}
+	}
+	// Update bombs
+	for (var j = bombs.length - 1; j >= 0; j--) {
+		var bomb = bombs[j];
+		// Check if bomb is off screen
+		if (bomb.y < -bomb.radius) {
+			// Bomb floated away safely
+			game.removeChild(bomb);
+			bombs.splice(j, 1);
+			continue;
+		}
+		// Check if bomb has exploded
+		if (bomb.isExploded) {
+			game.removeChild(bomb);
+			bombs.splice(j, 1);
+			updateLives(-1);
+		}
+	}
+};
+// Mouse/touch events for game area (not needed since objects handle their own touch events)
+game.down = function (x, y, obj) {
+	// This is handled by the individual balloon/bomb objects
+};
\ No newline at end of file