Documentation Plateau

master
Pauline PRADY 11 months ago
parent c6a1fb4a17
commit 8d293abd2b

@ -5,33 +5,80 @@ using System.Security.Cryptography;
namespace CoreLibrary.Core namespace CoreLibrary.Core
{ {
/// <summary>
/// Classe représentant le plateau de jeu contenant les codes et les indicateurs.
/// </summary>
[DataContract] [DataContract]
public class Plateau public class Plateau
{ {
/// <summary>
/// Événement déclenché lorsqu'un code est ajouté au plateau.
/// </summary>
public event EventHandler<PlateauAjouterCodeEventArgs>? PlateauAjouterCode; public event EventHandler<PlateauAjouterCodeEventArgs>? PlateauAjouterCode;
private void QuandPlateauAjouterCode() => PlateauAjouterCode?.Invoke(this, new PlateauAjouterCodeEventArgs(this)); private void QuandPlateauAjouterCode() => PlateauAjouterCode?.Invoke(this, new PlateauAjouterCodeEventArgs(this));
/// <summary>
/// Le code secret à deviner.
/// </summary>
[DataMember] [DataMember]
private readonly Code codeSecret; private readonly Code codeSecret;
/// <summary>
/// Liste des codes ajoutés au plateau.
/// </summary>
[DataMember] [DataMember]
private readonly List<Code> codes = new List<Code>(); private readonly List<Code> codes = new List<Code>();
/// <summary>
/// Liste des listes d'indicateurs pour chaque code ajouté.
/// </summary>
[DataMember] [DataMember]
private readonly List<List<Indicateur>> indicateurs = new List<List<Indicateur>>(); private readonly List<List<Indicateur>> indicateurs = new List<List<Indicateur>>();
/// <summary>
/// Obtient le nombre de codes sur le plateau.
/// </summary>
public int Taille => codes.Count; public int Taille => codes.Count;
/// <summary>
/// Obtient la taille maximale de codes autorisée sur le plateau.
/// </summary>
[DataMember] [DataMember]
public int TailleMax { get; private init; } public int TailleMax { get; private init; }
/// <summary>
/// Obtient la taille maximale d'un code.
/// </summary>
[DataMember] [DataMember]
public int TailleMaxCode { get; private init; } public int TailleMaxCode { get; private init; }
/// <summary>
/// Indique si le plateau à atteint sa taille maximale.
/// </summary>
public bool Complet => Taille == TailleMax; public bool Complet => Taille == TailleMax;
/// <summary>
/// Indique si la victoire est atteinte.
/// </summary>
[DataMember] [DataMember]
public bool Victoire { get; private set; } = false; public bool Victoire { get; private set; } = false;
/// <summary>
/// Obtient la grille des codes et des indicateurs.
/// </summary>
public (IReadOnlyList<IReadOnlyList<Jeton>>, IReadOnlyList<IReadOnlyList<Indicateur>>) Grille => ( public (IReadOnlyList<IReadOnlyList<Jeton>>, IReadOnlyList<IReadOnlyList<Indicateur>>) Grille => (
codes.Select(code => code.Jetons).ToList(), codes.Select(code => code.Jetons).ToList(),
indicateurs indicateurs
); );
/// <summary>
/// Constructeur de plateau avec une taille de code et une taille de plateau spécifiées.
/// </summary>
/// <param name="tailleCode">La taille maximale d'un code.</param>
/// <param name="taillePlateau">La taille maximale du plateau.</param>
/// <exception cref="TailleCodeException">Lancée si la taille du code est négative ou nulle.</exception>
/// <exception cref="TailleGrilleException">Lancée si la taille du plateau spécifiée est négative ou nulle.</exception>
public Plateau(int tailleCode, int taillePlateau) public Plateau(int tailleCode, int taillePlateau)
{ {
if (tailleCode < 0) if (tailleCode < 0)
@ -46,6 +93,10 @@ namespace CoreLibrary.Core
codeSecret = GenererCodeSecret(); codeSecret = GenererCodeSecret();
} }
/// <summary>
/// Génère un code secret aléatoire.
/// </summary>
/// <returns>Renvoie le code secret généré.</returns>
private Code GenererCodeSecret() private Code GenererCodeSecret()
{ {
Code code = new Code(TailleMaxCode); Code code = new Code(TailleMaxCode);
@ -61,6 +112,12 @@ namespace CoreLibrary.Core
return code; return code;
} }
/// <summary>
/// Ajoute un code au plateau et compare avec le code secret.
/// </summary>
/// <param name="code">Le code à ajouter.</param>
/// <exception cref="CodeIncompletException">Lancée si le code à ajouter n'est pas complet.</exception>
/// <exception cref="GrilleCompleteException">Lancée si le plateau est déjà complet.</exception>
public void AjouterCode(Code code) public void AjouterCode(Code code)
{ {
if (!code.Complet) if (!code.Complet)

Loading…
Cancel
Save