/**** * 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; }; }); /**** * 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(); // Ball collision with walls if (ball.x <= 0 || ball.x >= 2048) { ball.speedX = -ball.speedX; } if (ball.y <= 0) { ball.speedY = -ball.speedY; } // Ball collision with paddle if (ball.intersects(paddle)) { ball.speedY = -ball.speedY; } // Ball collision with bricks for (var b = bricks.length - 1; b >= 0; b--) { if (ball.intersects(bricks[b])) { ball.speedY = -ball.speedY; bricks[b].destroy(); bricks.splice(b, 1); } } // Game over condition if (ball.y >= 2732) { LK.showGameOver(); } });
===================================================================
--- original.js
+++ change.js
@@ -1,52 +1,52 @@
-/****
+/****
* 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;
- };
+ 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
- });
+ 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;
- };
+ var self = Container.call(this);
+ var paddleGraphics = self.attachAsset('paddle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.move = function (xPosition) {
+ self.x = xPosition;
+ };
});
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000 // Init game with black background
+ 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());
@@ -61,45 +61,61 @@
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);
- }
+ 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);
+ var pos = obj.event.getLocalPosition(game);
+ paddle.move(pos.x);
});
// Game tick
+var spawnTick = 0; // Initialize spawn tick counter
LK.on('tick', function () {
- ball.move();
- // Ball collision with walls
- if (ball.x <= 0 || ball.x >= 2048) {
- ball.speedX = -ball.speedX;
- }
- if (ball.y <= 0) {
- ball.speedY = -ball.speedY;
- }
- // Ball collision with paddle
- if (ball.intersects(paddle)) {
- ball.speedY = -ball.speedY;
- }
- // Ball collision with bricks
- for (var b = bricks.length - 1; b >= 0; b--) {
- if (ball.intersects(bricks[b])) {
- ball.speedY = -ball.speedY;
- bricks[b].destroy();
- bricks.splice(b, 1);
- }
- }
- // Game over condition
- if (ball.y >= 2732) {
- LK.showGameOver();
- }
+ 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();
+ // Ball collision with walls
+ if (ball.x <= 0 || ball.x >= 2048) {
+ ball.speedX = -ball.speedX;
+ }
+ if (ball.y <= 0) {
+ ball.speedY = -ball.speedY;
+ }
+ // Ball collision with paddle
+ if (ball.intersects(paddle)) {
+ ball.speedY = -ball.speedY;
+ }
+ // Ball collision with bricks
+ for (var b = bricks.length - 1; b >= 0; b--) {
+ if (ball.intersects(bricks[b])) {
+ ball.speedY = -ball.speedY;
+ bricks[b].destroy();
+ bricks.splice(b, 1);
+ }
+ }
+ // Game over condition
+ if (ball.y >= 2732) {
+ LK.showGameOver();
+ }
});
\ No newline at end of file