diff --git a/Sources/ConsoleApp/Evenements.cs b/Sources/ConsoleApp/Evenements.cs
index 2d96edc..596ad52 100644
--- a/Sources/ConsoleApp/Evenements.cs
+++ b/Sources/ConsoleApp/Evenements.cs
@@ -17,7 +17,7 @@ namespace ConsoleApp
/// L'instance de l'événement DemanderJoueurEventArgs créée par Partie.
/// Le nom du joueur.
///
- public static string? DemanderJoueur(Object? sender, DemanderJoueurEventArgs e)
+ /*public static string? DemanderJoueur(Object? sender, DemanderJoueurEventArgs e)
{
Console.WriteLine($"Joueur {e.Numero}");
Console.Write(">>> ");
@@ -27,7 +27,7 @@ namespace ConsoleApp
Console.WriteLine();
return nom;
- }
+ }*/
///
@@ -65,7 +65,7 @@ namespace ConsoleApp
/// L'instance de l'événement DemanderJetonEventArgs créée par Partie.
/// Le jeton choisi par le joueur.
///
- public static Jeton? DemanderJeton(Object? sender, DemanderJetonEventArgs e)
+ /*public static Jeton? DemanderJeton(Object? sender, DemanderJetonEventArgs e)
{
Console.TreatControlCAsInput = true;
Console.CursorVisible = false;
@@ -115,7 +115,7 @@ namespace ConsoleApp
Console.CursorVisible = true;
return indice != -2 ? new Jeton(couleurs[indice]) : null;
- }
+ }*/
///
/// Ecoute l'événement en rapport avec l'ajout d'un jeton dans le code.
diff --git a/Sources/ConsoleApp/Program.cs b/Sources/ConsoleApp/Program.cs
index 1ee6d17..d454895 100644
--- a/Sources/ConsoleApp/Program.cs
+++ b/Sources/ConsoleApp/Program.cs
@@ -17,10 +17,10 @@ namespace ConsoleApp
Partie maPartie = new Partie(new ReglesClassiques());
- maPartie.DemanderJoueur += Evenements.DemanderJoueur;
+ //maPartie.DemanderJoueur += Evenements.DemanderJoueur;
maPartie.DebutPartie += Evenements.CommencerLaPartie;
maPartie.NouveauTour += Evenements.NouveauTour;
- maPartie.DemanderJeton += Evenements.DemanderJeton;
+ //maPartie.DemanderJeton += Evenements.DemanderJeton;
maPartie.AjouterJeton += Evenements.AjouterJeton;
maPartie.SupprimerDernierJeton += Evenements.SupprimerDernierJeton;
maPartie.AjouterCode += Evenements.AjouterCode;
diff --git a/Sources/CoreLibrary/Events/ConstruireJoueurEventArgs.cs b/Sources/CoreLibrary/Events/ConstruireJoueurEventArgs.cs
new file mode 100644
index 0000000..8540f8e
--- /dev/null
+++ b/Sources/CoreLibrary/Events/ConstruireJoueurEventArgs.cs
@@ -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;
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Events/DemanderJetonEventArgs.cs b/Sources/CoreLibrary/Events/DemanderJetonEventArgs.cs
deleted file mode 100644
index a8f3bae..0000000
--- a/Sources/CoreLibrary/Events/DemanderJetonEventArgs.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-namespace CoreLibrary.Events
-{
- ///
- /// Classe contenant les arguments passées en paramètre lors de l'événement DemanderJeton.
- ///
- public class DemanderJetonEventArgs : EventArgs
- {
- ///
- /// L'indice du code où le jeton va être ajouté.
- ///
- public int Indice { get; private set; }
-
- ///
- /// Initialise une nouvelle instance de la classe avec l'indice spécifié.
- ///
- /// L'indice du jeton qui va été ajouté.
- public DemanderJetonEventArgs(int indice)
- {
- Indice = indice;
- }
- }
-}
diff --git a/Sources/CoreLibrary/Events/DemanderJoueurEventArgs.cs b/Sources/CoreLibrary/Events/DemanderJoueurEventArgs.cs
deleted file mode 100644
index f297f25..0000000
--- a/Sources/CoreLibrary/Events/DemanderJoueurEventArgs.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-namespace CoreLibrary.Events
-{
- ///
- /// Classe contenant les arguments passées en paramètre lors de l'événement DemanderJoueur.
- ///
- public class DemanderJoueurEventArgs : EventArgs
- {
- ///
- /// Le numéro du joueur (Joueur 1 ou 2, 3..).
- ///
- public int Numero { get; private set; }
-
-
- ///
- /// Initialise une nouvelle instance de la classe avec le numéro du joueur spécifié.
- ///
- /// Le numéro du joueur qui va être ajouté.
- public DemanderJoueurEventArgs(int numero)
- {
- Numero = numero;
- }
- }
-}
diff --git a/Sources/CoreLibrary/Events/DemanderNomEventArgs.cs b/Sources/CoreLibrary/Events/DemanderNomEventArgs.cs
new file mode 100644
index 0000000..e099772
--- /dev/null
+++ b/Sources/CoreLibrary/Events/DemanderNomEventArgs.cs
@@ -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;
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Joueurs/Joueur.cs b/Sources/CoreLibrary/Joueurs/Joueur.cs
index e3f9635..0dc4cfc 100644
--- a/Sources/CoreLibrary/Joueurs/Joueur.cs
+++ b/Sources/CoreLibrary/Joueurs/Joueur.cs
@@ -1,4 +1,7 @@
-namespace CoreLibrary.Joueurs
+using CoreLibrary.Core;
+using CoreLibrary.Events;
+
+namespace CoreLibrary.Joueurs
{
///
/// Classe représentant un joueur.
diff --git a/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs b/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs
index 6ce2d1f..66236ff 100644
--- a/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs
+++ b/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs
@@ -1,21 +1,16 @@
-namespace CoreLibrary.Joueurs
+using CoreLibrary.Events;
+
+namespace CoreLibrary.Joueurs
{
public class JoueurBuilder
{
- private string nom;
+ public event EventHandler? ConstruireJoueur;
- public JoueurBuilder Nom(string nom)
- {
- this.nom = nom;
- return this;
- }
+ private void QuandConstruireJoueur(string nom) => ConstruireJoueur?.Invoke(this, new ConstruireJoueurEventArgs(nom));
- public Joueur Build()
+ public void Nom(string nom)
{
- return new Joueur()
+ QuandConstruireJoueur(nom);
}
-
-
-
}
}
diff --git a/Sources/CoreLibrary/Partie.cs b/Sources/CoreLibrary/Partie.cs
index b883db4..70a073a 100644
--- a/Sources/CoreLibrary/Partie.cs
+++ b/Sources/CoreLibrary/Partie.cs
@@ -26,12 +26,7 @@ namespace CoreLibrary
///
/// Événement déclenché lorsqu'il est nécessaire de d'ajouter un joueur.
///
- public event StringEventHandler? DemanderJoueur;
-
- ///
- /// Événement déclenché lorsqu'il est nécessaire d'ajouter un jeton.
- ///
- public event JetonEventHandler? DemanderJeton;
+ public event StringEventHandler? DemanderNom;
///
/// Événement déclenché lorsqu'il est nécessaire d'ajouter un joueur.
@@ -79,13 +74,7 @@ namespace CoreLibrary
///
/// Le numéro du joueur à ajouter
/// Le nom du joueur demandé
- private string? QuandDemanderJoueur(int numero) => DemanderJoueur?.Invoke(this, new DemanderJoueurEventArgs(numero));
-
- ///
- /// Méthode pour déclencher l'événement de demande d'ajout d'un jeton.
- ///
- /// Le jeton demandé
- private Jeton? QuandDemanderJeton(int indice) => DemanderJeton?.Invoke(this, new DemanderJetonEventArgs(indice));
+ private string? QuandDemanderNom(int numero, JoueurBuilder joueurBuilder) => DemanderNom?.Invoke(this, new DemanderNomEventArgs(numero, joueurBuilder));
///
/// Méthode pour déclencher l'événement d'ajout d'un joueur.
@@ -143,7 +132,7 @@ namespace CoreLibrary
/// Les règles de la partie.
public Partie(IRegles regles)
{
- this.regles = regles;
+ this.regles = regles;
}
///
@@ -151,31 +140,44 @@ namespace CoreLibrary
///
public void Jouer()
{
- /// Ajout des joueurs jusqu'à atteindre le nombre maximum de joueurs défini par les règles
- AjouterJoueurs();
- regles.CommencerLaPartie();
- QuandDebutPartie();
-
- Joueur joueurCourant = regles.JoueurCourant();
- Plateau plateauCourant = joueurCourant.Plateau;
-
- QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs());
+ JoueurBuilder joueurBuilder = new JoueurBuilder();
+ joueurBuilder.ConstruireJoueur += Joueur;
+ 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);
- QuandNouveauCode(code);
+ private void Tour(Object? sender, JouerCodeEventArgs e)
+ {
+ (Joueur joueurCourant, Plateau plateauCourant) = regles.JoueurCourant();
+ plateauCourant.AjouterCode(e.Code);
+ QuandNouveauCode(e.Code);
if(regles.EstTerminee())
{
@@ -186,46 +188,11 @@ namespace CoreLibrary
regles.PasserLaMain();
QuandPasserMain();
}
-
}
private void Terminee()
{
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);
- }
- }
- }
}
}