Fin de boucle Partie.
continuous-integration/drone/push Build is failing Details

master
Pauline PRADY 11 months ago
parent 6cfb2056e9
commit aafccfae1b

@ -17,7 +17,7 @@ namespace ConsoleApp
/// <param name="e">L'instance de l'événement DemanderJoueurEventArgs créée par Partie.</param> /// <param name="e">L'instance de l'événement DemanderJoueurEventArgs créée par Partie.</param>
/// <returns>Le nom du joueur.</returns> /// <returns>Le nom du joueur.</returns>
/// </summary> /// </summary>
public static string? DemanderJoueur(Object? sender, DemanderJoueurEventArgs e) /*public static string? DemanderJoueur(Object? sender, DemanderJoueurEventArgs e)
{ {
Console.WriteLine($"Joueur {e.Numero}"); Console.WriteLine($"Joueur {e.Numero}");
Console.Write(">>> "); Console.Write(">>> ");
@ -27,7 +27,7 @@ namespace ConsoleApp
Console.WriteLine(); Console.WriteLine();
return nom; return nom;
} }*/
/// <summary> /// <summary>
@ -65,7 +65,7 @@ namespace ConsoleApp
/// <param name="e">L'instance de l'événement DemanderJetonEventArgs créée par Partie.</param> /// <param name="e">L'instance de l'événement DemanderJetonEventArgs créée par Partie.</param>
/// <returns>Le jeton choisi par le joueur.</returns> /// <returns>Le jeton choisi par le joueur.</returns>
/// </summary> /// </summary>
public static Jeton? DemanderJeton(Object? sender, DemanderJetonEventArgs e) /*public static Jeton? DemanderJeton(Object? sender, DemanderJetonEventArgs e)
{ {
Console.TreatControlCAsInput = true; Console.TreatControlCAsInput = true;
Console.CursorVisible = false; Console.CursorVisible = false;
@ -115,7 +115,7 @@ namespace ConsoleApp
Console.CursorVisible = true; Console.CursorVisible = true;
return indice != -2 ? new Jeton(couleurs[indice]) : null; return indice != -2 ? new Jeton(couleurs[indice]) : null;
} }*/
/// <summary> /// <summary>
/// Ecoute l'événement en rapport avec l'ajout d'un jeton dans le code. /// Ecoute l'événement en rapport avec l'ajout d'un jeton dans le code.

@ -17,10 +17,10 @@ namespace ConsoleApp
Partie maPartie = new Partie(new ReglesClassiques()); Partie maPartie = new Partie(new ReglesClassiques());
maPartie.DemanderJoueur += Evenements.DemanderJoueur; //maPartie.DemanderJoueur += Evenements.DemanderJoueur;
maPartie.DebutPartie += Evenements.CommencerLaPartie; maPartie.DebutPartie += Evenements.CommencerLaPartie;
maPartie.NouveauTour += Evenements.NouveauTour; maPartie.NouveauTour += Evenements.NouveauTour;
maPartie.DemanderJeton += Evenements.DemanderJeton; //maPartie.DemanderJeton += Evenements.DemanderJeton;
maPartie.AjouterJeton += Evenements.AjouterJeton; maPartie.AjouterJeton += Evenements.AjouterJeton;
maPartie.SupprimerDernierJeton += Evenements.SupprimerDernierJeton; maPartie.SupprimerDernierJeton += Evenements.SupprimerDernierJeton;
maPartie.AjouterCode += Evenements.AjouterCode; maPartie.AjouterCode += Evenements.AjouterCode;

@ -0,0 +1,14 @@
using CoreLibrary.Joueurs;
namespace CoreLibrary.Events
{
public class ConstruireJoueurEventArgs : EventArgs
{
public string Nom { get; private set; }
public ConstruireJoueurEventArgs(string nom)
{
Nom = nom;
}
}
}

