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.
115 lines
4.1 KiB
115 lines
4.1 KiB
using CoreLibrary.Events;
|
|
using CoreLibrary.Joueurs;
|
|
using CoreLibrary.Core;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
|
|
namespace ConsoleApp
|
|
{
|
|
/// <summary>
|
|
/// Fournit un ensemble de méthodes écoutant les événements liés au déroulement de la partie.
|
|
/// </summary>
|
|
[ExcludeFromCodeCoverage]
|
|
public static class Evenements
|
|
{
|
|
/// <summary>
|
|
/// Ecoute l'événement en rapport avec la demande du nom d'un joueur.
|
|
/// <param name="sender">La classe qui appelle l'événement; ici Partie.</param>
|
|
/// <param name="e">L'instance de l'événement DemanderNomEventArgs créée par Partie.</param>
|
|
/// <returns>Le nom du joueur.</returns>
|
|
/// </summary>
|
|
public static void DemanderNom(Object? sender, DemanderJoueurEventArgs e)
|
|
{
|
|
Console.WriteLine($"Joueur {e.Indice}");
|
|
Console.Write(">>> ");
|
|
|
|
string? nom = Console.ReadLine();
|
|
|
|
Console.WriteLine();
|
|
|
|
e.JoueurBuilder.Nom(nom);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Ecoute l'événement en rapport avec le début de la partie.
|
|
/// <param name="sender">La classe qui appelle l'événement; ici Partie.</param>
|
|
/// <param name="e">L'instance de l'événement DebutPartieEventArgs créée par Partie.</param>
|
|
/// </summary>
|
|
public static void CommencerLaPartie(Object? sender, DebutPartieEventArgs e)
|
|
{
|
|
Utils.DessinerSeparateur();
|
|
|
|
Console.WriteLine("La partie commence, bonne chance à tous !\n");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ecoute l'événement en rapport avec un nouveau tour.
|
|
/// <param name="sender">La classe qui appelle l'événement; ici Partie.</param>
|
|
/// <param name="e">L'instance de l'événement NouveauTourEventArgs créée par Partie.</param>
|
|
/// </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();
|
|
|
|
Code code = e.Code;
|
|
while(!code.EstComplet())
|
|
{
|
|
Jeton? jeton = Utils.SaisirJeton(code.NbJetons);
|
|
if (jeton.HasValue)
|
|
{
|
|
Utils.DessinerPion(jeton.Value.Couleur);
|
|
code.AjouterJeton(jeton.Value);
|
|
}
|
|
else
|
|
{
|
|
Utils.SupprimerDernierJeton();
|
|
code.SupprimerDernierJeton();
|
|
}
|
|
}
|
|
|
|
e.Joueur.Code(code);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ecoute l'événement en rapport avec l'ajout d'un code dans le plateau.
|
|
/// <param name="sender">La classe qui appelle l'événement; ici Partie.</param>
|
|
/// <param name="e">L'instance de l'événement AjouterCodeEventArgs créée par Partie.</param>
|
|
/// </summary>
|
|
public static void AjouterCode(Object? sender, AjouterCodeEventArgs e)
|
|
{
|
|
Console.WriteLine();
|
|
|
|
Utils.DessinerSeparateur();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ecoute l'événement en rapport avec la fin de la partie.
|
|
/// <param name="sender">La classe qui appelle l'événement; ici Partie.</param>
|
|
/// <param name="e">L'instance de l'événement PartieTermineeEventArgs créée par Partie.</param>
|
|
/// </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...");
|
|
}
|
|
}
|
|
}
|
|
}
|