From 384b04f363752ae64c0df16b6eb1fb0bde8dabbb Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Fri, 17 Jul 2026 11:06:27 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Game=20=D1=81?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=BE=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=B8=D0=B3=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D1=85=20=D1=81=D1=83=D1=89=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=8F=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/game.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/game.js diff --git a/src/game.js b/src/game.js new file mode 100644 index 0000000..aca5f7e --- /dev/null +++ b/src/game.js @@ -0,0 +1,33 @@ +import { + BALL_INITIAL_ANGLE, + BALL_RADIUS, + BALL_SPEED, + BRICK_HEIGHT, + BRICK_WIDTH, + CONTAINER_HEIGHT, + CONTAINER_WIDTH, + PADDLE_HEIGHT, + PADDLE_WIDTH, +} from './config'; +import { Ball } from './entities/ball/ball'; +import { layBricks } from './entities/brick/layBricks/layBricks'; +import { Paddle } from './entities/paddle/paddle'; + +/** + * Класс игры c информацией о всех игровых сущностях + */ +export class Game { + /** + * @param {number} columnAmount количество кирпичей по оси X, неотрицателное, целое число + * @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.paddle = new Paddle(0, CONTAINER_HEIGHT - PADDLE_HEIGHT, PADDLE_WIDTH, PADDLE_HEIGHT); + + this.bricks = layBricks(columnAmount, rowAmount, BRICK_WIDTH, BRICK_HEIGHT); + } +}