@ -1,22 +0,0 @@
namespace CoreLibrary.Events
{
/// <summary>
/// Classe contenant les arguments passées en paramètre lors de l'événement DemanderJeton.
/// </summary>
public class DemanderJetonEventArgs : EventArgs
{
/// <summary>
/// L'indice du code où le jeton va être ajouté.
/// </summary>
public int Indice { get; private set; }
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="DemanderJetonEventArgs"/> avec l'indice spécifié.
/// </summary>
/// <param name="joueur">L'indice du jeton qui va été ajouté.</param>
public DemanderJetonEventArgs(int indice)
{
Indice = indice;
}
}
}

@ -1,23 +0,0 @@
namespace CoreLibrary.Events
{
/// <summary>
/// Classe contenant les arguments passées en paramètre lors de l'événement DemanderJoueur.
/// </summary>
public class DemanderJoueurEventArgs : EventArgs
{
/// <summary>
/// Le numéro du joueur (Joueur 1 ou 2, 3..).
/// </summary>
public int Numero { get; private set; }
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="DemanderJoueurEventArgs"/> avec le numéro du joueur spécifié.
/// </summary>
/// <param name="numero">Le numéro du joueur qui va être ajouté.</param>
public DemanderJoueurEventArgs(int numero)
{
Numero = numero;
}
}
}

@ -0,0 +1,16 @@
using CoreLibrary.Joueurs;
namespace CoreLibrary.Events
{
public class DemanderNomEventArgs : EventArgs
{
public int Indice { get; private set; }
public JoueurBuilder JoueurBuilder { get; private set; }
public DemanderNomEventArgs(int indice, JoueurBuilder joueurBuilder)
{
Indice = indice;
JoueurBuilder = joueurBuilder;
}
}
}

