using CoreLibrary; namespace ConsoleApp { internal class Utils { private static int nombreJoueurs = 0; private readonly static int longueurTitre = 55; private readonly static Dictionary convertirCouleurs = new Dictionary() { {Couleur.NOIR, ConsoleColor.Black }, {Couleur.BLANC, ConsoleColor.White }, {Couleur.ROUGE, ConsoleColor.Red }, {Couleur.VERT, ConsoleColor.Green }, {Couleur.BLEU, ConsoleColor.Blue }, {Couleur.JAUNE, ConsoleColor.Yellow } }; private readonly static Dictionary convertirIndicateurs = new Dictionary() { {Indicateur.BONNEPLACE, ConsoleColor.Black }, {Indicateur.BONNECOULEUR, ConsoleColor.White } }; public static void AfficherTitre() { Console.WriteLine(""" __ __ _ _ _ | \/ | __ _ ___| |_ ___ _ _ _ __ (_) _ _ __| | | |\/| |/ _` |(_-<| _|/ -_)| '_|| ' \ | || ' \ / _` | |_| |_|\__,_|/__/ \__|\___||_| |_|_|_||_||_||_|\__,_| """); AfficherSeparateur(); } public static void AfficherTitre(string titre) { int taille = longueurTitre - titre.Length; int gauche = taille > 0 ? taille / 2 : 0; Console.Write(titre.PadLeft(titre.Length + gauche)); AfficherSeparateur(); } public static void AfficherSeparateur() { Console.WriteLine(""" _______________________________________________________ """); } public static string SaisirNom() { string nom = $"Joueur {++nombreJoueurs}"; Console.WriteLine(nom); Console.Write(">>> "); nom = Console.ReadLine() ?? nom; if (nom == "") { --nombreJoueurs; throw new UtilsNomJoueurNullException(); } Console.WriteLine(); return nom; } public static void DessinerJeton(Jeton jeton) { Console.Write(" "); Console.ForegroundColor = convertirCouleurs.GetValueOrDefault(jeton.Couleur); Console.BackgroundColor = Console.ForegroundColor.Equals(ConsoleColor.Black) ? ConsoleColor.White : ConsoleColor.Black; Console.Write("⬤"); Console.ResetColor(); Console.Write(" "); } public static void DessinerIndicateur(Indicateur indicateur) { Console.Write(" "); Console.ForegroundColor = convertirIndicateurs.GetValueOrDefault(indicateur); Console.BackgroundColor = Console.ForegroundColor.Equals(ConsoleColor.Black) ? ConsoleColor.White : ConsoleColor.Black; Console.Write("⬤"); Console.ResetColor(); Console.Write(" "); } public static void DessinerCode(IEnumerable jetons) { foreach (Jeton? jeton in jetons) { if (jeton.HasValue) { DessinerJeton(jeton.Value); } else { Console.Write(" "); } } } public static void DessinerIndicateurs(IEnumerable indicateurs) { if (indicateurs == null) { indicateurs = []; } foreach (Indicateur indicateur in indicateurs) { DessinerIndicateur(indicateur); } if (indicateurs.Count() < 4) Console.Write("".PadLeft((4 - indicateurs.Count()) * 3)); } public static void DessinerPlateau(IEnumerable> grille, IEnumerable> indicateurs) { IEnumerable[] grilleT = grille.ToArray(); IEnumerable[] indicateursT = indicateurs.ToArray(); Console.WriteLine(" Codes Indicateurs "); Console.WriteLine("──────────────── ────────────────"); Console.WriteLine("│ │ │ │"); for (int i = 0; i < grilleT.Length; ++i) { Console.Write("│ "); DessinerCode(grilleT[i]); Console.Write(" │"); Console.Write(" "); Console.Write("│ "); DessinerIndicateurs(indicateursT[i]); Console.WriteLine(" │"); } Console.WriteLine("│ │ │ │"); Console.WriteLine("──────────────── ────────────────"); } public static Jeton? ChoixJeton() { Console.TreatControlCAsInput = true; bool aChoisi = false; int indice = 0; Couleur[] couleurs = (Couleur[])Enum.GetValues(typeof(Couleur)); Couleur couleur = couleurs[indice]; while (!aChoisi) { DessinerJeton(new Jeton(couleur)); Console.Write("\b\b\b"); ConsoleKey touche = Console.ReadKey(true).Key; switch (touche) { case ConsoleKey.Enter: aChoisi = true; break; case ConsoleKey.LeftArrow: --indice; break; case ConsoleKey.RightArrow: ++indice; break; case ConsoleKey.Escape: return null; default: break; } if (indice < 0) indice = couleurs.Length - 1; else if (indice >= couleurs.Length) indice = 0; couleur = couleurs[indice]; } Console.TreatControlCAsInput = false; return new Jeton(couleur); } public static void ChoixCode(ref Code code) { while (!code.EstComplet()) { Jeton? jeton = ChoixJeton(); if (jeton.HasValue) { DessinerJeton(jeton.Value); code.AjouterJeton(jeton.Value); } else { Console.Write("\b\b\b \b\b\b\b\b\b\b\b\b\b\b\b"); try { code.SupprimerDernierJeton(); } catch(CodeTableauLesJetonsVideException) { Console.WriteLine("Il n'y a pas de jetons! Impossible de supprimer"); } } } } } }