Remplace le terme block par partie
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
54
app.js
54
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 = `
|
||||
<strong>${MODES[mode].label}</strong>
|
||||
<span>${PRESETS[preset].description}</span>
|
||||
<span>Temps configures : block ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}.</span>
|
||||
<span>Temps configures : partie ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}.</span>
|
||||
<span>${timeImpact}</span>
|
||||
<span>Quota actif : ${quota} coups par joueur.</span>
|
||||
`;
|
||||
@@ -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) {
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<li>Configurer la rencontre</li>
|
||||
<li>Passer à la page chrono</li>
|
||||
<li>Basculer automatiquement sur la page cube</li>
|
||||
<li>Revenir sur la page chrono pour le block suivant</li>
|
||||
<li>Revenir sur la page chrono pour la partie suivante</li>
|
||||
</ol>
|
||||
</div>
|
||||
</aside>
|
||||
@@ -73,7 +73,7 @@
|
||||
<input type="radio" name="mode" value="twice" checked />
|
||||
<strong>ChessCubing Twice</strong>
|
||||
<span>
|
||||
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.
|
||||
</span>
|
||||
</label>
|
||||
@@ -81,7 +81,7 @@
|
||||
<input type="radio" name="mode" value="time" />
|
||||
<strong>ChessCubing Time</strong>
|
||||
<span>
|
||||
Même structure de blocks, avec chronos cumulés et alternance
|
||||
Même structure de parties, avec chronos cumulés et alternance
|
||||
bloc - / bloc +.
|
||||
</span>
|
||||
</label>
|
||||
@@ -89,7 +89,7 @@
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="field span-2">
|
||||
<legend>Cadence du block</legend>
|
||||
<legend>Cadence de la partie</legend>
|
||||
<div class="option-grid preset-grid">
|
||||
<label class="option-card">
|
||||
<input type="radio" name="preset" value="fast" checked />
|
||||
@@ -113,7 +113,7 @@
|
||||
<legend>Temps personnalisés</legend>
|
||||
<div class="timing-grid">
|
||||
<label class="field">
|
||||
<span>Temps block (secondes)</span>
|
||||
<span>Temps partie (secondes)</span>
|
||||
<input
|
||||
name="blockSeconds"
|
||||
type="number"
|
||||
@@ -209,7 +209,7 @@
|
||||
<p>
|
||||
Chaque joueur dispose d'une grande zone tactile pour signaler la
|
||||
fin de son coup, puis l'app ouvre automatiquement la phase cube
|
||||
quand le block chess est terminé.
|
||||
quand la partie d'échecs est terminée.
|
||||
</p>
|
||||
</article>
|
||||
<article class="rule-card">
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</a>
|
||||
<div class="phase-title">
|
||||
<p class="eyebrow">Phase chrono</p>
|
||||
<h1 id="chronoTitle">Block 1</h1>
|
||||
<h1 id="chronoTitle">Partie 1</h1>
|
||||
<p id="chronoSubtitle" class="phase-subtitle"></p>
|
||||
</div>
|
||||
<button class="button ghost small utility-button" id="openArbiterButton" type="button">
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<section class="status-strip">
|
||||
<article class="status-card">
|
||||
<span>Temps block</span>
|
||||
<span>Temps partie</span>
|
||||
<strong id="blockTimer">03:00</strong>
|
||||
</article>
|
||||
<article class="status-card">
|
||||
@@ -67,13 +67,13 @@
|
||||
|
||||
<article class="phase-spine">
|
||||
<div class="spine-card">
|
||||
<p class="micro-label" id="spineLabel">État du block</p>
|
||||
<p class="micro-label" id="spineLabel">État de la partie</p>
|
||||
<strong id="spineHeadline">Prêt à démarrer</strong>
|
||||
<p id="spineText"></p>
|
||||
</div>
|
||||
|
||||
<button class="button primary spine-button" id="primaryChronoButton" type="button">
|
||||
Démarrer le block
|
||||
Démarrer la partie
|
||||
</button>
|
||||
</article>
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<section class="status-strip">
|
||||
<article class="status-card">
|
||||
<span>Block</span>
|
||||
<span>Partie</span>
|
||||
<strong id="cubeBlockLabel">1</strong>
|
||||
</article>
|
||||
<article class="status-card">
|
||||
|
||||
10
index.html
10
index.html
@@ -26,7 +26,7 @@
|
||||
<h1>Les échecs rencontrent le Rubik's Cube</h1>
|
||||
<p class="lead">
|
||||
ChessCubing propose un jeu hybride simple à comprendre, intense à
|
||||
vivre et très plaisant à regarder. On joue un block d'échecs, on
|
||||
vivre et très plaisant à regarder. On joue une partie d'échecs, on
|
||||
passe par une phase cube obligatoire, puis la partie repart avec un
|
||||
nouveau rythme.
|
||||
</p>
|
||||
@@ -47,7 +47,7 @@
|
||||
<div class="preview-card">
|
||||
<p class="micro-label">Le principe</p>
|
||||
<ol class="phase-list">
|
||||
<li>Deux joueurs disputent un block d'échecs court et nerveux.</li>
|
||||
<li>Deux joueurs disputent une partie d'échecs courte et nerveuse.</li>
|
||||
<li>Une phase cube coupe le rythme et relance la tension.</li>
|
||||
<li>Le résultat du cube influence immédiatement la suite du match.</li>
|
||||
</ol>
|
||||
@@ -117,7 +117,7 @@
|
||||
<div class="home-mini-grid">
|
||||
<article class="mini-panel">
|
||||
<span class="micro-label">1</span>
|
||||
<strong>On joue un block d'échecs</strong>
|
||||
<strong>On joue une partie d'échecs</strong>
|
||||
<p>
|
||||
La partie avance par séquences courtes, ce qui garde un très bon
|
||||
rythme et rend l'action facile à suivre.
|
||||
@@ -188,8 +188,8 @@
|
||||
<span class="mini-chip">ChessCubing Twice</span>
|
||||
<h3>Le cube donne l'élan</h3>
|
||||
<p>
|
||||
Le joueur le plus rapide sur la phase cube prend le départ du
|
||||
block suivant et peut même obtenir un double coup dans
|
||||
Le joueur le plus rapide sur la phase cube prend le départ de
|
||||
la partie suivante et peut même obtenir un double coup dans
|
||||
certaines situations.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
<p class="micro-label">Repères rapides</p>
|
||||
<div class="rule-metrics">
|
||||
<article class="metric-chip">
|
||||
<span>Block</span>
|
||||
<span>Partie</span>
|
||||
<strong>180 s</strong>
|
||||
</article>
|
||||
<article class="metric-chip">
|
||||
@@ -86,7 +86,7 @@
|
||||
</div>
|
||||
<p class="section-copy">
|
||||
Les deux règlements partagent la même colonne vertébrale : un
|
||||
match en blocks successifs, interrompus par une phase cube
|
||||
match en parties successives, interrompues par une phase cube
|
||||
obligatoire.
|
||||
</p>
|
||||
</div>
|
||||
@@ -101,10 +101,10 @@
|
||||
</p>
|
||||
</article>
|
||||
<article class="stage-card">
|
||||
<span class="micro-label">2. Block chess</span>
|
||||
<span class="micro-label">2. Partie d'échecs</span>
|
||||
<strong>180 secondes de jeu</strong>
|
||||
<p>
|
||||
Chaque block comporte une phase d'échecs limitée par une durée
|
||||
Chaque partie comporte une phase d'échecs limitée par une durée
|
||||
fixe et par un quota de coups selon le format FAST, FREEZE ou
|
||||
MASTERS.
|
||||
</p>
|
||||
@@ -123,7 +123,7 @@
|
||||
<strong>Jamais au temps</strong>
|
||||
<p>
|
||||
La partie se termine uniquement par échec et mat ou abandon,
|
||||
jamais par simple chute au temps ou dépassement d'un block.
|
||||
jamais par simple chute au temps ou dépassement d'une partie.
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
@@ -159,7 +159,7 @@
|
||||
<li>Vérifier la présence des huit cubes et des caches numérotés.</li>
|
||||
<li>Confirmer des mélanges identiques sous chaque numéro.</li>
|
||||
<li>Préparer l'échiquier et la variante dans l'application.</li>
|
||||
<li>Contrôler le tirage au sort avant le premier block.</li>
|
||||
<li>Contrôler le tirage au sort avant la première partie.</li>
|
||||
<li>Déclencher chaque phase cube au bon moment.</li>
|
||||
<li>Surveiller le respect du plafond de 120 s en mode Time.</li>
|
||||
</ul>
|
||||
@@ -172,7 +172,7 @@
|
||||
<h2>Twice et Time, côte à côte</h2>
|
||||
</div>
|
||||
<p class="section-copy">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
@@ -183,24 +183,24 @@
|
||||
<span class="mini-chip">Version V2</span>
|
||||
<h3>ChessCubing Twice</h3>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="format-badges">
|
||||
<span>Block : 180 s</span>
|
||||
<span>Partie : 180 s</span>
|
||||
<span>Temps par coup : 20 s max</span>
|
||||
<span>FAST / FREEZE / MASTERS : 6 / 8 / 10</span>
|
||||
</div>
|
||||
|
||||
<div class="format-section">
|
||||
<h4>Début et fin des blocks</h4>
|
||||
<h4>Début et fin des parties</h4>
|
||||
<ul class="rule-list compact">
|
||||
<li>Les Blancs commencent le block 1.</li>
|
||||
<li>Aucun double coup n'est possible au block 1.</li>
|
||||
<li>Un block s'arrête à 180 s ou quand les deux quotas sont atteints.</li>
|
||||
<li>Il est interdit de finir un block avec un roi en échec.</li>
|
||||
<li>Les Blancs commencent la partie 1.</li>
|
||||
<li>Aucun double coup n'est possible à la partie 1.</li>
|
||||
<li>Une partie s'arrête à 180 s ou quand les deux quotas sont atteints.</li>
|
||||
<li>Il est interdit de finir une partie avec un roi en échec.</li>
|
||||
<li>
|
||||
Si le dernier coup donne échec, les coups nécessaires pour
|
||||
parer sont joués hors quota.
|
||||
@@ -215,7 +215,7 @@
|
||||
<li>Les deux joueurs reçoivent un mélange identique.</li>
|
||||
<li>Le joueur le plus rapide gagne la phase cube.</li>
|
||||
<li>En cas d'égalité parfaite, la phase cube est rejouée.</li>
|
||||
<li>Le gagnant du cube commence le block suivant.</li>
|
||||
<li>Le gagnant du cube commence la partie suivante.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -223,10 +223,10 @@
|
||||
<span class="micro-label">Double coup V2</span>
|
||||
<strong>Condition stricte</strong>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
@@ -255,16 +255,16 @@
|
||||
|
||||
<div class="format-badges">
|
||||
<span>Temps initial : 10 min / joueur</span>
|
||||
<span>Block : 180 s</span>
|
||||
<span>Partie : 180 s</span>
|
||||
<span>Cap cube pris en compte : 120 s</span>
|
||||
</div>
|
||||
|
||||
<div class="format-section">
|
||||
<h4>Structure temporelle</h4>
|
||||
<ul class="rule-list compact">
|
||||
<li>La structure des blocks est identique à celle du Twice.</li>
|
||||
<li>La structure des parties est identique à celle du Twice.</li>
|
||||
<li>Les quotas de coups restent les mêmes : 6, 8 ou 10.</li>
|
||||
<li>Chaque block est suivi d'une phase cube obligatoire.</li>
|
||||
<li>Chaque partie est suivie d'une phase cube obligatoire.</li>
|
||||
<li>Le trait est conservé après la phase cube.</li>
|
||||
<li>Aucun système de priorité ou de double coup n'existe.</li>
|
||||
</ul>
|
||||
@@ -272,7 +272,7 @@
|
||||
|
||||
<div class="split-callouts">
|
||||
<article class="split-card minus-card">
|
||||
<span class="micro-label">Block impair</span>
|
||||
<span class="micro-label">Partie impaire</span>
|
||||
<strong>Bloc -</strong>
|
||||
<p>
|
||||
Le temps de résolution du cube est retiré du chrono du
|
||||
@@ -280,7 +280,7 @@
|
||||
</p>
|
||||
</article>
|
||||
<article class="split-card plus-card">
|
||||
<span class="micro-label">Block pair</span>
|
||||
<span class="micro-label">Partie paire</span>
|
||||
<strong>Bloc +</strong>
|
||||
<p>
|
||||
Le temps de résolution du cube est ajouté au chrono adverse,
|
||||
|
||||
Reference in New Issue
Block a user