diff --git a/Sources/CoreLibrary/Joueurs/Joueur.cs b/Sources/CoreLibrary/Joueurs/Joueur.cs
index 7d8e484..7838b76 100644
--- a/Sources/CoreLibrary/Joueurs/Joueur.cs
+++ b/Sources/CoreLibrary/Joueurs/Joueur.cs
@@ -1,6 +1,4 @@
-using CoreLibrary.Core;
-
-namespace CoreLibrary.Joueurs
+namespace CoreLibrary.Joueurs
{
///
/// Classe représentant un joueur.
@@ -11,20 +9,32 @@ namespace CoreLibrary.Joueurs
/// Le nom du joueur.
///
public string Nom { get; private init; }
- ///
- /// Le plateau du joueur.
- ///
- public Plateau Plateau { get; private init; }
+
+ public int NbCoutTotal { get; set; }
+ public int NbPartieGagnee { get; set; }
+ public int NbPartieEgalite { get; set; }
+ public int NbPartiePerdue { get; set; }
///
- /// Crée une nouvelle instance de joueur avec un nom et un plateau spécifié.
+ /// Crée une nouvelle instance de joueur avec un nom
///
/// Le nom du joueur.
- /// Le plateau du joueur.
- public Joueur(string nom, Plateau plateau)
+ public Joueur(string nom)
+ {
+ Nom = nom;
+ NbCoutTotal = 0;
+ NbPartieGagnee = 0;
+ NbPartieEgalite = 0;
+ NbPartiePerdue = 0;
+ }
+
+ public Joueur(string nom, int nbCoutTotal, int nbPartieGagnee, int nbPartieEgalite, int nbPartiePerdue)
{
Nom = nom;
- Plateau = plateau;
+ NbCoutTotal = nbCoutTotal;
+ NbPartieGagnee = nbPartieGagnee;
+ NbPartieEgalite = nbPartieEgalite;
+ NbPartiePerdue = nbPartiePerdue;
}
}
}
diff --git a/Sources/CoreLibrary/Partie.cs b/Sources/CoreLibrary/Partie.cs
index 3ea6cfe..c56a8bd 100644
--- a/Sources/CoreLibrary/Partie.cs
+++ b/Sources/CoreLibrary/Partie.cs
@@ -160,8 +160,7 @@ namespace CoreLibrary
// Boucle principale du jeu qui dure jusqu'à qu'une condition de fin soit déclenchée
while (!regles.EstTerminee())
{
- Joueur joueurCourant = regles.JoueurCourant();
- Plateau plateauCourant = joueurCourant.Plateau;
+ (Joueur joueurCourant, Plateau plateauCourant) = regles.JoueurCourant();
QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs());
diff --git a/Sources/CoreLibrary/Regles/IRegles.cs b/Sources/CoreLibrary/Regles/IRegles.cs
index bb0945f..a66b5a3 100644
--- a/Sources/CoreLibrary/Regles/IRegles.cs
+++ b/Sources/CoreLibrary/Regles/IRegles.cs
@@ -44,7 +44,7 @@ namespace CoreLibrary.Regles
/// Récupère le joueur courant.
///
/// Le joueur courant.
- Joueur JoueurCourant();
+ (Joueur, Plateau) JoueurCourant();
///
/// Passe la main au joueur suivant.
diff --git a/Sources/CoreLibrary/Regles/ReglesClassiques.cs b/Sources/CoreLibrary/Regles/ReglesClassiques.cs
index 7ef929c..e329a83 100644
--- a/Sources/CoreLibrary/Regles/ReglesClassiques.cs
+++ b/Sources/CoreLibrary/Regles/ReglesClassiques.cs
@@ -1,171 +1,174 @@
-using CoreLibrary.Core;
-using CoreLibrary.Exceptions;
-using CoreLibrary.Joueurs;
-
-namespace CoreLibrary.Regles
-{
- ///
- /// Classe définissant les règles classiques du jeu.
- ///
- public class ReglesClassiques : IRegles
- {
- private int nbJoueurs = 0;
- private int? joueurCourant;
- private readonly Joueur[] joueurs;
-
- ///
- /// Le nom des règles.
- ///
- public string Nom { get => "Règles classiques"; }
-
- ///
- /// Le nombre maximum de tour.
- ///
- public int TourMaximum { get => 12; }
-
- ///
- /// La taille maximale d'un code.
- ///
-
- public int TailleCodeMaximum { get => 4; }
- ///
- /// Le nombre de joueurs actuels dans le jeu.
- ///
-
+using CoreLibrary.Core;
+using CoreLibrary.Exceptions;
+using CoreLibrary.Joueurs;
+
+namespace CoreLibrary.Regles
+{
+ ///
+ /// Classe définissant les règles classiques du jeu.
+ ///
+ public class ReglesClassiques : IRegles
+ {
+ private int nbJoueurs = 0;
+ private int? joueurCourant;
+ private readonly Joueur[] joueurs;
+ private readonly Plateau[] plateaux;
+
+ ///
+ /// Le nom des règles.
+ ///
+ public string Nom { get => "Règles classiques"; }
+
+ ///
+ /// Le nombre maximum de tour.
+ ///
+ public int TourMaximum { get => 12; }
+
+ ///
+ /// La taille maximale d'un code.
+ ///
+
+ public int TailleCodeMaximum { get => 4; }
+ ///
+ /// Le nombre de joueurs actuels dans le jeu.
+ ///
+
public int NbJoueurs { get => nbJoueurs; }
- ///
- /// Me nombre maximum de joueurs possibles pour le jeu.
- ///
-
- public int NbJoueursMaximum { get => 2; }
-
-
- ///
- /// Initialise une nouvelle instance de la classe
- ///
- public ReglesClassiques()
- {
- joueurs = new Joueur[NbJoueursMaximum];
- }
-
- ///
- /// Ajoute un joueur avec le nom spécifié.
- ///
- /// Le nom du joueur à ajouter.
- /// Le joueur ajouté.
- public Joueur AjouterJoueur(string nom)
- {
- Joueur joueur = new Joueur(nom, new Plateau(TailleCodeMaximum, TourMaximum));
- joueurs[nbJoueurs++] = joueur;
- return joueur;
- }
-
- ///
- /// Obtient le joueur dont c'est actuellement le tour.
- ///
- /// Le joueur actuel.
- /// Levée lorsque la partie n'a pas commencée.
-
- public Joueur JoueurCourant()
- {
- if (!joueurCourant.HasValue)
- throw new PartieNonCommenceeException();
-
- return joueurs[joueurCourant.Value];
- }
-
- ///
- /// Passe la main au joueur suivant.
- ///
- /// Levée lorsque la partie n'a pas commmencée.
- public void PasserLaMain()
- {
- if (!joueurCourant.HasValue)
- {
- throw new PartieNonCommenceeException();
- }
-
- ++joueurCourant;
-
- if (joueurCourant >= joueurs.Length)
- {
- joueurCourant = 0;
- }
-
- }
-
- ///
- /// Génère un nouveau code respectant les règles classiques.
- ///
- /// Le code généré.
- public Code GenererCode()
- {
- return new Code(TailleCodeMaximum);
- }
-
- ///
- /// Démarre la partie en décidant que le premier joueur commence.
- ///
- public void CommencerLaPartie()
- {
- joueurCourant = 0;
- }
-
- ///
- /// Vérifie si la partie est terminée.
- ///
- /// True si la partie est terminée, sinon False.
- public bool EstTerminee()
- {
- if (!joueurCourant.HasValue || joueurCourant != 0)
- return false;
-
- if (JoueurCourant().Plateau.Tour > TourMaximum)
- return true;
-
- for (int i = 0; i < joueurs.Length; ++i)
- {
- if (joueurs[i].Plateau.Victoire)
- return true;
- }
-
- return false;
- }
-
- ///
- /// Obtient les joueurs gagnants de la partie.
- ///
- /// La liste des joueurs gagnants.
- public IEnumerable Gagnants()
- {
- Joueur[] gagnants = [];
- for (int i = 0; i < joueurs.Length; ++i)
- {
- if (joueurs[i].Plateau.Victoire)
- {
- gagnants = gagnants.Append(joueurs[i]).ToArray();
- }
- }
-
- return gagnants;
- }
-
- ///
- /// Obtient les joueurs perdants de la partie.
- ///
- /// La liste des joueurs perdants.
- public IEnumerable Perdants()
- {
- Joueur[] perdants = [];
- for (int i = 0; i < joueurs.Length; ++i)
- {
- if (!joueurs[i].Plateau.Victoire)
- {
- perdants = perdants.Append(joueurs[i]).ToArray();
- }
- }
-
- return perdants;
- }
- }
-}
+ ///
+ /// Me nombre maximum de joueurs possibles pour le jeu.
+ ///
+
+ public int NbJoueursMaximum { get => 2; }
+
+
+ ///
+ /// Initialise une nouvelle instance de la classe
+ ///
+ public ReglesClassiques()
+ {
+ joueurs = new Joueur[NbJoueursMaximum];
+ plateaux = new Plateau[NbJoueursMaximum];
+ }
+
+ ///
+ /// Ajoute un joueur avec le nom spécifié.
+ ///
+ /// Le nom du joueur à ajouter.
+ /// Le joueur ajouté.
+ public Joueur AjouterJoueur(string nom)
+ {
+ Joueur joueur = new Joueur(nom);
+ joueurs[nbJoueurs] = joueur;
+ plateaux[nbJoueurs++] = new Plateau(TailleCodeMaximum, TourMaximum);
+ return joueur;
+ }
+
+ ///
+ /// Obtient le joueur dont c'est actuellement le tour.
+ ///
+ /// Le joueur actuel.
+ /// Levée lorsque la partie n'a pas commencée.
+
+ public (Joueur, Plateau) JoueurCourant()
+ {
+ if (!joueurCourant.HasValue)
+ throw new PartieNonCommenceeException();
+
+ return (joueurs[joueurCourant.Value], plateaux[joueurCourant.Value]);
+ }
+
+ ///
+ /// Passe la main au joueur suivant.
+ ///
+ /// Levée lorsque la partie n'a pas commmencée.
+ public void PasserLaMain()
+ {
+ if (!joueurCourant.HasValue)
+ {
+ throw new PartieNonCommenceeException();
+ }
+
+ ++joueurCourant;
+
+ if (joueurCourant >= joueurs.Length)
+ {
+ joueurCourant = 0;
+ }
+
+ }
+
+ ///
+ /// Génère un nouveau code respectant les règles classiques.
+ ///
+ /// Le code généré.
+ public Code GenererCode()
+ {
+ return new Code(TailleCodeMaximum);
+ }
+
+ ///
+ /// Démarre la partie en décidant que le premier joueur commence.
+ ///
+ public void CommencerLaPartie()
+ {
+ joueurCourant = 0;
+ }
+
+ ///
+ /// Vérifie si la partie est terminée.
+ ///
+ /// True si la partie est terminée, sinon False.
+ public bool EstTerminee()
+ {
+ if (!joueurCourant.HasValue || joueurCourant != 0)
+ return false;
+
+ if (JoueurCourant().Item2.Tour > TourMaximum)
+ return true;
+
+ for (int i = 0; i < joueurs.Length; ++i)
+ {
+ if (plateaux[i].Victoire)
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// Obtient les joueurs gagnants de la partie.
+ ///
+ /// La liste des joueurs gagnants.
+ public IEnumerable Gagnants()
+ {
+ Joueur[] gagnants = [];
+ for (int i = 0; i < joueurs.Length; ++i)
+ {
+ if (plateaux[i].Victoire)
+ {
+ gagnants = gagnants.Append(joueurs[i]).ToArray();
+ }
+ }
+
+ return gagnants;
+ }
+
+ ///
+ /// Obtient les joueurs perdants de la partie.
+ ///
+ /// La liste des joueurs perdants.
+ public IEnumerable Perdants()
+ {
+ Joueur[] perdants = [];
+ for (int i = 0; i < joueurs.Length; ++i)
+ {
+ if (!plateaux[i].Victoire)
+ {
+ perdants = perdants.Append(joueurs[i]).ToArray();
+ }
+ }
+
+ return perdants;
+ }
+ }
+}