fix(rules): name a repeated word in the move preview instead of scoring it
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 11s
CI / integration (pull_request) Successful in 20s
CI / ui (pull_request) Failing after 13s
CI / conformance (pull_request) Successful in 10s
CI / gate (pull_request) Failing after 0s
CI / deploy (pull_request) Has been skipped
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 11s
CI / integration (pull_request) Successful in 20s
CI / ui (pull_request) Failing after 13s
CI / conformance (pull_request) Successful in 10s
CI / gate (pull_request) Failing after 0s
CI / deploy (pull_request) Has been skipped
Composing an already-played word read as a perfectly legal move: the tiles
drew as legal, the caption showed "БРА = 6" and the ✅ was enabled, and
only the server refused the play with the bare "illegal move" toast.
The on-device evaluator already applied the rule, but it reported the
refusal as a plain illegal play, so nothing distinguished a repeated word
from a misspelling and the caption fell back to the turn label. It now
names the word it rejected, and the game screen reads
"БРА: уже использовано" above the scores while the tiles stay marked
invalid — the composition is wrong, but for a reason the player cannot
read off the board, since the word itself is in the dictionary. The
verdict is reached on the device before the play is ever offered to the
server, in an online game exactly as in an offline one; the offline
source reports the same reason through the same field.
Only the main word is ever refused: a cross-word the game has already
used still stands (it is incidental to laying the main word) and merely
scores nothing, so the rule cannot falsely block a play in a game with
several words per turn.
The scoring of such a play is now pinned to the point on both sides: the
engine test and the client test evaluate the same position — РОТ laid
across a standing КО, completing an already-played КОТ — and assert the
same totals (10 unrestricted, 5 with the rule), so a divergence between
the two engines breaks one of them. The client test also replays the
exact test-contour position this was reported from.
This commit is contained in:
+4
-1
@@ -200,7 +200,10 @@ the choice joins the pairing key, so a player only meets opponents who picked th
|
||||
|
||||
**Erudite forbids repeating a word.** A word laid on the board belongs to the game: it cannot be laid
|
||||
again, and the AI never plays one either. A play whose main word is already on the board is rejected
|
||||
like any illegal move; a play that only forms an already-played word **across** its main word stands —
|
||||
like any illegal move — the tiles read invalid on the board and the move cannot be sent, and because
|
||||
the word itself is a perfectly good one the caption above the scores names it, reading
|
||||
"WORD: already used" rather than the usual score. That verdict is reached on the device, before the
|
||||
move is offered to the server, in an online game exactly as in an offline one; a play that only forms an already-played word **across** its main word stands —
|
||||
that word is incidental to the move — but scores nothing. The rule is not a choice: every Erudite
|
||||
game takes it, and both Scrabble variants (where the official rules place no such restriction) never
|
||||
do, so the variant's one-line description on **New Game** reads "no repeated words". Games started
|
||||
|
||||
@@ -206,7 +206,10 @@ e-mail) либо ввод фразы. Активные игры форфейтя
|
||||
|
||||
**В «Эрудите» слово нельзя повторять.** Выставленное на доску слово принадлежит партии: выставить
|
||||
его ещё раз нельзя, и робот такого хода тоже не делает. Ход, чьё основное слово уже стоит на доске,
|
||||
отклоняется как любой недопустимый; ход, который лишь образует уже выставленное слово **поперёк**
|
||||
отклоняется как любой недопустимый: фишки на доске подсвечиваются как недопустимые и ход не отправить,
|
||||
а поскольку само слово вполне настоящее, подпись над счётом называет его — «СЛОВО: уже использовано»
|
||||
вместо обычных очков. Это решение принимается на устройстве, до того как ход предложен серверу,
|
||||
одинаково в онлайн- и в оффлайн-партии; ход, который лишь образует уже выставленное слово **поперёк**
|
||||
основного, засчитывается — такое слово побочно для хода, — но очков не приносит. Правило не
|
||||
выбирается: его берёт каждая партия «Эрудита», и никогда — оба варианта скрэббла (в официальных
|
||||
правилах такого ограничения нет), поэтому однострочное описание варианта на экране **новой игры**
|
||||
|
||||
Reference in New Issue
Block a user