User prompt
make the bigger when scroe reaches 100
User prompt
make the enemy's spawn
User prompt
add enemy's that die when hit by the ball
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'toString')' in or related to this line: 'var scoreTxt = new Text2(score.toString(), {' Line Number: 71
User prompt
add a score
User prompt
make the ball bounce a bit better
User prompt
make the power up spawn at the start
User prompt
add power up that randomly spawns and make the ball bigger
User prompt
add a make the brick falldown as more spawn
Initial prompt
break block
/****
* 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 score = 0; // Initialize score variable
var scoreTxt = new Text2(score.toString(), {
size: 150,
fill: "#ffffff"
});
LK.gui.top.addChild(scoreTxt); // Add the score text to the GUI overlay at the top
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);
score += 10; // Increase score by 10 for each brick hit
scoreTxt.setText(score.toString()); // Update score display
}
}
// Game over condition
if (ball.y >= 2732) {
LK.showGameOver();
}
}); ===================================================================
--- original.js
+++ change.js
@@ -59,14 +59,14 @@
/****
* Game Code
****/
+var score = 0; // Initialize score variable
var scoreTxt = new Text2(score.toString(), {
size: 150,
fill: "#ffffff"
});
LK.gui.top.addChild(scoreTxt); // Add the score text to the GUI overlay at the top
-var score = 0; // Initialize score variable
var ball = game.addChild(new Ball());
ball.x = 1024; // Center horizontally
ball.y = 1366; // Center vertically
var paddle = game.addChild(new Paddle());