refactor: Формат хранения кирпичей в классе Game переписан с вложенного массива на обычный массив. Входные данные для значений каждого кирпича берутся из карты уровней

This commit is contained in:
Ilia Mashkov
2026-07-18 17:47:33 +03:00
parent 71583d0fde
commit 4436661547
7 changed files with 113 additions and 105 deletions
+6 -6
View File
@@ -20,12 +20,13 @@ import { toRadians } from './lib/toRadians/toRadians';
*/
export class Game {
/**
* @param {number} columnAmount количество кирпичей по оси X, неотрицателное, целое число
* @param {number} rowAmount количество кирпичей по оси Y, неотрицателное, целое число
* @param {number[][][]} levels список уровней, каждый элемент которого - карта расположения блоков
*/
constructor(columnAmount, rowAmount) {
constructor(levels) {
this.livesAmount = 3;
this.status = 'in_process';
this.currentLevel = 0;
this.maxLevel = levels.length - 1;
this.ball = new Ball(
CONTAINER_WIDTH / 2 - BALL_RADIUS / 2,
@@ -35,8 +36,7 @@ export class Game {
-1 * BALL_SPEED * Math.sin(toRadians(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);
this.bricks = layBricks(levels[this.currentLevel], BRICK_WIDTH, BRICK_HEIGHT);
}
/**
@@ -59,7 +59,7 @@ export class Game {
}
}
const isAnyBrickAlive = this.bricks.some((row) => row.some((brick) => brick.alive));
const isAnyBrickAlive = this.bricks.some((brick) => brick.alive);
if (!isAnyBrickAlive) {
this.status = 'completed';