Nouveau joueur avec stats
continuous-integration/drone/push Build is failing Details

master
nicolas.barbosa 11 months ago
parent 7833e48ebd
commit 7ec7ae63c4

@ -1,6 +1,4 @@
using CoreLibrary.Core; namespace CoreLibrary.Joueurs
namespace CoreLibrary.Joueurs
{ {
/// <summary> /// <summary>
/// Classe représentant un joueur. /// Classe représentant un joueur.
@ -11,20 +9,32 @@ namespace CoreLibrary.Joueurs
/// Le nom du joueur. /// Le nom du joueur.
/// </summary> /// </summary>
public string Nom { get; private init; } public string Nom { get; private init; }
/// <summary>
/// Le plateau du joueur. public int NbCoutTotal { get; set; }
/// </summary> public int NbPartieGagnee { get; set; }
public Plateau Plateau { get; private init; } public int NbPartieEgalite { get; set; }
public int NbPartiePerdue { get; set; }
/// <summary> /// <summary>
/// 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
/// </summary> /// </summary>
/// <param name="nom">Le nom du joueur.</param> /// <param name="nom">Le nom du joueur.</param>
/// <param name="plateau">Le plateau du joueur.</param> public Joueur(string nom)
public Joueur(string nom, Plateau plateau) {
Nom = nom;
NbCoutTotal = 0;
NbPartieGagnee = 0;
NbPartieEgalite = 0;
NbPartiePerdue = 0;
}
public Joueur(string nom, int nbCoutTotal, int nbPartieGagnee, int nbPartieEgalite, int nbPartiePerdue)
{ {
Nom = nom; Nom = nom;
Plateau = plateau; NbCoutTotal = nbCoutTotal;
NbPartieGagnee = nbPartieGagnee;
NbPartieEgalite = nbPartieEgalite;
NbPartiePerdue = nbPartiePerdue;
} }
} }
} }

@ -160,8 +160,7 @@ namespace CoreLibrary
// Boucle principale du jeu qui dure jusqu'à qu'une condition de fin soit déclenchée // Boucle principale du jeu qui dure jusqu'à qu'une condition de fin soit déclenchée
while (!regles.EstTerminee()) while (!regles.EstTerminee())
{ {
Joueur joueurCourant = regles.JoueurCourant(); (Joueur joueurCourant, Plateau plateauCourant) = regles.JoueurCourant();
Plateau plateauCourant = joueurCourant.Plateau;
QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs()); QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs());

@ -44,7 +44,7 @@ namespace CoreLibrary.Regles
/// Récupère le joueur courant. /// Récupère le joueur courant.
/// </summary> /// </summary>
/// <returns>Le joueur courant.</returns> /// <returns>Le joueur courant.</returns>
Joueur JoueurCourant(); (Joueur, Plateau) JoueurCourant();
/// <summary> /// <summary>
/// Passe la main au joueur suivant. /// Passe la main au joueur suivant.

