Ajout de la doc pour la class code
continuous-integration/drone/push Build is passing Details

master
Camille TURPIN-ETIENNE 12 months ago
parent 0aa0621de4
commit a91756c7e0

@ -1,13 +1,28 @@
using CoreLibrary.Exceptions; using CoreLibrary.Exceptions;
namespace CoreLibrary namespace CoreLibrary
{ {
/// <summary>
/// Représente un code composé de jetons.
/// </summary>
public class Code public class Code
{ {
private readonly Jeton?[] lesJetons; private readonly Jeton?[] lesJetons;
/// <summary>
/// Obtenir le nombre de jetons dans le code.
/// </summary>
public int NbJetons { get; private set; } = 0; public int NbJetons { get; private set; } = 0;
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="Code"/> avec la longueur de code spécifiée.
/// </summary>
/// <param name="tailleCode">La longueur du code.</param>
/// <exception cref="TailleCodeException">Levée lorsque la longueur du code spécifiée est inférieure ou égale à zéro.</exception>
public Code(int tailleCode) public Code(int tailleCode)
{ {
if(tailleCode <= 0) if(tailleCode <= 0)
@ -18,6 +33,11 @@ namespace CoreLibrary
lesJetons = new Jeton?[tailleCode]; lesJetons = new Jeton?[tailleCode];
} }
/// <summary>
/// Initialise une nouvelle instance de la class <see cref="Code"/> avec les jetons spécifiés.
/// </summary>
/// <param name="jetons">Les jetons pour initaliser le code.</param>
/// <exception cref="TailleCodeException">Levée lorsque la collection de jetons spécifiée est vide.</exception>
public Code(IEnumerable<Jeton> jetons) public Code(IEnumerable<Jeton> jetons)
{ {
if (jetons.Count() == 0) if (jetons.Count() == 0)
@ -32,6 +52,11 @@ namespace CoreLibrary
} }
} }
/// <summary>
/// Ajoute un jeton au code.
/// </summary>
/// <param name="jeton">Le jeton à ajouter</param>
/// <exception cref="CodeCompletException">Levée lorsque le code est plein.</exception>
public void AjouterJeton(Jeton jeton) public void AjouterJeton(Jeton jeton)
{ {
if (NbJetons == TailleMaximale()) if (NbJetons == TailleMaximale())
@ -42,6 +67,10 @@ namespace CoreLibrary
lesJetons[NbJetons++] = jeton; lesJetons[NbJetons++] = jeton;
} }
/// <summary>
/// Supprime le dernier jeton ajouté au code.
/// </summary>
/// <exception cref="CodeVideException">Levée lorsque le code est vide.</exception>
public void SupprimerDernierJeton() public void SupprimerDernierJeton()
{ {
if(NbJetons == 0) if(NbJetons == 0)
@ -52,6 +81,12 @@ namespace CoreLibrary
lesJetons[--NbJetons] = null; lesJetons[--NbJetons] = null;
} }
/// <summary>
/// Récupère le jeton à l'indice spécifié dans le code.
/// </summary>
/// <param name="indice">L'indice du jeton a récupéré.</param>
/// <returns>Le jeton situé à l'indice spécifié.</returns>
/// <exception cref="IndiceCodeException">Levée lorsque l'indice est supérieur à la taille maximale du code, inférieur à 0 ou qu'il n'y a pas de jeton à l'indice spécifié</exception>
public Jeton RecupererJeton(int indice) public Jeton RecupererJeton(int indice)
{ {
if(indice < 0 || indice > TailleMaximale()) if(indice < 0 || indice > TailleMaximale())
@ -65,33 +100,57 @@ namespace CoreLibrary
return jeton.Value; return jeton.Value;
} }
/// <summary>
/// Récupère une énumération des jetons dans le code.
/// </summary>
/// <returns>Enumération des jetons du code</returns>
public IEnumerable<Jeton?> Jetons() public IEnumerable<Jeton?> Jetons()
{ {
return lesJetons; return lesJetons;
} }
/// <summary>
/// Vérifie si le code est complet.
/// </summary>
/// <returns>True si le code est complet, sinon False.</returns>
public bool EstComplet() public bool EstComplet()
{ {
return NbJetons == lesJetons.Length; return NbJetons == lesJetons.Length;
} }
/// <summary>
/// Recupère la taille maximal du code.
/// </summary>
/// <returns>Taille maximal du code.</returns>
public int TailleMaximale() public int TailleMaximale()
{ {
return lesJetons.Length; return lesJetons.Length;
} }
/// <summary>
/// Compare le code avec un autre code et génère des indcateurs de correspondance.
/// </summary>
/// <param name="autreCode">Le code à comparer avec le code actuel</param>
/// <returns>Enumération d'indicateurs de correspondance entre les deux codes.</returns>
public IEnumerable<Indicateur> Comparer(Code autreCode) public IEnumerable<Indicateur> Comparer(Code autreCode)
{ {
// Mon code est le code correct, l'autre code est celui qui teste // Mon code est le code correct, l'autre code est celui qui teste
Indicateur[] indicateurs = []; Indicateur[] indicateurs = [];
/// Vérifie si les deux codes sont complets
if (!EstComplet() || !autreCode.EstComplet()) if (!EstComplet() || !autreCode.EstComplet())
return indicateurs; return indicateurs;
/// Convertie les jetons des codes en tableaux.
Jeton?[] mesJetons = Jetons().ToArray(); Jeton?[] mesJetons = Jetons().ToArray();
Jeton?[] sesJetons = autreCode.Jetons().ToArray(); Jeton?[] sesJetons = autreCode.Jetons().ToArray();
/// Compare les jetons pour détecter les ceux à la bonnes places
/// S'ils sont à la bonne place alors ils sont enlever du tableau et un indicateur BONNEPLACE est ajouter au tableau des indicateurs.
for (int i = 0; i < mesJetons.Length; ++i) for (int i = 0; i < mesJetons.Length; ++i)
{ {
Jeton? monJeton = mesJetons[i]; Jeton? monJeton = mesJetons[i];
@ -106,6 +165,8 @@ namespace CoreLibrary
} }
/// Compare les jetons pour détecter ceux qui ont la bonne couleur.
/// S'ils ont la bonne couleur alors ils sont enlever du tableau et un indicateur BONNECOULEUR est ajouter au tableau des indicateurs.
for (int i = 0; i < sesJetons.Length; ++i) for (int i = 0; i < sesJetons.Length; ++i)
{ {
Jeton? sonJeton = sesJetons[i]; Jeton? sonJeton = sesJetons[i];

Loading…
Cancel
Save