From 48a46ad57d75aa4f145147686651e61c1717f41a Mon Sep 17 00:00:00 2001 From: NotBigGhost Date: Sat, 18 Jul 2026 03:33:51 +0300 Subject: [PATCH] =?UTF-8?q?UI:=20=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=E2=80=94=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=20?= =?UTF-8?q?=C2=AB=D0=A0=D0=B5=D0=B9=D1=82=D0=B8=D0=BD=D0=B3=C2=BB=20=D1=81?= =?UTF-8?q?=D0=B2=D1=91=D1=80=D0=BD=D1=83=D1=82=20=D0=BF=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Вся информация об очках раскрывается кнопкой-карточкой (шеврон вниз/вверх, стиль карточек списка партий) — задел под будущие разделы справки. Co-Authored-By: Claude Fable 5 --- frontend/src/pages/HelpPage.tsx | 146 ++++++++++++++++++-------------- 1 file changed, 83 insertions(+), 63 deletions(-) diff --git a/frontend/src/pages/HelpPage.tsx b/frontend/src/pages/HelpPage.tsx index d3765f5..e7fe227 100644 --- a/frontend/src/pages/HelpPage.tsx +++ b/frontend/src/pages/HelpPage.tsx @@ -1,8 +1,12 @@ +import { ChevronDown, ChevronUp } from "lucide-react"; +import { useState } from "react"; + /** - * Справка. Пока — только как считаются очки игроков (рейтинг). В дальнейшем сюда - * добавятся правила, подсказки и прочее. Текст соответствует backend/app/services/scoring.py. + * Справка — разделы, раскрывающиеся по кнопке. Пока раздел один: «Рейтинг» + * (как считаются очки игроков). Текст соответствует backend/app/services/scoring.py. */ export function HelpPage() { + const [showRating, setShowRating] = useState(false); return (
{/* Название страницы уже в верхней панели — в теле только пояснение. */} @@ -13,72 +17,88 @@ export function HelpPage() {

-
-

Очки игроков (рейтинг)

-

- Рейтинг считается только по завершённым партиям. Незавершённые и отменённые - в зачёт не идут. -

-

- За каждую партию игрок получает «очки за место» — они нормированы по числу игроков - за столом, поэтому победа за большим столом ценится выше, чем за маленьким: -

-
- очки = (N − место − (размер_ничьей − 1) / 2) / (N − 1) + {/* Кнопка-карточка раздела — как карточки списка партий. */} +
+ -
-

Пример (стол на 4 игроков)

-
-
1-е место(4−1−0)/3 = 1.00 → 100
-
2-е место(4−2−0)/3 = 0.67 → 67
-
3-е место(4−3−0)/3 = 0.33 → 33
-
4-е место(4−4−0)/3 = 0.00 → 0
-
- Ничья за 1-е (двое)(4−1−0.5)/3 = 0.83 каждому + {showRating && ( + <> +
+

Очки игроков (рейтинг)

+

+ Рейтинг считается только по завершённым партиям. Незавершённые и отменённые + в зачёт не идут. +

+

+ За каждую партию игрок получает «очки за место» — они нормированы по числу игроков + за столом, поэтому победа за большим столом ценится выше, чем за маленьким: +

+
+ очки = (N − место − (размер_ничьей − 1) / 2) / (N − 1) +
+

+ где N — число игроков в партии. Первое место даёт 1.0, последнее — 0.0. +

+
    +
  • Если несколько игроков делят место (ничья) — они делят сумму очков поровну.
  • +
  • Выбывшие из партии считаются как последнее место.
  • +
+

+ Итоговый рейтинг игрока — сглаженное среднее: к реальным партиям + «дописываются» 10 виртуальных со средним результатом 0.5 (шкала от 0 до 100): +

+
+ рейтинг = (10 × 0.5 + сумма очков) / (10 + число партий) × 100 +
+

+ Пока партий мало, рейтинг держится около 50 и с опытом сходится к реальному + среднему — стабильные результаты на длинной дистанции ценятся выше короткой + удачной серии. +

-
-
-
-

Попадание в топ

-

- Чтобы попасть в ранжированный топ, нужно сыграть минимум 10 партий. До этого - игрок показывается в блоке «Новички» — предварительно, без места в рейтинге. -

-
+
+

Пример (стол на 4 игроков)

+
+
1-е место(4−1−0)/3 = 1.00 → 100
+
2-е место(4−2−0)/3 = 0.67 → 67
+
3-е место(4−3−0)/3 = 0.33 → 33
+
4-е место(4−4−0)/3 = 0.00 → 0
+
+ Ничья за 1-е (двое)(4−1−0.5)/3 = 0.83 каждому +
+
+
-
-

Другие показатели

-
    -
  • Винрейт (WR) — доля партий, в которых игрок занял 1-е место.
  • -
  • Среднее место — среднее по завершённым партиям.
  • -
  • - При равенстве рейтинга топ сортируется по: винрейту, числу игр, среднему месту - и затем по нику. -
  • -
-
+
+

Попадание в топ

+

+ Чтобы попасть в ранжированный топ, нужно сыграть минимум 10 партий. До этого + игрок показывается в блоке «Новички» — предварительно, без места в рейтинге. +

+
+ +
+

Другие показатели

+
    +
  • Винрейт (WR) — доля партий, в которых игрок занял 1-е место.
  • +
  • Среднее место — среднее по завершённым партиям.
  • +
  • + При равенстве рейтинга топ сортируется по: винрейту, числу игр, среднему месту + и затем по нику. +
  • +
+
+ + )}
); }