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();