puzzle-trainer/lib/rules.ts
2026-05-23 01:05:21 +00:00

61 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export interface GameRules {
subtitle: string; // One-liner shown in home cards
duration: string; // Estimated time "≈ X min"
howToPlay: string[]; // 3-5 rules
tip?: string; // Optional pro tip
}
export const GAME_RULES: Record<string, GameRules> = {
queens: {
subtitle: "1 couronne par ligne, colonne et zone",
duration: "≈ 3 min",
howToPlay: [
"Place une seule couronne par ligne.",
"Place une seule couronne par colonne.",
"Place une seule couronne par zone colorée.",
"Les couronnes ne peuvent pas se toucher, même en diagonale.",
],
tip: "Commence par la zone la plus contrainte.",
},
tango: {
subtitle: "Équilibre soleils ☀ et lunes ◐ sur la grille",
duration: "≈ 2 min",
howToPlay: [
"Chaque ligne et colonne doit avoir autant de soleils que de lunes.",
"Pas plus de 2 symboles identiques consécutifs dans une ligne ou colonne.",
"Les contraintes = (même symbole) et × (symboles différents) doivent être respectées.",
],
tip: "Repère les contraintes × en premier — elles forcent des valeurs.",
},
zip: {
subtitle: "Relie les chiffres dans l'ordre en couvrant tout",
duration: "≈ 2 min",
howToPlay: [
"Trace un chemin continu de 1 jusqu'au dernier chiffre.",
"Le chemin doit passer par toutes les cellules de la grille.",
"Le chemin ne peut pas se croiser.",
],
tip: "Repère les coins et impasses pour contraindre le tracé.",
},
sudoku: {
subtitle: "Chiffres 16 dans chaque ligne, colonne et bloc",
duration: "≈ 4 min",
howToPlay: [
"Place les chiffres 1 à 6 dans chaque ligne.",
"Place les chiffres 1 à 6 dans chaque colonne.",
"Place les chiffres 1 à 6 dans chaque bloc 2×3.",
"Chaque chiffre n'apparaît qu'une seule fois par groupe.",
],
tip: "Commence par les lignes ou colonnes déjà les plus remplies.",
},
patches: {
subtitle: "Remplis chaque zone avec les bonnes pièces",
duration: "≈ 3 min",
howToPlay: [
"Chaque zone colorée doit être remplie entièrement.",
"Les pièces disponibles correspondent exactement aux zones.",
"Les pièces peuvent être tournées.",
],
tip: "Commence par les zones les plus petites et les plus contraintes.",
},
};