From a90b1b6d8a31fe55162890c29020564980c57fec Mon Sep 17 00:00:00 2001 From: Christophe Date: Sun, 12 Apr 2026 14:37:32 +0200 Subject: [PATCH] Remplace le terme block par partie --- README.md | 6 +++--- app.js | 54 ++++++++++++++++++++++++------------------------ application.html | 12 +++++------ chrono.html | 8 +++---- cube.html | 2 +- index.html | 10 ++++----- reglement.html | 46 ++++++++++++++++++++--------------------- 7 files changed, 69 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 1315bc7..23a31dc 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,14 @@ Application web mobile-first pour téléphone et tablette, pensée comme applica - configure une rencontre `Twice` ou `Time` - sépare l'application en pages dédiées : configuration, phase chrono, phase cube -- permet de définir librement le temps de block et le temps par coup +- permet de définir librement le temps de partie et le temps par coup - suit les quotas `FAST`, `FREEZE` et `MASTERS` -- orchestre la phase cube avec désignation du cube, capture des temps et préparation du block suivant +- orchestre la phase cube avec désignation du cube, capture des temps et préparation de la partie suivante - applique la logique du double coup V2 en `Twice` - applique les ajustements `bloc -` et `bloc +` en `Time` avec plafond de 120 s pris en compte - conserve un historique local dans le navigateur - propose une page chrono pensée pour le téléphone avec deux grandes zones tactiles, une par joueur -- ouvre automatiquement la page cube dès que la phase chess du block est terminée +- ouvre automatiquement la page cube dès que la phase chess de la partie est terminée ## Hypothèse de produit diff --git a/app.js b/app.js index 2fd8b77..7ab7594 100644 --- a/app.js +++ b/app.js @@ -12,24 +12,24 @@ const PRESETS = { fast: { label: "FAST", quota: 6, - description: "6 coups par joueur et par block.", + description: "6 coups par joueur et par partie.", }, freeze: { label: "FREEZE", quota: 8, - description: "8 coups par joueur et par block.", + description: "8 coups par joueur et par partie.", }, masters: { label: "MASTERS", quota: 10, - description: "10 coups par joueur et par block.", + description: "10 coups par joueur et par partie.", }, }; const MODES = { twice: { label: "ChessCubing Twice", - subtitle: "Le gagnant du cube ouvre le block suivant.", + subtitle: "Le gagnant du cube ouvre la partie suivante.", }, time: { label: "ChessCubing Time", @@ -98,12 +98,12 @@ function initSetupPage() { const timeImpact = mode === "time" ? "Chronos cumules de 10 minutes, ajustes apres chaque phase cube avec plafond de 120 s pris en compte." - : "Le gagnant du cube commence le block suivant, avec double coup V2 possible."; + : "Le gagnant du cube commence la partie suivante, avec double coup V2 possible."; summary.innerHTML = ` ${MODES[mode].label} ${PRESETS[preset].description} - Temps configures : block ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}. + Temps configures : partie ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}. ${timeImpact} Quota actif : ${quota} coups par joueur. `; @@ -263,7 +263,7 @@ function initChronoPage() { return; } - requestBlockClosure(match, "Cloture manuelle du block demandee par l'arbitre."); + requestBlockClosure(match, "Cloture manuelle de la partie demandee par l'arbitre."); dirty = true; render(); }); @@ -392,10 +392,10 @@ function initChronoPage() { } if (!match.running) { - button.textContent = "Block en pause"; + button.textContent = "Partie en pause"; button.disabled = true; hint.textContent = active - ? "Le block n'a pas encore demarre ou a ete mis en pause." + ? "La partie n'a pas encore demarre ou a ete mise en pause." : `${playerName(match, match.currentTurn)} reprendra au demarrage.`; return; } @@ -438,7 +438,7 @@ function initChronoPage() { } refs.title.textContent = match.config.matchLabel; - refs.subtitle.textContent = `Block ${match.blockNumber} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`; + refs.subtitle.textContent = `Partie ${match.blockNumber} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`; refs.blockTimer.textContent = formatClock(match.blockRemainingMs); refs.moveTimer.textContent = formatClock(match.moveRemainingMs); refs.arbiterTimeoutButton.textContent = `Depassement ${formatClock(getMoveLimitMs(match))}`; @@ -455,20 +455,20 @@ function initChronoPage() { refs.centerLabel.textContent = "Trait"; refs.centerValue.textContent = playerName(match, match.currentTurn); refs.spineLabel.textContent = "Chrono en cours"; - refs.spineHeadline.textContent = `Block ${match.blockNumber} actif`; + refs.spineHeadline.textContent = `Partie ${match.blockNumber} active`; refs.spineText.textContent = "Chaque joueur tape sur sa grande zone quand son coup est termine. La page cube s'ouvrira automatiquement a la fin de la phase chess."; refs.primaryButton.textContent = "Pause arbitre"; - refs.arbiterStatus.textContent = `Block en cours. Joueur au trait : ${playerName(match, match.currentTurn)}.`; + refs.arbiterStatus.textContent = `Partie en cours. Joueur au trait : ${playerName(match, match.currentTurn)}.`; } else { refs.centerLabel.textContent = "Trait"; refs.centerValue.textContent = playerName(match, match.currentTurn); refs.spineLabel.textContent = "Pret"; - refs.spineHeadline.textContent = `Block ${match.blockNumber}`; + refs.spineHeadline.textContent = `Partie ${match.blockNumber}`; refs.spineText.textContent = - "Demarrez le block, puis laissez uniquement les deux grandes zones aux joueurs. La page cube prendra automatiquement le relais."; - refs.primaryButton.textContent = "Demarrer le block"; - refs.arbiterStatus.textContent = `Block pret. ${playerName(match, match.currentTurn)} commencera.`; + "Demarrez la partie, puis laissez uniquement les deux grandes zones aux joueurs. La page cube prendra automatiquement le relais."; + refs.primaryButton.textContent = "Demarrer la partie"; + refs.arbiterStatus.textContent = `Partie prete. ${playerName(match, match.currentTurn)} commencera.`; } refs.arbiterCloseBlockButton.textContent = "Passer au cube"; @@ -666,7 +666,7 @@ function initCubePage() { function render() { refs.title.textContent = match.cube.number ? `Cube n${match.cube.number}` : "Phase cube"; - refs.subtitle.textContent = `Block ${match.blockNumber} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`; + refs.subtitle.textContent = `Partie ${match.blockNumber} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`; refs.blockLabel.textContent = `${match.blockNumber}`; refs.elapsed.textContent = renderCubeElapsed(match); @@ -696,7 +696,7 @@ function initCubePage() { refs.centerValue.textContent = "Phase cube complete"; refs.spineLabel.textContent = "Suite"; refs.spineHeadline.textContent = "Ouvrir la page chrono"; - refs.spineText.textContent = "Appliquer le resultat du cube pour preparer le block suivant."; + refs.spineText.textContent = "Appliquer le resultat du cube pour preparer la partie suivante."; refs.primaryButton.textContent = "Appliquer et ouvrir la page chrono"; refs.helpStatus.textContent = refs.spineText.textContent; } else if (match.cube.running) { @@ -806,9 +806,9 @@ function createMatch(config) { logEvent( newMatch, - `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, block ${formatClock(config.blockDurationMs)} et coup ${formatClock(config.moveLimitMs)}.`, + `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, partie ${formatClock(config.blockDurationMs)} et coup ${formatClock(config.moveLimitMs)}.`, ); - logEvent(newMatch, "Les Blancs commencent le block 1."); + logEvent(newMatch, "Les Blancs commencent la partie 1."); return newMatch; } @@ -945,7 +945,7 @@ function syncRunningState(storedMatch) { if (storedMatch.blockRemainingMs === 0) { requestBlockClosure( storedMatch, - `Le temps de block ${formatClock(getBlockDurationMs(storedMatch))} est ecoule.`, + `Le temps de partie ${formatClock(getBlockDurationMs(storedMatch))} est ecoule.`, ); } else if (storedMatch.moveRemainingMs === 0) { registerMoveTimeout(storedMatch, true); @@ -966,8 +966,8 @@ function startBlock(storedMatch) { logEvent( storedMatch, storedMatch.blockNumber === 1 && storedMatch.moves.white === 0 && storedMatch.moves.black === 0 - ? "Block 1 demarre." - : `Block ${storedMatch.blockNumber} relance.`, + ? "Partie 1 demarre." + : `Partie ${storedMatch.blockNumber} relance.`, ); } @@ -978,7 +978,7 @@ function pauseBlock(storedMatch) { storedMatch.running = false; storedMatch.lastTickAt = null; - logEvent(storedMatch, `Block ${storedMatch.blockNumber} mis en pause.`); + logEvent(storedMatch, `Partie ${storedMatch.blockNumber} mise en pause.`); } function requestBlockClosure(storedMatch, reason) { @@ -1105,7 +1105,7 @@ function applyCubeOutcome(storedMatch) { function prepareNextTwiceBlock(storedMatch, winner) { const hadDouble = storedMatch.lastMover !== winner && storedMatch.lastMover !== null; - logEvent(storedMatch, `${playerName(storedMatch, winner)} gagne la phase cube et ouvrira le block suivant.`); + logEvent(storedMatch, `${playerName(storedMatch, winner)} gagne la phase cube et ouvrira la partie suivante.`); storedMatch.blockNumber += 1; storedMatch.phase = "block"; @@ -1161,7 +1161,7 @@ function prepareNextTimeBlock(storedMatch) { storedMatch.cube.number = null; logEvent( storedMatch, - `Block ${storedMatch.blockNumber} pret. Le trait est conserve : ${playerName( + `Partie ${storedMatch.blockNumber} prete. Le trait est conserve : ${playerName( storedMatch, storedMatch.currentTurn, )} reprend.`, @@ -1333,7 +1333,7 @@ function renderModeContext(storedMatch) { return "Deuxieme coup du double en attente"; } - return "Le gagnant du cube ouvrira le prochain block"; + return "Le gagnant du cube ouvrira la prochaine partie"; } function renderLastCube(storedMatch, color) { diff --git a/application.html b/application.html index c474efb..c985ddf 100644 --- a/application.html +++ b/application.html @@ -37,7 +37,7 @@
  • Configurer la rencontre
  • Passer à la page chrono
  • Basculer automatiquement sur la page cube
  • -
  • Revenir sur la page chrono pour le block suivant
  • +
  • Revenir sur la page chrono pour la partie suivante
  • @@ -73,7 +73,7 @@ ChessCubing Twice - Le gagnant du cube ouvre le block suivant et peut obtenir un + Le gagnant du cube ouvre la partie suivante et peut obtenir un double coup V2. @@ -81,7 +81,7 @@ ChessCubing Time - Même structure de blocks, avec chronos cumulés et alternance + Même structure de parties, avec chronos cumulés et alternance bloc - / bloc +. @@ -89,7 +89,7 @@
    - Cadence du block + Cadence de la partie

    - Les deux formats partagent les blocks et la phase cube, mais leur + Les deux formats partagent les parties et la phase cube, mais leur logique d'avantage diffère complètement.

    @@ -183,24 +183,24 @@ Version V2

    ChessCubing Twice

    - Le gagnant du cube obtient l'initiative sur le block suivant, + Le gagnant du cube obtient l'initiative sur la partie suivante, avec une règle de double coup encadrée.

    - Block : 180 s + Partie : 180 s Temps par coup : 20 s max FAST / FREEZE / MASTERS : 6 / 8 / 10
    -

    Début et fin des blocks

    +

    Début et fin des parties

      -
    • Les Blancs commencent le block 1.
    • -
    • Aucun double coup n'est possible au block 1.
    • -
    • Un block s'arrête à 180 s ou quand les deux quotas sont atteints.
    • -
    • Il est interdit de finir un block avec un roi en échec.
    • +
    • Les Blancs commencent la partie 1.
    • +
    • Aucun double coup n'est possible à la partie 1.
    • +
    • Une partie s'arrête à 180 s ou quand les deux quotas sont atteints.
    • +
    • Il est interdit de finir une partie avec un roi en échec.
    • Si le dernier coup donne échec, les coups nécessaires pour parer sont joués hors quota. @@ -215,7 +215,7 @@
    • Les deux joueurs reçoivent un mélange identique.
    • Le joueur le plus rapide gagne la phase cube.
    • En cas d'égalité parfaite, la phase cube est rejouée.
    • -
    • Le gagnant du cube commence le block suivant.
    • +
    • Le gagnant du cube commence la partie suivante.
    @@ -223,10 +223,10 @@ Double coup V2 Condition stricte

    - Le gagnant du cube ne doit pas avoir joué le dernier coup du - block précédent. Le premier coup est gratuit, non compté, + Le gagnant du cube ne doit pas avoir joué le dernier coup de + la partie précédente. Le premier coup est gratuit, non compté, peut capturer mais ne peut pas donner échec. Le second compte - comme premier coup du block, peut donner échec, mais ne peut + comme premier coup de la partie, peut donner échec, mais ne peut capturer qu'un pion ou une pièce mineure.

    @@ -255,16 +255,16 @@
    Temps initial : 10 min / joueur - Block : 180 s + Partie : 180 s Cap cube pris en compte : 120 s

    Structure temporelle

      -
    • La structure des blocks est identique à celle du Twice.
    • +
    • La structure des parties est identique à celle du Twice.
    • Les quotas de coups restent les mêmes : 6, 8 ou 10.
    • -
    • Chaque block est suivi d'une phase cube obligatoire.
    • +
    • Chaque partie est suivie d'une phase cube obligatoire.
    • Le trait est conservé après la phase cube.
    • Aucun système de priorité ou de double coup n'existe.
    @@ -272,7 +272,7 @@
    - Block impair + Partie impaire Bloc -

    Le temps de résolution du cube est retiré du chrono du @@ -280,7 +280,7 @@

    - Block pair + Partie paire Bloc +

    Le temps de résolution du cube est ajouté au chrono adverse,