/**** 
* Classes
****/ 
// Assets will be automatically created based on usage in the code.
// Ball class
var Ball = Container.expand(function () {
	var self = Container.call(this);
	var ballGraphics = self.attachAsset('ball', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.speedX = 5;
	self.speedY = -5;
	self.move = function () {
		self.x += self.speedX;
		self.y += self.speedY;
	};
});
// Brick class
var Brick = Container.expand(function () {
	var self = Container.call(this);
	var brickGraphics = self.attachAsset('brick', {
		anchorX: 0.5,
		anchorY: 0.5
	});
});
// Paddle class
var Paddle = Container.expand(function () {
	var self = Container.call(this);
	var paddleGraphics = self.attachAsset('paddle', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.move = function (xPosition) {
		self.x = xPosition;
	};
});
// PowerUp class
var PowerUp = Container.expand(function () {
	var self = Container.call(this);
	var powerUpGraphics = self.attachAsset('powerUp', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.effect = function (ball) {
		ball.width *= 1.5; // Increase ball size by 50%
		ball.height *= 1.5; // Increase ball size by 50%
		ballGraphics.scaleX *= 1.5; // Scale up the ball's graphic representation
		ballGraphics.scaleY *= 1.5; // Scale up the ball's graphic representation
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000 // Init game with black background 
});
/**** 
* Game Code
****/ 
var ball = game.addChild(new Ball());
ball.x = 1024; // Center horizontally
ball.y = 1366; // Center vertically
var paddle = game.addChild(new Paddle());
paddle.x = 1024; // Center horizontally
paddle.y = 2500; // Position towards the bottom
var bricks = [];
var brickRowCount = 5;
var brickColumnCount = 8;
var brickWidth = 200;
var brickHeight = 100;
var brickPadding = 20;
var brickOffsetTop = 200;
var brickOffsetLeft = 204;
// Create bricks
for (var c = 0; c < brickColumnCount; c++) {
	for (var r = 0; r < brickRowCount; r++) {
		var brickX = c * (brickWidth + brickPadding) + brickOffsetLeft;
		var brickY = r * (brickHeight + brickPadding) + brickOffsetTop;
		var brick = game.addChild(new Brick());
		brick.x = brickX + brickWidth / 2;
		brick.y = brickY + brickHeight / 2;
		bricks.push(brick);
	}
}
// Handle touch move for paddle
game.on('move', function (obj) {
	var pos = obj.event.getLocalPosition(game);
	paddle.move(pos.x);
});
// Game tick
var spawnTick = 0; // Initialize spawn tick counter
LK.on('tick', function () {
	spawnTick++;
	// Every 600 ticks (10 seconds), spawn a new row of bricks at the top and move existing bricks down
	if (spawnTick % 600 == 0) {
		for (var c = 0; c < brickColumnCount; c++) {
			var brickX = c * (brickWidth + brickPadding) + brickOffsetLeft;
			var brick = game.addChild(new Brick());
			brick.x = brickX + brickWidth / 2;
			brick.y = brickOffsetTop + brickHeight / 2;
			bricks.push(brick);
		}
		// Move existing bricks down
		for (var i = 0; i < bricks.length; i++) {
			bricks[i].y += brickHeight + brickPadding;
		}
	}
	ball.move();
	// Spawn PowerUp at game start and then randomly every 3000 ticks
	if (spawnTick == 0 || spawnTick % 3000 == 0) {
		var powerUpX = Math.random() * (2048 - 100) + 50; // Random X within game bounds
		var powerUp = game.addChild(new PowerUp());
		powerUp.x = powerUpX;
		powerUp.y = 100; // Start from top
	}
	// Check for PowerUp collision with ball
	for (var p = 0; p < game.children.length; p++) {
		var child = game.children[p];
		if (child instanceof PowerUp && ball.intersects(child)) {
			child.effect(ball); // Apply PowerUp effect to the ball
			child.destroy(); // Remove PowerUp after use
		}
	}
	// Ball collision with walls
	if (ball.x <= ball.width / 2 || ball.x >= 2048 - ball.width / 2) {
		ball.speedX = -ball.speedX;
	}
	if (ball.y <= ball.height / 2) {
		ball.speedY = -ball.speedY;
	}
	// Ball collision with paddle
	if (ball.intersects(paddle)) {
		// Calculate bounce angle based on where the ball hits the paddle
		var hitPos = (ball.x - paddle.x) / paddle.width;
		ball.speedY = -Math.abs(ball.speedY); // Ensure the ball always bounces up
		ball.speedX = (hitPos - 0.5) * 10; // Adjust speedX based on hit position
	}
	// Ball collision with bricks
	for (var b = bricks.length - 1; b >= 0; b--) {
		if (ball.intersects(bricks[b])) {
			// Reverse ball direction and slightly increase speed for dynamic gameplay
			ball.speedY = -ball.speedY * 1.05;
			ball.speedX *= 1.05;
			bricks[b].destroy();
			bricks.splice(b, 1);
		}
	}
	// Game over condition
	if (ball.y >= 2732) {
		LK.showGameOver();
	}
}); ===================================================================
--- original.js
+++ change.js
@@ -124,22 +124,27 @@
 			child.destroy(); // Remove PowerUp after use
 		}
 	}
 	// Ball collision with walls
-	if (ball.x <= 0 || ball.x >= 2048) {
+	if (ball.x <= ball.width / 2 || ball.x >= 2048 - ball.width / 2) {
 		ball.speedX = -ball.speedX;
 	}
-	if (ball.y <= 0) {
+	if (ball.y <= ball.height / 2) {
 		ball.speedY = -ball.speedY;
 	}
 	// Ball collision with paddle
 	if (ball.intersects(paddle)) {
-		ball.speedY = -ball.speedY;
+		// Calculate bounce angle based on where the ball hits the paddle
+		var hitPos = (ball.x - paddle.x) / paddle.width;
+		ball.speedY = -Math.abs(ball.speedY); // Ensure the ball always bounces up
+		ball.speedX = (hitPos - 0.5) * 10; // Adjust speedX based on hit position
 	}
 	// Ball collision with bricks
 	for (var b = bricks.length - 1; b >= 0; b--) {
 		if (ball.intersects(bricks[b])) {
-			ball.speedY = -ball.speedY;
+			// Reverse ball direction and slightly increase speed for dynamic gameplay
+			ball.speedY = -ball.speedY * 1.05;
+			ball.speedX *= 1.05;
 			bricks[b].destroy();
 			bricks.splice(b, 1);
 		}
 	}