/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var Collectible = Container.expand(function (type) {
	var self = Container.call(this);
	self.type = type || 'button';
	var collectibleGraphics = self.attachAsset(self.type, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.collected = false;
	self.update = function () {
		// Simple animation
		collectibleGraphics.rotation += 0.02;
		// Floating effect
		collectibleGraphics.y = Math.sin(LK.ticks * 0.05) * 5;
	};
	self.collect = function () {
		if (self.collected) {
			return;
		}
		self.collected = true;
		LK.getSound('collect').play();
		// Collect animation
		tween(collectibleGraphics, {
			alpha: 0,
			scaleX: 1.5,
			scaleY: 1.5
		}, {
			duration: 300,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				self.destroy();
			}
		});
		return self.type;
	};
	return self;
});
var Hazard = Container.expand(function (type) {
	var self = Container.call(this);
	self.type = type || 'scissors';
	var hazardGraphics = self.attachAsset(self.type, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.moving = false;
	self.moveSpeed = 0;
	self.moveDirection = 1;
	self.moveDistance = 0;
	self.startX = 0;
	self.setMoving = function (speed, distance) {
		self.moving = true;
		self.moveSpeed = speed;
		self.moveDistance = distance;
		self.startX = self.x;
	};
	self.update = function () {
		if (self.moving) {
			self.x += self.moveSpeed * self.moveDirection;
			if (Math.abs(self.x - self.startX) > self.moveDistance) {
				self.moveDirection *= -1;
			}
		}
		// Animation
		if (self.type === 'scissors') {
			hazardGraphics.rotation = Math.sin(LK.ticks * 0.05) * 0.2;
		}
	};
	return self;
});
var Platform = Container.expand(function () {
	var self = Container.call(this);
	var platformGraphics = self.attachAsset('platform', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.width = platformGraphics.width;
	self.height = platformGraphics.height;
	self.moving = false;
	self.moveSpeed = 0;
	self.moveDirection = 1;
	self.moveDistance = 0;
	self.startX = 0;
	self.setMoving = function (speed, distance) {
		self.moving = true;
		self.moveSpeed = speed;
		self.moveDistance = distance;
		self.startX = self.x;
	};
	self.update = function () {
		if (self.moving) {
			self.x += self.moveSpeed * self.moveDirection;
			if (Math.abs(self.x - self.startX) > self.moveDistance) {
				self.moveDirection *= -1;
			}
		}
	};
	return self;
});
var PowerUp = Container.expand(function () {
	var self = Container.call(this);
	var powerupGraphics = self.attachAsset('powerup', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.type = 'random';
	self.collected = false;
	// Choose a random power-up type
	var types = ['fly', 'big', 'invincible'];
	self.powerType = types[Math.floor(Math.random() * types.length)];
	// Set color based on type
	if (self.powerType === 'fly') {
		powerupGraphics.tint = 0x88CCFF;
	} else if (self.powerType === 'big') {
		powerupGraphics.tint = 0xFF8866;
	} else if (self.powerType === 'invincible') {
		powerupGraphics.tint = 0xFFDD44;
	}
	self.update = function () {
		// Floating and rotation animation
		powerupGraphics.rotation += 0.03;
		powerupGraphics.y = Math.sin(LK.ticks * 0.1) * 8;
	};
	self.collect = function () {
		if (self.collected) {
			return null;
		}
		self.collected = true;
		// Collect animation
		tween(powerupGraphics, {
			alpha: 0,
			scaleX: 2,
			scaleY: 2
		}, {
			duration: 300,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				self.destroy();
			}
		});
		return self.powerType;
	};
	return self;
});
var Sackboy = Container.expand(function () {
	var self = Container.call(this);
	var body = self.attachAsset('sackboy', {
		anchorX: 0.5,
		anchorY: 0.5,
		tint: 0xDDAA66
	});
	// Physics properties
	self.velocity = {
		x: 0,
		y: 0
	};
	self.gravity = 0.5;
	self.bounce = 0.8;
	self.grounded = false;
	self.alive = true;
	self.powered = false;
	self.powerType = null;
	self.powerTime = 0;
	// Apply physics
	self.update = function () {
		if (!self.alive) {
			return;
		}
		// Apply gravity
		self.velocity.y += self.gravity;
		// Apply velocity
		self.x += self.velocity.x;
		self.y += self.velocity.y;
		// Handle power-ups
		if (self.powered) {
			self.powerTime--;
			// Power-up effects
			if (self.powerType === 'fly') {
				self.velocity.y = Math.min(self.velocity.y, 1);
			} else if (self.powerType === 'big') {
				// Already scaled in activatePower
			} else if (self.powerType === 'invincible') {
				// Visual pulsing effect
				body.alpha = 0.5 + Math.sin(LK.ticks * 0.2) * 0.5;
			}
			// End power-up
			if (self.powerTime <= 0) {
				self.deactivatePower();
			}
		}
		// Screen boundaries
		if (self.x < 50) {
			self.x = 50;
			self.velocity.x *= -0.5;
		} else if (self.x > 2048 - 50) {
			self.x = 2048 - 50;
			self.velocity.x *= -0.5;
		}
		// Bottom boundary - game over
		if (self.y > 2732 + 100) {
			self.die();
		}
		// Simple animation
		body.rotation += self.velocity.x * 0.01;
	};
	self.bounce = function (power) {
		self.velocity.y = -power;
		self.grounded = false;
		LK.getSound('bounce').play();
	};
	self.activatePower = function (type) {
		self.powered = true;
		self.powerType = type;
		self.powerTime = 300; // 5 seconds at 60fps
		if (type === 'big') {
			tween(body, {
				scaleX: 1.5,
				scaleY: 1.5
			}, {
				duration: 300,
				easing: tween.easeOut
			});
		} else if (type === 'invincible') {
			body.tint = 0xFFDD44;
		} else if (type === 'fly') {
			body.tint = 0x88CCFF;
		}
		LK.getSound('powerup').play();
	};
	self.deactivatePower = function () {
		self.powered = false;
		// Reset visual effects
		if (self.powerType === 'big') {
			tween(body, {
				scaleX: 1,
				scaleY: 1
			}, {
				duration: 300,
				easing: tween.easeOut
			});
		} else if (self.powerType === 'invincible' || self.powerType === 'fly') {
			body.tint = 0xDDAA66;
			body.alpha = 1;
		}
		self.powerType = null;
	};
	self.die = function () {
		if (!self.alive) {
			return;
		}
		self.alive = false;
		LK.getSound('hurt').play();
		// Visual effect for death
		tween(body, {
			alpha: 0,
			rotation: Math.PI * 4,
			scaleX: 0.1,
			scaleY: 0.1
		}, {
			duration: 1000,
			easing: tween.easeIn,
			onFinish: function onFinish() {
				LK.showGameOver();
			}
		});
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x88BBCC
});
/**** 
* Game Code
****/ 
// Game variables
var sackboy;
var platforms = [];
var collectibles = [];
var hazards = [];
var powerups = [];
var score = 0;
var level = 1;
var maxLevel = 3;
var touchStart = {
	x: 0,
	y: 0
};
var touchDragging = false;
// UI elements
var scoreTxt;
var levelTxt;
var instructionsTxt;
function initGame() {
	// Reset game state
	platforms = [];
	collectibles = [];
	hazards = [];
	powerups = [];
	score = 0;
	// Get saved level or start at level 1
	level = storage.level || 1;
	if (level > maxLevel) {
		level = 1;
	}
	// Set up UI
	setupUI();
	// Create Sackboy
	sackboy = new Sackboy();
	sackboy.x = 1024;
	sackboy.y = 2000;
	game.addChild(sackboy);
	// Create level based on current level
	createLevel(level);
	// Play background music
	LK.playMusic('bgmusic', {
		fade: {
			start: 0,
			end: 0.6,
			duration: 1000
		}
	});
}
function setupUI() {
	// Score text
	scoreTxt = new Text2('Buttons: 0', {
		size: 80,
		fill: 0xFFFFFF
	});
	scoreTxt.anchor.set(0, 0);
	LK.gui.topRight.addChild(scoreTxt);
	// Level text
	levelTxt = new Text2('Level ' + level, {
		size: 80,
		fill: 0xFFFFFF
	});
	levelTxt.anchor.set(1, 0);
	LK.gui.topRight.addChild(levelTxt);
	// Instructions
	instructionsTxt = new Text2('Tilt to move Sackboy\nCollect buttons & bounce higher!', {
		size: 60,
		fill: 0xFFFFFF
	});
	instructionsTxt.anchor.set(0.5, 0);
	LK.gui.top.addChild(instructionsTxt);
	// Hide instructions after 3 seconds
	LK.setTimeout(function () {
		tween(instructionsTxt, {
			alpha: 0
		}, {
			duration: 1000
		});
	}, 3000);
}
function createLevel(levelNum) {
	// Position platforms and collectibles based on level
	if (levelNum === 1) {
		// Level 1: Simple introduction level
		createPlatform(1024, 2200);
		createPlatform(600, 1900);
		createPlatform(1450, 1900);
		createPlatform(1024, 1600);
		createPlatform(600, 1300);
		createPlatform(1450, 1300);
		createPlatform(1024, 1000);
		createPlatform(600, 700);
		createPlatform(1450, 700);
		// Add collectibles
		createCollectible('button', 600, 1800);
		createCollectible('button', 1450, 1800);
		createCollectible('button', 1024, 1500);
		createCollectible('yarn', 600, 1200);
		createCollectible('button', 1450, 1200);
		createCollectible('yarn', 1024, 900);
		// Add power-up
		createPowerUp(1024, 600);
	} else if (levelNum === 2) {
		// Level 2: Add some moving platforms and hazards
		createPlatform(1024, 2200);
		var movingPlatform1 = createPlatform(600, 1900);
		movingPlatform1.setMoving(2, 300);
		createPlatform(1450, 1900);
		createPlatform(1024, 1600);
		// Add hazards
		createHazard('scissors', 1024, 1500);
		var movingPlatform2 = createPlatform(600, 1300);
		movingPlatform2.setMoving(3, 400);
		createPlatform(1450, 1300);
		createPlatform(1024, 1000);
		createHazard('thread', 600, 900);
		createPlatform(1450, 700);
		// Add collectibles
		createCollectible('button', 600, 1800);
		createCollectible('button', 1450, 1800);
		createCollectible('yarn', 800, 1500);
		createCollectible('button', 1250, 1500);
		createCollectible('button', 600, 1200);
		createCollectible('yarn', 1450, 1200);
		createCollectible('yarn', 1024, 900);
		createCollectible('button', 1450, 600);
		// Add power-ups
		createPowerUp(800, 600);
	} else if (levelNum === 3) {
		// Level 3: Most challenging level
		createPlatform(1024, 2200);
		var movingPlatform1 = createPlatform(600, 1900);
		movingPlatform1.setMoving(3, 400);
		var movingPlatform2 = createPlatform(1450, 1800);
		movingPlatform2.setMoving(4, 300);
		createPlatform(1024, 1600);
		// Add hazards
		createHazard('scissors', 800, 1500);
		createHazard('scissors', 1250, 1500);
		var movingHazard = createHazard('thread', 1024, 1400);
		movingHazard.setMoving(5, 500);
		var movingPlatform3 = createPlatform(600, 1300);
		movingPlatform3.setMoving(3, 350);
		var movingPlatform4 = createPlatform(1450, 1200);
		movingPlatform4.setMoving(4, 400);
		createPlatform(1024, 1000);
		createHazard('thread', 600, 900);
		createHazard('scissors', 1450, 900);
		createPlatform(800, 700);
		createPlatform(1250, 600);
		// Add collectibles
		createCollectible('button', 600, 1800);
		createCollectible('yarn', 1450, 1700);
		createCollectible('button', 800, 1500);
		createCollectible('button', 1250, 1500);
		createCollectible('yarn', 600, 1200);
		createCollectible('button', 1450, 1100);
		createCollectible('yarn', 1024, 900);
		createCollectible('button', 800, 600);
		createCollectible('yarn', 1250, 500);
		// Add power-ups
		createPowerUp(600, 800);
		createPowerUp(1450, 800);
	}
}
function createPlatform(x, y) {
	var platform = new Platform();
	platform.x = x;
	platform.y = y;
	game.addChild(platform);
	platforms.push(platform);
	return platform;
}
function createCollectible(type, x, y) {
	var collectible = new Collectible(type);
	collectible.x = x;
	collectible.y = y;
	game.addChild(collectible);
	collectibles.push(collectible);
	return collectible;
}
function createHazard(type, x, y) {
	var hazard = new Hazard(type);
	hazard.x = x;
	hazard.y = y;
	game.addChild(hazard);
	hazards.push(hazard);
	return hazard;
}
function createPowerUp(x, y) {
	var powerup = new PowerUp();
	powerup.x = x;
	powerup.y = y;
	game.addChild(powerup);
	powerups.push(powerup);
	return powerup;
}
function updateScore(points) {
	score += points;
	scoreTxt.setText('Buttons: ' + score);
	// Check win condition
	if (score >= 10) {
		completeLevel();
	}
}
function completeLevel() {
	// Save progress
	level++;
	storage.level = level;
	if (level > maxLevel) {
		// Player completed all levels
		LK.showYouWin();
	} else {
		// Show level complete message
		var levelCompleteTxt = new Text2('Level Complete!', {
			size: 120,
			fill: 0xFFFFFF
		});
		levelCompleteTxt.anchor.set(0.5, 0.5);
		levelCompleteTxt.x = 1024;
		levelCompleteTxt.y = 1366;
		game.addChild(levelCompleteTxt);
		// Fade out and load next level
		LK.setTimeout(function () {
			tween(levelCompleteTxt, {
				alpha: 0
			}, {
				duration: 1000,
				onFinish: function onFinish() {
					levelCompleteTxt.destroy();
					initGame();
				}
			});
		}, 2000);
	}
}
function checkCollisions() {
	if (!sackboy.alive) {
		return;
	}
	// Check platform collisions
	for (var i = 0; i < platforms.length; i++) {
		var platform = platforms[i];
		// Only bounce when falling
		if (sackboy.velocity.y > 0 && sackboy.intersects(platform)) {
			// Check if Sackboy is above the platform
			if (sackboy.y < platform.y - platform.height / 2) {
				sackboy.y = platform.y - platform.height / 2 - sackboy.height / 2;
				sackboy.bounce(15);
			}
		}
	}
	// Check collectible collisions
	for (var j = collectibles.length - 1; j >= 0; j--) {
		var collectible = collectibles[j];
		if (sackboy.intersects(collectible) && !collectible.collected) {
			var type = collectible.collect();
			if (type === 'button') {
				updateScore(1);
			} else if (type === 'yarn') {
				// Yarn gives extra bounce
				sackboy.bounce(25);
			}
			collectibles.splice(j, 1);
		}
	}
	// Check hazard collisions
	for (var k = 0; k < hazards.length; k++) {
		var hazard = hazards[k];
		if (sackboy.intersects(hazard)) {
			// Check if invincible
			if (sackboy.powered && sackboy.powerType === 'invincible') {
				// Invincible - ignore hazard
				continue;
			}
			sackboy.die();
			break;
		}
	}
	// Check power-up collisions
	for (var l = powerups.length - 1; l >= 0; l--) {
		var powerup = powerups[l];
		if (sackboy.intersects(powerup) && !powerup.collected) {
			var powerType = powerup.collect();
			if (powerType) {
				sackboy.activatePower(powerType);
			}
			powerups.splice(l, 1);
		}
	}
}
// Game control touch handlers
game.down = function (x, y, obj) {
	touchStart.x = x;
	touchStart.y = y;
	touchDragging = true;
};
game.move = function (x, y, obj) {
	if (touchDragging && sackboy && sackboy.alive) {
		// Calculate drag amount
		var dragX = x - touchStart.x;
		// Apply horizontal velocity based on drag
		sackboy.velocity.x = dragX * 0.1;
		// Update touch position
		touchStart.x = x;
		touchStart.y = y;
	}
};
game.up = function (x, y, obj) {
	touchDragging = false;
	// Gradually slow down horizontal velocity
	if (sackboy && sackboy.alive) {
		sackboy.velocity.x *= 0.5;
	}
};
// Main game update loop
game.update = function () {
	// Check collisions
	checkCollisions();
	// Update all game objects
	for (var i = 0; i < platforms.length; i++) {
		platforms[i].update();
	}
	for (var j = 0; j < collectibles.length; j++) {
		collectibles[j].update();
	}
	for (var k = 0; k < hazards.length; k++) {
		hazards[k].update();
	}
	for (var l = 0; l < powerups.length; l++) {
		powerups[l].update();
	}
	// Automatically slow down horizontal velocity
	if (sackboy && sackboy.alive) {
		sackboy.velocity.x *= 0.98;
	}
};
// Initialize the game
initGame(); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,624 @@
-/****
+/**** 
+* Plugins
+****/ 
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/**** 
+* Classes
+****/ 
+var Collectible = Container.expand(function (type) {
+	var self = Container.call(this);
+	self.type = type || 'button';
+	var collectibleGraphics = self.attachAsset(self.type, {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	self.collected = false;
+	self.update = function () {
+		// Simple animation
+		collectibleGraphics.rotation += 0.02;
+		// Floating effect
+		collectibleGraphics.y = Math.sin(LK.ticks * 0.05) * 5;
+	};
+	self.collect = function () {
+		if (self.collected) {
+			return;
+		}
+		self.collected = true;
+		LK.getSound('collect').play();
+		// Collect animation
+		tween(collectibleGraphics, {
+			alpha: 0,
+			scaleX: 1.5,
+			scaleY: 1.5
+		}, {
+			duration: 300,
+			easing: tween.easeOut,
+			onFinish: function onFinish() {
+				self.destroy();
+			}
+		});
+		return self.type;
+	};
+	return self;
+});
+var Hazard = Container.expand(function (type) {
+	var self = Container.call(this);
+	self.type = type || 'scissors';
+	var hazardGraphics = self.attachAsset(self.type, {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	self.moving = false;
+	self.moveSpeed = 0;
+	self.moveDirection = 1;
+	self.moveDistance = 0;
+	self.startX = 0;
+	self.setMoving = function (speed, distance) {
+		self.moving = true;
+		self.moveSpeed = speed;
+		self.moveDistance = distance;
+		self.startX = self.x;
+	};
+	self.update = function () {
+		if (self.moving) {
+			self.x += self.moveSpeed * self.moveDirection;
+			if (Math.abs(self.x - self.startX) > self.moveDistance) {
+				self.moveDirection *= -1;
+			}
+		}
+		// Animation
+		if (self.type === 'scissors') {
+			hazardGraphics.rotation = Math.sin(LK.ticks * 0.05) * 0.2;
+		}
+	};
+	return self;
+});
+var Platform = Container.expand(function () {
+	var self = Container.call(this);
+	var platformGraphics = self.attachAsset('platform', {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	self.width = platformGraphics.width;
+	self.height = platformGraphics.height;
+	self.moving = false;
+	self.moveSpeed = 0;
+	self.moveDirection = 1;
+	self.moveDistance = 0;
+	self.startX = 0;
+	self.setMoving = function (speed, distance) {
+		self.moving = true;
+		self.moveSpeed = speed;
+		self.moveDistance = distance;
+		self.startX = self.x;
+	};
+	self.update = function () {
+		if (self.moving) {
+			self.x += self.moveSpeed * self.moveDirection;
+			if (Math.abs(self.x - self.startX) > self.moveDistance) {
+				self.moveDirection *= -1;
+			}
+		}
+	};
+	return self;
+});
+var PowerUp = Container.expand(function () {
+	var self = Container.call(this);
+	var powerupGraphics = self.attachAsset('powerup', {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	self.type = 'random';
+	self.collected = false;
+	// Choose a random power-up type
+	var types = ['fly', 'big', 'invincible'];
+	self.powerType = types[Math.floor(Math.random() * types.length)];
+	// Set color based on type
+	if (self.powerType === 'fly') {
+		powerupGraphics.tint = 0x88CCFF;
+	} else if (self.powerType === 'big') {
+		powerupGraphics.tint = 0xFF8866;
+	} else if (self.powerType === 'invincible') {
+		powerupGraphics.tint = 0xFFDD44;
+	}
+	self.update = function () {
+		// Floating and rotation animation
+		powerupGraphics.rotation += 0.03;
+		powerupGraphics.y = Math.sin(LK.ticks * 0.1) * 8;
+	};
+	self.collect = function () {
+		if (self.collected) {
+			return null;
+		}
+		self.collected = true;
+		// Collect animation
+		tween(powerupGraphics, {
+			alpha: 0,
+			scaleX: 2,
+			scaleY: 2
+		}, {
+			duration: 300,
+			easing: tween.easeOut,
+			onFinish: function onFinish() {
+				self.destroy();
+			}
+		});
+		return self.powerType;
+	};
+	return self;
+});
+var Sackboy = Container.expand(function () {
+	var self = Container.call(this);
+	var body = self.attachAsset('sackboy', {
+		anchorX: 0.5,
+		anchorY: 0.5,
+		tint: 0xDDAA66
+	});
+	// Physics properties
+	self.velocity = {
+		x: 0,
+		y: 0
+	};
+	self.gravity = 0.5;
+	self.bounce = 0.8;
+	self.grounded = false;
+	self.alive = true;
+	self.powered = false;
+	self.powerType = null;
+	self.powerTime = 0;
+	// Apply physics
+	self.update = function () {
+		if (!self.alive) {
+			return;
+		}
+		// Apply gravity
+		self.velocity.y += self.gravity;
+		// Apply velocity
+		self.x += self.velocity.x;
+		self.y += self.velocity.y;
+		// Handle power-ups
+		if (self.powered) {
+			self.powerTime--;
+			// Power-up effects
+			if (self.powerType === 'fly') {
+				self.velocity.y = Math.min(self.velocity.y, 1);
+			} else if (self.powerType === 'big') {
+				// Already scaled in activatePower
+			} else if (self.powerType === 'invincible') {
+				// Visual pulsing effect
+				body.alpha = 0.5 + Math.sin(LK.ticks * 0.2) * 0.5;
+			}
+			// End power-up
+			if (self.powerTime <= 0) {
+				self.deactivatePower();
+			}
+		}
+		// Screen boundaries
+		if (self.x < 50) {
+			self.x = 50;
+			self.velocity.x *= -0.5;
+		} else if (self.x > 2048 - 50) {
+			self.x = 2048 - 50;
+			self.velocity.x *= -0.5;
+		}
+		// Bottom boundary - game over
+		if (self.y > 2732 + 100) {
+			self.die();
+		}
+		// Simple animation
+		body.rotation += self.velocity.x * 0.01;
+	};
+	self.bounce = function (power) {
+		self.velocity.y = -power;
+		self.grounded = false;
+		LK.getSound('bounce').play();
+	};
+	self.activatePower = function (type) {
+		self.powered = true;
+		self.powerType = type;
+		self.powerTime = 300; // 5 seconds at 60fps
+		if (type === 'big') {
+			tween(body, {
+				scaleX: 1.5,
+				scaleY: 1.5
+			}, {
+				duration: 300,
+				easing: tween.easeOut
+			});
+		} else if (type === 'invincible') {
+			body.tint = 0xFFDD44;
+		} else if (type === 'fly') {
+			body.tint = 0x88CCFF;
+		}
+		LK.getSound('powerup').play();
+	};
+	self.deactivatePower = function () {
+		self.powered = false;
+		// Reset visual effects
+		if (self.powerType === 'big') {
+			tween(body, {
+				scaleX: 1,
+				scaleY: 1
+			}, {
+				duration: 300,
+				easing: tween.easeOut
+			});
+		} else if (self.powerType === 'invincible' || self.powerType === 'fly') {
+			body.tint = 0xDDAA66;
+			body.alpha = 1;
+		}
+		self.powerType = null;
+	};
+	self.die = function () {
+		if (!self.alive) {
+			return;
+		}
+		self.alive = false;
+		LK.getSound('hurt').play();
+		// Visual effect for death
+		tween(body, {
+			alpha: 0,
+			rotation: Math.PI * 4,
+			scaleX: 0.1,
+			scaleY: 0.1
+		}, {
+			duration: 1000,
+			easing: tween.easeIn,
+			onFinish: function onFinish() {
+				LK.showGameOver();
+			}
+		});
+	};
+	return self;
+});
+
+/**** 
 * Initialize Game
-****/
+****/ 
 var game = new LK.Game({
-	backgroundColor: 0x000000
-});
\ No newline at end of file
+	backgroundColor: 0x88BBCC
+});
+
+/**** 
+* Game Code
+****/ 
+// Game variables
+var sackboy;
+var platforms = [];
+var collectibles = [];
+var hazards = [];
+var powerups = [];
+var score = 0;
+var level = 1;
+var maxLevel = 3;
+var touchStart = {
+	x: 0,
+	y: 0
+};
+var touchDragging = false;
+// UI elements
+var scoreTxt;
+var levelTxt;
+var instructionsTxt;
+function initGame() {
+	// Reset game state
+	platforms = [];
+	collectibles = [];
+	hazards = [];
+	powerups = [];
+	score = 0;
+	// Get saved level or start at level 1
+	level = storage.level || 1;
+	if (level > maxLevel) {
+		level = 1;
+	}
+	// Set up UI
+	setupUI();
+	// Create Sackboy
+	sackboy = new Sackboy();
+	sackboy.x = 1024;
+	sackboy.y = 2000;
+	game.addChild(sackboy);
+	// Create level based on current level
+	createLevel(level);
+	// Play background music
+	LK.playMusic('bgmusic', {
+		fade: {
+			start: 0,
+			end: 0.6,
+			duration: 1000
+		}
+	});
+}
+function setupUI() {
+	// Score text
+	scoreTxt = new Text2('Buttons: 0', {
+		size: 80,
+		fill: 0xFFFFFF
+	});
+	scoreTxt.anchor.set(0, 0);
+	LK.gui.topRight.addChild(scoreTxt);
+	// Level text
+	levelTxt = new Text2('Level ' + level, {
+		size: 80,
+		fill: 0xFFFFFF
+	});
+	levelTxt.anchor.set(1, 0);
+	LK.gui.topRight.addChild(levelTxt);
+	// Instructions
+	instructionsTxt = new Text2('Tilt to move Sackboy\nCollect buttons & bounce higher!', {
+		size: 60,
+		fill: 0xFFFFFF
+	});
+	instructionsTxt.anchor.set(0.5, 0);
+	LK.gui.top.addChild(instructionsTxt);
+	// Hide instructions after 3 seconds
+	LK.setTimeout(function () {
+		tween(instructionsTxt, {
+			alpha: 0
+		}, {
+			duration: 1000
+		});
+	}, 3000);
+}
+function createLevel(levelNum) {
+	// Position platforms and collectibles based on level
+	if (levelNum === 1) {
+		// Level 1: Simple introduction level
+		createPlatform(1024, 2200);
+		createPlatform(600, 1900);
+		createPlatform(1450, 1900);
+		createPlatform(1024, 1600);
+		createPlatform(600, 1300);
+		createPlatform(1450, 1300);
+		createPlatform(1024, 1000);
+		createPlatform(600, 700);
+		createPlatform(1450, 700);
+		// Add collectibles
+		createCollectible('button', 600, 1800);
+		createCollectible('button', 1450, 1800);
+		createCollectible('button', 1024, 1500);
+		createCollectible('yarn', 600, 1200);
+		createCollectible('button', 1450, 1200);
+		createCollectible('yarn', 1024, 900);
+		// Add power-up
+		createPowerUp(1024, 600);
+	} else if (levelNum === 2) {
+		// Level 2: Add some moving platforms and hazards
+		createPlatform(1024, 2200);
+		var movingPlatform1 = createPlatform(600, 1900);
+		movingPlatform1.setMoving(2, 300);
+		createPlatform(1450, 1900);
+		createPlatform(1024, 1600);
+		// Add hazards
+		createHazard('scissors', 1024, 1500);
+		var movingPlatform2 = createPlatform(600, 1300);
+		movingPlatform2.setMoving(3, 400);
+		createPlatform(1450, 1300);
+		createPlatform(1024, 1000);
+		createHazard('thread', 600, 900);
+		createPlatform(1450, 700);
+		// Add collectibles
+		createCollectible('button', 600, 1800);
+		createCollectible('button', 1450, 1800);
+		createCollectible('yarn', 800, 1500);
+		createCollectible('button', 1250, 1500);
+		createCollectible('button', 600, 1200);
+		createCollectible('yarn', 1450, 1200);
+		createCollectible('yarn', 1024, 900);
+		createCollectible('button', 1450, 600);
+		// Add power-ups
+		createPowerUp(800, 600);
+	} else if (levelNum === 3) {
+		// Level 3: Most challenging level
+		createPlatform(1024, 2200);
+		var movingPlatform1 = createPlatform(600, 1900);
+		movingPlatform1.setMoving(3, 400);
+		var movingPlatform2 = createPlatform(1450, 1800);
+		movingPlatform2.setMoving(4, 300);
+		createPlatform(1024, 1600);
+		// Add hazards
+		createHazard('scissors', 800, 1500);
+		createHazard('scissors', 1250, 1500);
+		var movingHazard = createHazard('thread', 1024, 1400);
+		movingHazard.setMoving(5, 500);
+		var movingPlatform3 = createPlatform(600, 1300);
+		movingPlatform3.setMoving(3, 350);
+		var movingPlatform4 = createPlatform(1450, 1200);
+		movingPlatform4.setMoving(4, 400);
+		createPlatform(1024, 1000);
+		createHazard('thread', 600, 900);
+		createHazard('scissors', 1450, 900);
+		createPlatform(800, 700);
+		createPlatform(1250, 600);
+		// Add collectibles
+		createCollectible('button', 600, 1800);
+		createCollectible('yarn', 1450, 1700);
+		createCollectible('button', 800, 1500);
+		createCollectible('button', 1250, 1500);
+		createCollectible('yarn', 600, 1200);
+		createCollectible('button', 1450, 1100);
+		createCollectible('yarn', 1024, 900);
+		createCollectible('button', 800, 600);
+		createCollectible('yarn', 1250, 500);
+		// Add power-ups
+		createPowerUp(600, 800);
+		createPowerUp(1450, 800);
+	}
+}
+function createPlatform(x, y) {
+	var platform = new Platform();
+	platform.x = x;
+	platform.y = y;
+	game.addChild(platform);
+	platforms.push(platform);
+	return platform;
+}
+function createCollectible(type, x, y) {
+	var collectible = new Collectible(type);
+	collectible.x = x;
+	collectible.y = y;
+	game.addChild(collectible);
+	collectibles.push(collectible);
+	return collectible;
+}
+function createHazard(type, x, y) {
+	var hazard = new Hazard(type);
+	hazard.x = x;
+	hazard.y = y;
+	game.addChild(hazard);
+	hazards.push(hazard);
+	return hazard;
+}
+function createPowerUp(x, y) {
+	var powerup = new PowerUp();
+	powerup.x = x;
+	powerup.y = y;
+	game.addChild(powerup);
+	powerups.push(powerup);
+	return powerup;
+}
+function updateScore(points) {
+	score += points;
+	scoreTxt.setText('Buttons: ' + score);
+	// Check win condition
+	if (score >= 10) {
+		completeLevel();
+	}
+}
+function completeLevel() {
+	// Save progress
+	level++;
+	storage.level = level;
+	if (level > maxLevel) {
+		// Player completed all levels
+		LK.showYouWin();
+	} else {
+		// Show level complete message
+		var levelCompleteTxt = new Text2('Level Complete!', {
+			size: 120,
+			fill: 0xFFFFFF
+		});
+		levelCompleteTxt.anchor.set(0.5, 0.5);
+		levelCompleteTxt.x = 1024;
+		levelCompleteTxt.y = 1366;
+		game.addChild(levelCompleteTxt);
+		// Fade out and load next level
+		LK.setTimeout(function () {
+			tween(levelCompleteTxt, {
+				alpha: 0
+			}, {
+				duration: 1000,
+				onFinish: function onFinish() {
+					levelCompleteTxt.destroy();
+					initGame();
+				}
+			});
+		}, 2000);
+	}
+}
+function checkCollisions() {
+	if (!sackboy.alive) {
+		return;
+	}
+	// Check platform collisions
+	for (var i = 0; i < platforms.length; i++) {
+		var platform = platforms[i];
+		// Only bounce when falling
+		if (sackboy.velocity.y > 0 && sackboy.intersects(platform)) {
+			// Check if Sackboy is above the platform
+			if (sackboy.y < platform.y - platform.height / 2) {
+				sackboy.y = platform.y - platform.height / 2 - sackboy.height / 2;
+				sackboy.bounce(15);
+			}
+		}
+	}
+	// Check collectible collisions
+	for (var j = collectibles.length - 1; j >= 0; j--) {
+		var collectible = collectibles[j];
+		if (sackboy.intersects(collectible) && !collectible.collected) {
+			var type = collectible.collect();
+			if (type === 'button') {
+				updateScore(1);
+			} else if (type === 'yarn') {
+				// Yarn gives extra bounce
+				sackboy.bounce(25);
+			}
+			collectibles.splice(j, 1);
+		}
+	}
+	// Check hazard collisions
+	for (var k = 0; k < hazards.length; k++) {
+		var hazard = hazards[k];
+		if (sackboy.intersects(hazard)) {
+			// Check if invincible
+			if (sackboy.powered && sackboy.powerType === 'invincible') {
+				// Invincible - ignore hazard
+				continue;
+			}
+			sackboy.die();
+			break;
+		}
+	}
+	// Check power-up collisions
+	for (var l = powerups.length - 1; l >= 0; l--) {
+		var powerup = powerups[l];
+		if (sackboy.intersects(powerup) && !powerup.collected) {
+			var powerType = powerup.collect();
+			if (powerType) {
+				sackboy.activatePower(powerType);
+			}
+			powerups.splice(l, 1);
+		}
+	}
+}
+// Game control touch handlers
+game.down = function (x, y, obj) {
+	touchStart.x = x;
+	touchStart.y = y;
+	touchDragging = true;
+};
+game.move = function (x, y, obj) {
+	if (touchDragging && sackboy && sackboy.alive) {
+		// Calculate drag amount
+		var dragX = x - touchStart.x;
+		// Apply horizontal velocity based on drag
+		sackboy.velocity.x = dragX * 0.1;
+		// Update touch position
+		touchStart.x = x;
+		touchStart.y = y;
+	}
+};
+game.up = function (x, y, obj) {
+	touchDragging = false;
+	// Gradually slow down horizontal velocity
+	if (sackboy && sackboy.alive) {
+		sackboy.velocity.x *= 0.5;
+	}
+};
+// Main game update loop
+game.update = function () {
+	// Check collisions
+	checkCollisions();
+	// Update all game objects
+	for (var i = 0; i < platforms.length; i++) {
+		platforms[i].update();
+	}
+	for (var j = 0; j < collectibles.length; j++) {
+		collectibles[j].update();
+	}
+	for (var k = 0; k < hazards.length; k++) {
+		hazards[k].update();
+	}
+	for (var l = 0; l < powerups.length; l++) {
+		powerups[l].update();
+	}
+	// Automatically slow down horizontal velocity
+	if (sackboy && sackboy.alive) {
+		sackboy.velocity.x *= 0.98;
+	}
+};
+// Initialize the game
+initGame();
\ No newline at end of file