@ -1,4 +1,7 @@
namespace CoreLibrary.Joueurs using CoreLibrary.Core;
using CoreLibrary.Events;
namespace CoreLibrary.Joueurs
{ {
/// <summary> /// <summary>
/// Classe représentant un joueur. /// Classe représentant un joueur.

@ -1,21 +1,16 @@
namespace CoreLibrary.Joueurs using CoreLibrary.Events;
namespace CoreLibrary.Joueurs
{ {
public class JoueurBuilder public class JoueurBuilder
{ {
private string nom; public event EventHandler<ConstruireJoueurEventArgs>? ConstruireJoueur;
public JoueurBuilder Nom(string nom) private void QuandConstruireJoueur(string nom) => ConstruireJoueur?.Invoke(this, new ConstruireJoueurEventArgs(nom));
{
this.nom = nom;
return this;
}
public Joueur Build() public void Nom(string nom)
{ {
return new Joueur() QuandConstruireJoueur(nom);
} }
} }
} }

@ -26,12 +26,7 @@ namespace CoreLibrary
/// <summary> /// <summary>
/// Événement déclenché lorsqu'il est nécessaire de d'ajouter un joueur. /// Événement déclenché lorsqu'il est nécessaire de d'ajouter un joueur.
/// </summary> /// </summary>
public event StringEventHandler<DemanderJoueurEventArgs>? DemanderJoueur; public event StringEventHandler<DemanderNomEventArgs>? DemanderNom;
/// <summary>
/// Événement déclenché lorsqu'il est nécessaire d'ajouter un jeton.
/// </summary>
public event JetonEventHandler<DemanderJetonEventArgs>? DemanderJeton;
/// <summary> /// <summary>
/// Événement déclenché lorsqu'il est nécessaire d'ajouter un joueur. /// Événement déclenché lorsqu'il est nécessaire d'ajouter un joueur.
@ -79,13 +74,7 @@ namespace CoreLibrary
/// </summary> /// </summary>
/// <param name="numero">Le numéro du joueur à ajouter</param> /// <param name="numero">Le numéro du joueur à ajouter</param>
/// <returns>Le nom du joueur demandé</returns></returns> /// <returns>Le nom du joueur demandé</returns></returns>
private string? QuandDemanderJoueur(int numero) => DemanderJoueur?.Invoke(this, new DemanderJoueurEventArgs(numero)); private string? QuandDemanderNom(int numero, JoueurBuilder joueurBuilder) => DemanderNom?.Invoke(this, new DemanderNomEventArgs(numero, joueurBuilder));
/// <summary>
/// Méthode pour déclencher l'événement de demande d'ajout d'un jeton.
/// </summary>
/// <returns>Le jeton demandé</returns>
private Jeton? QuandDemanderJeton(int indice) => DemanderJeton?.Invoke(this, new DemanderJetonEventArgs(indice));
/// <summary> /// <summary>
/// Méthode pour déclencher l'événement d'ajout d'un joueur. /// Méthode pour déclencher l'événement d'ajout d'un joueur.
@ -151,31 +140,44 @@ namespace CoreLibrary
/// </summary> /// </summary>
public void Jouer() public void Jouer()
{ {
/// Ajout des joueurs jusqu'à atteindre le nombre maximum de joueurs défini par les règles JoueurBuilder joueurBuilder = new JoueurBuilder();
AjouterJoueurs(); joueurBuilder.ConstruireJoueur += Joueur;
regles.CommencerLaPartie();
QuandDebutPartie();
Joueur joueurCourant = regles.JoueurCourant();
Plateau plateauCourant = joueurCourant.Plateau;
QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs());
QuandDemanderNom(regles.NbJoueurs + 1, joueurBuilder);
} }
public void Joueur(Object? sender, ) public void Joueur(Object? sender, ConstruireJoueurEventArgs e)
{ {
Joueur joueur = regles.AjouterJoueur(e.Nom);
QuandAjouterJoueur(joueur);
joueur.JouerCode += Tour;
if (regles.NbJoueurs != regles.NbJoueursMaximum)
{
JoueurBuilder joueurBuilder = new JoueurBuilder();
joueurBuilder.ConstruireJoueur += Joueur;
QuandDemanderNom(regles.NbJoueurs + 1, joueurBuilder);
}
else
{
Commencer();
}
} }
private void Tour() public void Commencer()
{ {
Code code = regles.GenererCode(); regles.CommencerLaPartie();
QuandDebutPartie();
CreerCode(code); (Joueur joueurCourant, Plateau plateauCourant) = regles.JoueurCourant();
QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs());
}
plateauCourant.AjouterCode(code); private void Tour(Object? sender, JouerCodeEventArgs e)
QuandNouveauCode(code); {
(Joueur joueurCourant, Plateau plateauCourant) = regles.JoueurCourant();
plateauCourant.AjouterCode(e.Code);
QuandNouveauCode(e.Code);
if(regles.EstTerminee()) if(regles.EstTerminee())
{ {
@ -186,46 +188,11 @@ namespace CoreLibrary
regles.PasserLaMain(); regles.PasserLaMain();
QuandPasserMain(); QuandPasserMain();
} }
} }
private void Terminee() private void Terminee()
{ {
QuandPartieTerminee(regles.Gagnants(), regles.Perdants()); QuandPartieTerminee(regles.Gagnants(), regles.Perdants());
} }
private void AjouterJoueurs()
{
while (regles.NbJoueurs != regles.NbJoueursMaximum)
{
string nom = QuandDemanderJoueur(regles.NbJoueurs + 1) ?? $"Joueur {regles.NbJoueurs + 1}";
Joueur joueur = regles.AjouterJoueur(nom);
QuandAjouterJoueur(joueur);
}
}
private void CreerCode(Code code)
{
while (!code.EstComplet())
{
Jeton? jeton = QuandDemanderJeton(code.NbJetons);
if (DemanderJeton == null)
{
jeton = new Jeton();
}
if(!jeton.HasValue)
{
code.SupprimerDernierJeton();
QuandSupprimerDernierJeton();
}
else
{
code.AjouterJeton(jeton.Value);
QuandNouveauJeton(jeton.Value);
}
}
}
} }
} }

Loading…
Cancel
Save