From d2cfee3ec3598dd036d3d458edfb91efd0298310 Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sun, 19 Jul 2026 17:00:23 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20=D0=9F=D0=B5=D1=80=D0=B5=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20calculateCollision=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=B9=20=D1=81?= =?UTF-8?q?=D0=B5=D0=BC=D0=B0=D0=BD=D1=82=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../calculateAABBCollision.js} | 2 +- .../calculateAABBCollision.test.js} | 18 +++++++++--------- .../calculateDirection/calculateDirection.js | 4 ++-- src/lib/tick/tick.js | 4 ++-- src/lib/updatePerks/updatePerks.js | 4 ++-- src/main.js | 2 -- 6 files changed, 16 insertions(+), 18 deletions(-) rename src/lib/{calculateCollision/calculateCollision.js => calculateAABBCollision/calculateAABBCollision.js} (97%) rename src/lib/{calculateCollision/calculateCollision.test.js => calculateAABBCollision/calculateAABBCollision.test.js} (77%) diff --git a/src/lib/calculateCollision/calculateCollision.js b/src/lib/calculateAABBCollision/calculateAABBCollision.js similarity index 97% rename from src/lib/calculateCollision/calculateCollision.js rename to src/lib/calculateAABBCollision/calculateAABBCollision.js index 1ed41b9..c3ea9a4 100644 --- a/src/lib/calculateCollision/calculateCollision.js +++ b/src/lib/calculateAABBCollision/calculateAABBCollision.js @@ -12,7 +12,7 @@ * @param {number} secondObject.bottom - Max Y координата второго объекта * @returns {boolean} */ -export function calculateCollision(firstObject, secondObject) { +export function calculateAABBCollision(firstObject, secondObject) { try { const coordinates = [ firstObject.left, diff --git a/src/lib/calculateCollision/calculateCollision.test.js b/src/lib/calculateAABBCollision/calculateAABBCollision.test.js similarity index 77% rename from src/lib/calculateCollision/calculateCollision.test.js rename to src/lib/calculateAABBCollision/calculateAABBCollision.test.js index c2581cf..efe9920 100644 --- a/src/lib/calculateCollision/calculateCollision.test.js +++ b/src/lib/calculateAABBCollision/calculateAABBCollision.test.js @@ -1,6 +1,6 @@ -import { calculateCollision } from './calculateCollision'; +import { calculateAABBCollision } from './calculateAABBCollision'; -describe('calculateCollision', () => { +describe('calculateAABBCollision', () => { it('Корректно обрабатывает невозможные кейсы (левая координата больше правой)', () => { const firstObject = { left: 0, @@ -16,7 +16,7 @@ describe('calculateCollision', () => { bottom: 10, }; - expect(calculateCollision(firstObject, secondObject)).toBeNull(); + expect(calculateAABBCollision(firstObject, secondObject)).toBeNull(); }); it('Корректно обрабатывает неверный формат данных', () => { @@ -34,7 +34,7 @@ describe('calculateCollision', () => { bottom: 10, }; - expect(calculateCollision(firstObject, secondObject)).toBeNull(); + expect(calculateAABBCollision(firstObject, secondObject)).toBeNull(); }); it('Корректно обрабатывает отсутствие пересечения по X', () => { @@ -52,7 +52,7 @@ describe('calculateCollision', () => { bottom: 10, }; - expect(calculateCollision(firstObject, secondObject)).toBe(false); + expect(calculateAABBCollision(firstObject, secondObject)).toBe(false); }); it('Корректно обрабатывает отсутствие пересечения по Y', () => { @@ -70,7 +70,7 @@ describe('calculateCollision', () => { bottom: 30, }; - expect(calculateCollision(firstObject, secondObject)).toBe(false); + expect(calculateAABBCollision(firstObject, secondObject)).toBe(false); }); it('Корректно обрабатывает отсутствие пересечения по X и Y', () => { @@ -88,7 +88,7 @@ describe('calculateCollision', () => { bottom: 30, }; - expect(calculateCollision(firstObject, secondObject)).toBe(false); + expect(calculateAABBCollision(firstObject, secondObject)).toBe(false); }); it('Корректно обрабатывает пересечение', () => { @@ -106,7 +106,7 @@ describe('calculateCollision', () => { bottom: 30, }; - expect(calculateCollision(firstObject, secondObject)).toBe(true); + expect(calculateAABBCollision(firstObject, secondObject)).toBe(true); }); it('Корректно обрабатывает вхождение', () => { @@ -124,6 +124,6 @@ describe('calculateCollision', () => { bottom: 15, }; - expect(calculateCollision(firstObject, secondObject)).toBe(true); + expect(calculateAABBCollision(firstObject, secondObject)).toBe(true); }); }); diff --git a/src/lib/calculateDirection/calculateDirection.js b/src/lib/calculateDirection/calculateDirection.js index 5ebf113..a0f93bc 100644 --- a/src/lib/calculateDirection/calculateDirection.js +++ b/src/lib/calculateDirection/calculateDirection.js @@ -1,4 +1,4 @@ -import { calculateCollision } from '../calculateCollision/calculateCollision'; +import { calculateAABBCollision } from '../calculateAABBCollision/calculateAABBCollision'; /** * Вычисляет направление наибольшего пересечения по осям и возвращает tuple множителей для изменения координат @@ -17,7 +17,7 @@ import { calculateCollision } from '../calculateCollision/calculateCollision'; export function calculateDirection(firstObject, secondObject) { try { // Запускаем для проверки формата аргументов - const isCollided = calculateCollision(firstObject, secondObject); + const isCollided = calculateAABBCollision(firstObject, secondObject); if (isCollided === null) { return null; diff --git a/src/lib/tick/tick.js b/src/lib/tick/tick.js index 973ef92..49f87fe 100644 --- a/src/lib/tick/tick.js +++ b/src/lib/tick/tick.js @@ -9,7 +9,7 @@ import { PERK_WIDTH, } from '../../config'; import { Game } from '../../game'; -import { calculateCollision } from '../calculateCollision/calculateCollision'; +import { calculateAABBCollision } from '../calculateAABBCollision/calculateAABBCollision'; import { calculateDirection } from '../calculateDirection/calculateDirection'; import { processReflection } from '../processReflection/processReflection'; import { spawnRandomPerk } from '../spawnRandomPerk/spawnRandomPerk'; @@ -91,7 +91,7 @@ export function tick(game, containerWidth, containerHeight, deltaTime) { const ballObject = { left: ballLeft, right: ballRight, top: ballTop, bottom: ballBottom }; const brickObject = { left: brickLeft, right: brickRight, top: brickTop, bottom: brickBottom }; - const isCollided = calculateCollision(ballObject, brickObject); + const isCollided = calculateAABBCollision(ballObject, brickObject); if (isCollided) { const directions = calculateDirection(ballObject, brickObject); diff --git a/src/lib/updatePerks/updatePerks.js b/src/lib/updatePerks/updatePerks.js index f50e5a3..613e9d6 100644 --- a/src/lib/updatePerks/updatePerks.js +++ b/src/lib/updatePerks/updatePerks.js @@ -1,6 +1,6 @@ import { CONTAINER_WIDTH, PADDLE_WIDE_WIDTH, PERK_BALL_SPEED_DECREASE } from '../../config'; import { Game } from '../../game'; -import { calculateCollision } from '../calculateCollision/calculateCollision'; +import { calculateAABBCollision } from '../calculateAABBCollision/calculateAABBCollision'; /** * Обновляет состояние бонусов, меняет положение, проверяет столкновение с ракеткой и выход за границу поля @@ -40,7 +40,7 @@ export function updatePerks(game, containerHeight, deltaTime) { bottom: paddle.y + paddle.height, }; - const isCollided = calculateCollision(perkObject, paddleObject); + const isCollided = calculateAABBCollision(perkObject, paddleObject); if (isCollided) { switch (perk.type) { diff --git a/src/main.js b/src/main.js index 3a74731..21961f7 100644 --- a/src/main.js +++ b/src/main.js @@ -15,8 +15,6 @@ import { } from './config'; import { LEVELS } from './const/levels'; import { Game } from './game'; -import { calculateCollision } from './lib/calculateCollision/calculateCollision'; -import { calculateDirection } from './lib/calculateDirection/calculateDirection'; import { createGameView, managePerkViewsLifetime, rebuildBrickViews, syncronizeViewsWithGame } from './view'; (async () => {