From 62abd8b77dcb141019f9eb77b3089164b95e99ca Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sun, 19 Jul 2026 13:15:50 +0300 Subject: [PATCH] =?UTF-8?q?refactor(ball):=20=D0=92=D1=8B=D1=87=D0=B8?= =?UTF-8?q?=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B5=D1=80=D1=82=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=B8=20=D0=B3?= =?UTF-8?q?=D1=80=D0=BE=D0=B8=D0=B7=D0=BE=D0=BD=D1=82=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=B2=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Ball?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/ball/ball.js | 18 +++++++++++------- src/game.js | 8 +------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/entities/ball/ball.js b/src/entities/ball/ball.js index 55b9582..edeab9b 100644 --- a/src/entities/ball/ball.js +++ b/src/entities/ball/ball.js @@ -1,3 +1,5 @@ +import { toRadians } from '../../lib/toRadians/toRadians'; + /** * Класс сущности "мяч" * @class @@ -7,21 +9,23 @@ export class Ball { * @param {number} x координата положения мяча по оси X * @param {number} y координата положения мяча по оси Y * @param {number} radius положительное числовое значение радиуса мяча - * @param {number} verticalSpeed вектор движения мяча по оси Y - * @param {number} horizontalSpeed вектор движения мяча по оси X + * @param {number} speed положительное числовое значение скорости мяча + * @param {number} angle угол направления движения мяча в градусах */ - constructor(x, y, radius, verticalSpeed = 0, horizontalSpeed = 0) { + constructor(x, y, radius, speed = 0, angle = 0) { this.x = x; this.y = y; this.radius = radius; - this.verticalSpeed = verticalSpeed; - this.horizontalSpeed = horizontalSpeed; + this.speed = speed; + this.angle = angle; + this.verticalSpeed = speed * Math.cos(toRadians(angle)); + this.horizontalSpeed = -1 * speed * Math.sin(toRadians(angle)); this.status = 'idle'; this.defaultX = x; this.defaultY = y; - this.defaultVerticalSpeed = verticalSpeed; - this.defaultHorizontalSpeed = horizontalSpeed; + this.defaultVerticalSpeed = this.verticalSpeed; + this.defaultHorizontalSpeed = this.horizontalSpeed; } /** diff --git a/src/game.js b/src/game.js index 1f9bb4b..9fd9dff 100644 --- a/src/game.js +++ b/src/game.js @@ -30,13 +30,7 @@ export class Game { this.maxLevel = levels.length - 1; this.paddle = new Paddle(0, CONTAINER_HEIGHT - PADDLE_HEIGHT, PADDLE_WIDTH, PADDLE_HEIGHT); - this.ball = new Ball( - 0, - 0, - BALL_RADIUS, - BALL_SPEED * Math.cos(toRadians(BALL_INITIAL_ANGLE)), - -1 * BALL_SPEED * Math.sin(toRadians(BALL_INITIAL_ANGLE)), - ); + this.ball = new Ball(0, 0, BALL_RADIUS, BALL_SPEED, BALL_INITIAL_ANGLE); this.bricks = layBricks(this.levels[this.currentLevel], BRICK_WIDTH, BRICK_HEIGHT); this._placeBallOnPaddle();