User prompt
ball.velocityX *= 1.02; ball.velocityY *= 1.02;
User prompt
function onBlockHit() { // Blok kırıldı, topun hızını %5 artır ball.velocityX *= 1.05; ball.velocityY *= 1.05; }
User prompt
function onBlockHit() { // Top hızını %10 artır ball.velocityX *= 1.1; ball.velocityY *= 1.1; }
Code edit (1 edits merged)
Please save this source code
User prompt
Brick Breaker
Initial prompt
/**** * Assets ****/ LK.init.shape('paddle', {width: 150, height: 20, color: 0x3366ff, shape: 'box'}); LK.init.shape('ball', {width: 20, height: 20, color: 0xff3333, shape: 'circle'}); LK.init.shape('block', {width: 80, height: 30, color: 0x44cc44, shape: 'box'}); /**** * Classes ****/ var Paddle = Container.expand(function () { var self = Container.call(this); self.attachAsset('paddle', {anchorX: 0.5, anchorY: 0.5}); self.speed = 10; self.update = function () { // Mouse ya da dokunma ile paddle hareketi if (game.pointerX !== undefined) { self.x = game.pointerX; // Paddle ekran dışına çıkmasın if (self.x < self.width / 2) self.x = self.width / 2; if (self.x > game.width - self.width / 2) self.x = game.width - self.width / 2; } }; return self; }); var Ball = Container.expand(function () { var self = Container.call(this); self.attachAsset('ball', {anchorX: 0.5, anchorY: 0.5}); self.velocityX = 6; self.velocityY = -6; self.radius = 10; self.update = function () { self.x += self.velocityX; self.y += self.velocityY; // Duvarlardan sekme if (self.x < self.radius) { self.x = self.radius; self.velocityX *= -1; } if (self.x > game.width - self.radius) { self.x = game.width - self.radius; self.velocityX *= -1; } if (self.y < self.radius) { self.y = self.radius; self.velocityY *= -1; } // Paddle ile çarpışma kontrolü if ( self.y + self.radius >= paddle.y - paddle.height / 2 && self.y + self.radius <= paddle.y + paddle.height / 2 && self.x > paddle.x - paddle.width / 2 && self.x < paddle.x + paddle.width / 2 ) { self.y = paddle.y - paddle.height / 2 - self.radius; self.velocityY *= -1; // X hızını paddle'nin hareketine göre hafifçe değiştir var diff = self.x - paddle.x; self.velocityX = diff * 0.2; } // Alt ekrana düşerse oyun biter if (self.y > game.height + self.radius) { gameOver(); } }; return self; }); var Block = Container.expand(function (color) { var self = Container.call(this); self.attachAsset('block', {anchorX: 0, anchorY: 0}); self.color = color || 0x44cc44; self.tint = self.color; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222, width: 800, height: 600 }); var paddle = game.addChild(new Paddle()); paddle.x = game.width / 2; paddle.y = game.height - 50; var ball = game.addChild(new Ball()); ball.x = game.width / 2; ball.y = game.height - 80; var blocks = []; var rows = 5; var cols = 9; var blockWidth = 80; var blockHeight = 30; var startX = (game.width - (cols * blockWidth)) / 2; var startY = 50; // Blokları oluştur for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) { var block = game.addChild(new Block()); block.x = startX + col * blockWidth; block.y = startY + row * blockHeight; blocks.push(block); } } // Oyun bitiş fonksiyonu function gameOver() { alert("Oyun bitti! Yeniden başlatılıyor..."); location.reload(); } /**** * Game Loop ****/ game.update = function () { paddle.update(); ball.update(); // Top ile blokların çarpışmasını kontrol et for (var i = blocks.length - 1; i >= 0; i--) { var b = blocks[i]; if ( ball.x + ball.radius > b.x && ball.x - ball.radius < b.x + blockWidth && ball.y + ball.radius > b.y && ball.y - ball.radius < b.y + blockHeight ) { // Çarpışma varsa blok yok olur ve top yön değiştirir blocks.splice(i, 1); game.removeChild(b); ball.velocityY *= -1; break; } } // Tüm bloklar kırıldıysa oyunu kazandın if (blocks.length === 0) { alert("Tebrikler, oyunu kazandın!"); location.reload(); } };
/**** * Classes ****/ var Ball = Container.expand(function () { var self = Container.call(this); var ballGraphics = self.attachAsset('ball', { anchorX: 0.5, anchorY: 0.5 }); self.velocityX = 0; self.velocityY = 0; self.update = function () { self.x += self.velocityX; self.y += self.velocityY; // Bounce off walls if (self.x <= 10 || self.x >= 2038) { self.velocityX *= -1; LK.getSound('bounce').play(); } if (self.y <= 10) { self.velocityY *= -1; LK.getSound('bounce').play(); } }; return self; }); var Brick = Container.expand(function (brickType) { var self = Container.call(this); var brickGraphics = self.attachAsset(brickType || 'brick', { anchorX: 0.5, anchorY: 0.5 }); return self; }); var Paddle = Container.expand(function () { var self = Container.call(this); var paddleGraphics = self.attachAsset('paddle', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2C3E50 }); /**** * Game Code ****/ var paddle = game.addChild(new Paddle()); var ball = game.addChild(new Ball()); var bricks = []; var gameStarted = false; var dragNode = null; // Position paddle at bottom center paddle.x = 2048 / 2; paddle.y = 2732 - 100; // Position ball on paddle initially ball.x = paddle.x; ball.y = paddle.y - 30; // Create bricks in rows var brickTypes = ['brick', 'brick2', 'brick3', 'brick4', 'brick5']; var rows = 8; var cols = 14; var brickWidth = 130; var brickHeight = 50; var startX = (2048 - cols * brickWidth) / 2 + brickWidth / 2; var startY = 200; for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) { var brick = game.addChild(new Brick(brickTypes[row % brickTypes.length])); brick.x = startX + col * brickWidth; brick.y = startY + row * brickHeight; bricks.push(brick); } } // Score display var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); function handleMove(x, y, obj) { if (dragNode) { dragNode.x = Math.max(100, Math.min(1948, x)); // If ball hasn't started, move it with paddle if (!gameStarted) { ball.x = dragNode.x; } } } function startGame() { if (!gameStarted) { gameStarted = true; ball.velocityX = 4; ball.velocityY = -6; } } game.move = handleMove; game.down = function (x, y, obj) { dragNode = paddle; handleMove(x, y, obj); startGame(); }; game.up = function (x, y, obj) { dragNode = null; }; game.update = function () { // Ball and paddle collision if (ball.intersects(paddle) && ball.velocityY > 0) { ball.velocityY *= -1; // Adjust angle based on where ball hits paddle var paddleCenter = paddle.x; var ballCenter = ball.x; var diff = ballCenter - paddleCenter; var maxDiff = 100; var angle = diff / maxDiff * 3; ball.velocityX = Math.sin(angle) * 6; ball.velocityY = -Math.abs(ball.velocityY); LK.getSound('bounce').play(); } // Ball and brick collision for (var i = bricks.length - 1; i >= 0; i--) { var brick = bricks[i]; if (ball.intersects(brick)) { // Remove brick brick.destroy(); bricks.splice(i, 1); // Bounce ball ball.velocityY *= -1; // Update score LK.setScore(LK.getScore() + 10); scoreTxt.setText('Score: ' + LK.getScore()); LK.getSound('break').play(); // Check win condition if (bricks.length === 0) { LK.showYouWin(); return; } break; } } // Game over if ball falls below paddle if (ball.y > 2732 + 50) { LK.showGameOver(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,152 @@
-/****
+/****
+* Classes
+****/
+var Ball = Container.expand(function () {
+ var self = Container.call(this);
+ var ballGraphics = self.attachAsset('ball', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.update = function () {
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ // Bounce off walls
+ if (self.x <= 10 || self.x >= 2038) {
+ self.velocityX *= -1;
+ LK.getSound('bounce').play();
+ }
+ if (self.y <= 10) {
+ self.velocityY *= -1;
+ LK.getSound('bounce').play();
+ }
+ };
+ return self;
+});
+var Brick = Container.expand(function (brickType) {
+ var self = Container.call(this);
+ var brickGraphics = self.attachAsset(brickType || 'brick', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ return self;
+});
+var Paddle = Container.expand(function () {
+ var self = Container.call(this);
+ var paddleGraphics = self.attachAsset('paddle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x2C3E50
+});
+
+/****
+* Game Code
+****/
+var paddle = game.addChild(new Paddle());
+var ball = game.addChild(new Ball());
+var bricks = [];
+var gameStarted = false;
+var dragNode = null;
+// Position paddle at bottom center
+paddle.x = 2048 / 2;
+paddle.y = 2732 - 100;
+// Position ball on paddle initially
+ball.x = paddle.x;
+ball.y = paddle.y - 30;
+// Create bricks in rows
+var brickTypes = ['brick', 'brick2', 'brick3', 'brick4', 'brick5'];
+var rows = 8;
+var cols = 14;
+var brickWidth = 130;
+var brickHeight = 50;
+var startX = (2048 - cols * brickWidth) / 2 + brickWidth / 2;
+var startY = 200;
+for (var row = 0; row < rows; row++) {
+ for (var col = 0; col < cols; col++) {
+ var brick = game.addChild(new Brick(brickTypes[row % brickTypes.length]));
+ brick.x = startX + col * brickWidth;
+ brick.y = startY + row * brickHeight;
+ bricks.push(brick);
+ }
+}
+// Score display
+var scoreTxt = new Text2('Score: 0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+function handleMove(x, y, obj) {
+ if (dragNode) {
+ dragNode.x = Math.max(100, Math.min(1948, x));
+ // If ball hasn't started, move it with paddle
+ if (!gameStarted) {
+ ball.x = dragNode.x;
+ }
+ }
+}
+function startGame() {
+ if (!gameStarted) {
+ gameStarted = true;
+ ball.velocityX = 4;
+ ball.velocityY = -6;
+ }
+}
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ dragNode = paddle;
+ handleMove(x, y, obj);
+ startGame();
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+game.update = function () {
+ // Ball and paddle collision
+ if (ball.intersects(paddle) && ball.velocityY > 0) {
+ ball.velocityY *= -1;
+ // Adjust angle based on where ball hits paddle
+ var paddleCenter = paddle.x;
+ var ballCenter = ball.x;
+ var diff = ballCenter - paddleCenter;
+ var maxDiff = 100;
+ var angle = diff / maxDiff * 3;
+ ball.velocityX = Math.sin(angle) * 6;
+ ball.velocityY = -Math.abs(ball.velocityY);
+ LK.getSound('bounce').play();
+ }
+ // Ball and brick collision
+ for (var i = bricks.length - 1; i >= 0; i--) {
+ var brick = bricks[i];
+ if (ball.intersects(brick)) {
+ // Remove brick
+ brick.destroy();
+ bricks.splice(i, 1);
+ // Bounce ball
+ ball.velocityY *= -1;
+ // Update score
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ LK.getSound('break').play();
+ // Check win condition
+ if (bricks.length === 0) {
+ LK.showYouWin();
+ return;
+ }
+ break;
+ }
+ }
+ // Game over if ball falls below paddle
+ if (ball.y > 2732 + 50) {
+ LK.showGameOver();
+ }
+};
\ No newline at end of file