Application console
continuous-integration/drone/push Build is passing Details

master
Céleste BARBOSA 12 months ago
parent e624363abf
commit 2e1dcef32b

@ -1,7 +1,60 @@
using CoreLibrary;
using ConsoleApp;
JetonIndicateur ji1 = new JetonIndicateur(Couleur.Noir);
Console.WriteLine(ji1.Couleur);
Jeton j1 = new JetonIndicateur(Couleur.Blanc);
Console.WriteLine(j1.Couleur);
Console.OutputEncoding = System.Text.Encoding.UTF8;
ReglesClassiques partie = new ReglesClassiques();
Utils.AfficherTitre();
Utils.AfficherTitre("Joueurs");
string joueur1 = Utils.SaisirNom();
string joueur2 = Utils.SaisirNom();
Utils.AfficherSeparateur();
partie.AjouterJoueur(joueur1);
partie.AjouterJoueur(joueur2);
partie.CommencerLaPartie();
while (!partie.EstTerminee())
{
Console.WriteLine(partie.JoueurCourant().Nom);
Console.WriteLine();
Utils.DessinerPlateau(partie.JoueurCourant().Plateau.Grille(), partie.JoueurCourant().Plateau.Indicateurs());
Console.WriteLine();
Code code = partie.GenererCode();
Utils.ChoixCode(ref code);
partie.JoueurCourant().Plateau.AjouterCode(code);
partie.PasserLaMain();
Utils.AfficherSeparateur();
}
Console.WriteLine("La partie est maintenant terminée !");
Joueur[] gagnants = partie.Gagnants().ToArray();
Joueur[] perdants = partie.Perdants().ToArray();
if (gagnants.Length > 1)
{
Console.WriteLine("C'est une égalité !");
}
else if (gagnants.Length == 1)
{
Console.WriteLine($"C'est une victoire de {gagnants[0].Nom}." +
$"");
}
else
{
Console.WriteLine("C'est une défaite...");
}

@ -0,0 +1,226 @@
using CoreLibrary;
namespace ConsoleApp
{
internal class Utils
{
private static int nombreJoueurs = 0;
private readonly static int longueurTitre = 55;
private readonly static Dictionary<Couleur, ConsoleColor> convertirCouleurs = new Dictionary<Couleur, ConsoleColor>()
{
{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<Indicateur, ConsoleColor> convertirIndicateurs = new Dictionary<Indicateur, ConsoleColor>()
{
{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;
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<Jeton?> jetons)
{
foreach (Jeton? jeton in jetons)
{
if (jeton.HasValue)
{
DessinerJeton(jeton.Value);
}
else
{
Console.Write(" ");
}
}
}
public static void DessinerIndicateurs(IEnumerable<Indicateur> 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<IEnumerable<Jeton?>> grille, IEnumerable<IEnumerable<Indicateur>> indicateurs)
{
IEnumerable<Jeton?>[] grilleT = grille.ToArray();
IEnumerable<Indicateur>[] 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");
code.SupprimerDernierJeton();
}
}
}
}
}
Loading…
Cancel
Save