feat(layBricks): Добавлена функция layBricks создающая массив рядов кирпичей
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import { Brick } from '../brick';
|
||||
|
||||
/**
|
||||
* Ложит кирпичи по заданым размерам
|
||||
* @param {number} columnAmount количество кирпичей по оси X, неотрицателное, целое число
|
||||
* @param {number} rowAmount количество кирпичей по оси Y, неотрицателное, целое число
|
||||
* @param {number} brickWidth ширина кирпича, неотрицателное число
|
||||
* @param {number} brickHeight длина кирпича, неотрицателное число
|
||||
* @returns {Brick[][]} массив с массивами кирпичей
|
||||
*/
|
||||
export function layBricks(columnAmount, rowAmount, brickWidth, brickHeight) {
|
||||
try {
|
||||
const someArgsArentNumbers = [columnAmount, rowAmount, brickWidth, brickHeight].some(
|
||||
(arg) => typeof arg !== 'number',
|
||||
);
|
||||
if (someArgsArentNumbers) {
|
||||
throw new Error('Параметры кладки кирпичей должны являться числами');
|
||||
}
|
||||
|
||||
const someArgsLessThanZero = [columnAmount, rowAmount, brickWidth, brickHeight].some((arg) => arg < 0);
|
||||
if (someArgsLessThanZero) {
|
||||
throw new Error('Параметры кладки кирпичей должны являться положительными целыми числами');
|
||||
}
|
||||
|
||||
const rowsOrColumnsAreFloat = [columnAmount, rowAmount].some((amount) => amount % 1 !== 0);
|
||||
if (rowsOrColumnsAreFloat) {
|
||||
throw new Error('Размеры рядов и колонок должны являться целыми числами');
|
||||
}
|
||||
|
||||
const bricks = Array.from({ length: rowAmount }).map((_, rowIndex) =>
|
||||
Array.from({ length: columnAmount }).map(
|
||||
(_, columnIndex) => new Brick(columnIndex * brickWidth, rowIndex * brickHeight, brickWidth, brickHeight),
|
||||
),
|
||||
);
|
||||
|
||||
return bricks;
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user