@ -1,171 +1,174 @@
using CoreLibrary.Core; using CoreLibrary.Core;
using CoreLibrary.Exceptions; using CoreLibrary.Exceptions;
using CoreLibrary.Joueurs; using CoreLibrary.Joueurs;
namespace CoreLibrary.Regles namespace CoreLibrary.Regles
{ {
/// <summary> /// <summary>
/// Classe définissant les règles classiques du jeu. /// Classe définissant les règles classiques du jeu.
/// </summary> /// </summary>
public class ReglesClassiques : IRegles public class ReglesClassiques : IRegles
{ {
private int nbJoueurs = 0; private int nbJoueurs = 0;
private int? joueurCourant; private int? joueurCourant;
private readonly Joueur[] joueurs; private readonly Joueur[] joueurs;
private readonly Plateau[] plateaux;
/// <summary>
/// Le nom des règles. /// <summary>
/// </summary> /// Le nom des règles.
public string Nom { get => "Règles classiques"; } /// </summary>
public string Nom { get => "Règles classiques"; }
/// <summary>
/// Le nombre maximum de tour. /// <summary>
/// </summary> /// Le nombre maximum de tour.
public int TourMaximum { get => 12; } /// </summary>
public int TourMaximum { get => 12; }
/// <summary>
/// La taille maximale d'un code. /// <summary>
/// </summary> /// La taille maximale d'un code.
/// </summary>
public int TailleCodeMaximum { get => 4; }
/// <summary> public int TailleCodeMaximum { get => 4; }
/// Le nombre de joueurs actuels dans le jeu. /// <summary>
/// </summary> /// Le nombre de joueurs actuels dans le jeu.
/// </summary>
public int NbJoueurs { get => nbJoueurs; } public int NbJoueurs { get => nbJoueurs; }
/// <summary> /// <summary>
/// Me nombre maximum de joueurs possibles pour le jeu. /// Me nombre maximum de joueurs possibles pour le jeu.
/// </summary> /// </summary>
public int NbJoueursMaximum { get => 2; } public int NbJoueursMaximum { get => 2; }
/// <summary> /// <summary>
/// Initialise une nouvelle instance de la classe <see cref="ReglesClassiques"/> /// Initialise une nouvelle instance de la classe <see cref="ReglesClassiques"/>
/// </summary> /// </summary>
public ReglesClassiques() public ReglesClassiques()
{ {
joueurs = new Joueur[NbJoueursMaximum]; joueurs = new Joueur[NbJoueursMaximum];
} plateaux = new Plateau[NbJoueursMaximum];
}
/// <summary>
/// Ajoute un joueur avec le nom spécifié. /// <summary>
/// </summary> /// Ajoute un joueur avec le nom spécifié.
/// <param name="nom">Le nom du joueur à ajouter.</param> /// </summary>
/// <returns>Le joueur ajouté.</returns> /// <param name="nom">Le nom du joueur à ajouter.</param>
public Joueur AjouterJoueur(string nom) /// <returns>Le joueur ajouté.</returns>
{ public Joueur AjouterJoueur(string nom)
Joueur joueur = new Joueur(nom, new Plateau(TailleCodeMaximum, TourMaximum)); {
joueurs[nbJoueurs++] = joueur; Joueur joueur = new Joueur(nom);
return joueur; joueurs[nbJoueurs] = joueur;
} plateaux[nbJoueurs++] = new Plateau(TailleCodeMaximum, TourMaximum);
return joueur;
/// <summary> }
/// Obtient le joueur dont c'est actuellement le tour.
/// </summary> /// <summary>
/// <returns>Le joueur actuel.</returns> /// Obtient le joueur dont c'est actuellement le tour.
/// <exception cref="PartieNonCommenceeException">Levée lorsque la partie n'a pas commencée.</exception> /// </summary>
/// <returns>Le joueur actuel.</returns>
public Joueur JoueurCourant() /// <exception cref="PartieNonCommenceeException">Levée lorsque la partie n'a pas commencée.</exception>
{
if (!joueurCourant.HasValue) public (Joueur, Plateau) JoueurCourant()
throw new PartieNonCommenceeException(); {
if (!joueurCourant.HasValue)
return joueurs[joueurCourant.Value]; throw new PartieNonCommenceeException();
}
return (joueurs[joueurCourant.Value], plateaux[joueurCourant.Value]);
/// <summary> }
/// Passe la main au joueur suivant.
/// </summary> /// <summary>
/// <exception cref="PartieNonCommenceeException">Levée lorsque la partie n'a pas commmencée.</exception> /// Passe la main au joueur suivant.
public void PasserLaMain() /// </summary>
{ /// <exception cref="PartieNonCommenceeException">Levée lorsque la partie n'a pas commmencée.</exception>
if (!joueurCourant.HasValue) public void PasserLaMain()
{ {
throw new PartieNonCommenceeException(); if (!joueurCourant.HasValue)
} {
throw new PartieNonCommenceeException();
++joueurCourant; }
if (joueurCourant >= joueurs.Length) ++joueurCourant;
{
joueurCourant = 0; if (joueurCourant >= joueurs.Length)
} {
joueurCourant = 0;
} }
/// <summary> }
/// Génère un nouveau code respectant les règles classiques.
/// </summary> /// <summary>
/// <returns>Le code généré.</returns> /// Génère un nouveau code respectant les règles classiques.
public Code GenererCode() /// </summary>
{ /// <returns>Le code généré.</returns>
return new Code(TailleCodeMaximum); public Code GenererCode()
} {
return new Code(TailleCodeMaximum);
/// <summary> }
/// Démarre la partie en décidant que le premier joueur commence.
/// </summary> /// <summary>
public void CommencerLaPartie() /// Démarre la partie en décidant que le premier joueur commence.
{ /// </summary>
joueurCourant = 0; public void CommencerLaPartie()
} {
joueurCourant = 0;
/// <summary> }
/// Vérifie si la partie est terminée.
/// </summary> /// <summary>
/// <returns>True si la partie est terminée, sinon False.</returns> /// Vérifie si la partie est terminée.
public bool EstTerminee() /// </summary>
{ /// <returns>True si la partie est terminée, sinon False.</returns>
if (!joueurCourant.HasValue || joueurCourant != 0) public bool EstTerminee()
return false; {
if (!joueurCourant.HasValue || joueurCourant != 0)
if (JoueurCourant().Plateau.Tour > TourMaximum) return false;
return true;
if (JoueurCourant().Item2.Tour > TourMaximum)
for (int i = 0; i < joueurs.Length; ++i) return true;
{
if (joueurs[i].Plateau.Victoire) for (int i = 0; i < joueurs.Length; ++i)
return true; {
} if (plateaux[i].Victoire)
return true;
return false; }
}
return false;
/// <summary> }
/// Obtient les joueurs gagnants de la partie.
/// </summary> /// <summary>
/// <returns>La liste des joueurs gagnants.</returns> /// Obtient les joueurs gagnants de la partie.
public IEnumerable<Joueur> Gagnants() /// </summary>
{ /// <returns>La liste des joueurs gagnants.</returns>
Joueur[] gagnants = []; public IEnumerable<Joueur> Gagnants()
for (int i = 0; i < joueurs.Length; ++i) {
{ Joueur[] gagnants = [];
if (joueurs[i].Plateau.Victoire) for (int i = 0; i < joueurs.Length; ++i)
{ {
gagnants = gagnants.Append(joueurs[i]).ToArray(); if (plateaux[i].Victoire)
} {
} gagnants = gagnants.Append(joueurs[i]).ToArray();
}
return gagnants; }
}
return gagnants;
/// <summary> }
/// Obtient les joueurs perdants de la partie.
/// </summary> /// <summary>
/// <returns>La liste des joueurs perdants.</returns> /// Obtient les joueurs perdants de la partie.
public IEnumerable<Joueur> Perdants() /// </summary>
{ /// <returns>La liste des joueurs perdants.</returns>
Joueur[] perdants = []; public IEnumerable<Joueur> Perdants()
for (int i = 0; i < joueurs.Length; ++i) {
{ Joueur[] perdants = [];
if (!joueurs[i].Plateau.Victoire) for (int i = 0; i < joueurs.Length; ++i)
{ {
perdants = perdants.Append(joueurs[i]).ToArray(); if (!plateaux[i].Victoire)
} {
} perdants = perdants.Append(joueurs[i]).ToArray();
}
return perdants; }
}
} return perdants;
} }
}
}

Loading…
Cancel
Save