You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
4.5 KiB
155 lines
4.5 KiB
using CoreLibrary.Events;
|
|
using CoreLibrary;
|
|
|
|
namespace ConsoleApp
|
|
{
|
|
/// <summary>
|
|
/// Fournit des gestionnaires d'événements pour les événements liés au déroulement de la partie.
|
|
/// </summary>
|
|
public static class Evenements
|
|
{
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour l'ajout d'un joueur.
|
|
/// </summary>
|
|
public static string? DemanderJoueur(Object? sender, DemanderJoueurEventArgs e)
|
|
{
|
|
Console.WriteLine($"Joueur {e.Numero}");
|
|
Console.Write(">>> ");
|
|
|
|
string? nom = Console.ReadLine();
|
|
|
|
Console.WriteLine();
|
|
|
|
return nom;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour le début de la partie.
|
|
/// </summary>
|
|
public static void CommencerLaPartie(Object? sender, DebutPartieEventArgs e)
|
|
{
|
|
Utils.DessinerSeparateur();
|
|
|
|
Console.WriteLine("La partie commence, bonne chance à tous !\n");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour le début d'un nouveau tour.
|
|
/// </summary>
|
|
public static void NouveauTour(Object? sender, NouveauTourEventArgs e)
|
|
{
|
|
Utils.DessinerSeparateur();
|
|
|
|
Console.WriteLine($"Tour {e.Tour} - {e.Joueur.Nom}\n");
|
|
|
|
Utils.DessinerPlateau(e.Grille, e.Indicateurs);
|
|
|
|
Console.WriteLine();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour la demande d'ajout d'un jeton.
|
|
/// </summary>
|
|
public static Jeton? DemanderJeton(Object? sender, DemanderJetonEventArgs e)
|
|
{
|
|
Console.TreatControlCAsInput = true;
|
|
Console.CursorVisible = false;
|
|
|
|
bool aChoisi = false;
|
|
int indice = 0;
|
|
Couleur[] couleurs = (Couleur[])Enum.GetValues(typeof(Couleur));
|
|
|
|
while (!aChoisi)
|
|
{
|
|
Utils.DessinerPion(couleurs[indice]);
|
|
Console.Write("\b\b\b");
|
|
|
|
switch (Console.ReadKey(true).Key)
|
|
{
|
|
case ConsoleKey.Enter:
|
|
aChoisi = true;
|
|
break;
|
|
|
|
case ConsoleKey.LeftArrow:
|
|
--indice;
|
|
break;
|
|
|
|
case ConsoleKey.RightArrow:
|
|
++indice;
|
|
break;
|
|
|
|
case ConsoleKey.Escape:
|
|
if (e.Indice != 0)
|
|
{
|
|
aChoisi = true;
|
|
indice = -2;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (indice == -1)
|
|
indice = couleurs.Length - 1;
|
|
else if (indice == couleurs.Length)
|
|
indice = 0;
|
|
}
|
|
|
|
Console.TreatControlCAsInput = false;
|
|
Console.CursorVisible = true;
|
|
|
|
return indice != -2 ? new Jeton(couleurs[indice]) : null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour l'ajout d'un jeton.
|
|
/// </summary>
|
|
public static void AjouterJeton(Object? sender, AjouterJetonEventArgs e)
|
|
{
|
|
Utils.DessinerPion(e.Jeton.Couleur);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour la suppression du dernier jeton ajouté.
|
|
/// </summary>
|
|
public static void SupprimerDernierJeton(Object? sender, SupprimerDernierJetonEventArgs e)
|
|
{
|
|
Console.Write("\b\b\b \b\b\b\b\b\b");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour l'ajout d'un code.
|
|
/// </summary>
|
|
public static void AjouterCode(Object? sender, AjouterCodeEventArgs e)
|
|
{
|
|
Console.WriteLine();
|
|
|
|
Utils.DessinerSeparateur();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gestionnaire d'événement pour la fin de la partie.
|
|
/// </summary>
|
|
public static void PartieTerminee(Object? sender, PartieTermineeEventArgs e)
|
|
{
|
|
Joueur[] gagnants = e.Gagnants.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 des deux joueurs...");
|
|
}
|
|
}
|
|
}
|
|
}
|