From e3035352501fcbe00230fba831a26da3246ac95f Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sat, 18 Jul 2026 12:49:21 +0300 Subject: [PATCH] =?UTF-8?q?feat(ball):=20=D0=92=20=D0=BA=D0=BE=D0=BD=D1=81?= =?UTF-8?q?=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE=D1=80=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D0=B0=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82=D0=B8,=20=D0=94?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D1=81=D0=BE?= =?UTF-8?q?=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B0=D1=80?= =?UTF-8?q?=D0=B3=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE=D1=80=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20reset,=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D1=8E=D1=89=D0=B8=D0=B9=20?= =?UTF-8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=B5=D1=84=D0=BE=D0=BB=D1=82=D0=BD=D1=8B=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/ball/ball.js | 23 ++++++++++++++++++++--- src/game.js | 11 +++++++---- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/entities/ball/ball.js b/src/entities/ball/ball.js index 0a0c3d4..84deaa0 100644 --- a/src/entities/ball/ball.js +++ b/src/entities/ball/ball.js @@ -7,13 +7,20 @@ export class Ball { * @param {number} x координата положения мяча по оси X * @param {number} y координата положения мяча по оси Y * @param {number} radius положительное числовое значение радиуса мяча + * @param {number} verticalSpeed вектор движения мяча по оси Y + * @param {number} horizontalSpeed вектор движения мяча по оси X */ - constructor(x, y, radius) { + constructor(x, y, radius, verticalSpeed = 0, horizontalSpeed = 0) { this.x = x; this.y = y; - this.horizontalSpeed = 0; - this.verticalSpeed = 0; this.radius = radius; + this.verticalSpeed = verticalSpeed; + this.horizontalSpeed = horizontalSpeed; + + this.defaultX = x; + this.defaultY = y; + this.defaultVerticalSpeed = verticalSpeed; + this.defaultHorizontalSpeed = horizontalSpeed; } /** @@ -24,4 +31,14 @@ export class Ball { this.x += this.horizontalSpeed * deltaTime; this.y += this.verticalSpeed * deltaTime; } + + /** + * Возвращает значения к дефолтным + */ + reset() { + this.x = this.defaultX; + this.y = this.defaultY; + this.verticalSpeed = this.defaultVerticalSpeed; + this.horizontalSpeed = this.defaultHorizontalSpeed; + } } diff --git a/src/game.js b/src/game.js index 45a8bae..9cc511f 100644 --- a/src/game.js +++ b/src/game.js @@ -23,10 +23,13 @@ export class Game { * @param {number} rowAmount количество кирпичей по оси Y, неотрицателное, целое число */ constructor(columnAmount, rowAmount) { - this.ball = new Ball(100, 100, BALL_RADIUS); - this.ball.horizontalSpeed = BALL_SPEED * Math.cos(BALL_INITIAL_ANGLE); - this.ball.verticalSpeed = -1 * BALL_SPEED * Math.sin(BALL_INITIAL_ANGLE); - + this.ball = new Ball( + 100, + 100, + BALL_RADIUS, + BALL_SPEED * Math.cos(BALL_INITIAL_ANGLE), + -1 * BALL_SPEED * Math.sin(BALL_INITIAL_ANGLE), + ); this.paddle = new Paddle(0, CONTAINER_HEIGHT - PADDLE_HEIGHT, PADDLE_WIDTH, PADDLE_HEIGHT); this.bricks = layBricks(columnAmount, rowAmount, BRICK_WIDTH, BRICK_HEIGHT);