diff --git a/Sources/CoreLibrary/Core/Code.cs b/Sources/CoreLibrary/Core/Code.cs
index 33b2ea2..68e0f41 100644
--- a/Sources/CoreLibrary/Core/Code.cs
+++ b/Sources/CoreLibrary/Core/Code.cs
@@ -1,31 +1,26 @@
using CoreLibrary.Exceptions;
-using System.ComponentModel;
+using System.Collections.ObjectModel;
namespace CoreLibrary.Core
{
///
/// Classe représentant un code composé de jetons et ses différentes méthodes.
///
- public class Code : INotifyPropertyChanged
+ public class Code
{
- public event PropertyChangedEventHandler? PropertyChanged;
+ private readonly ObservableCollection lesJetons = new ObservableCollection();
- void OnPropertyChanged(string propertyName)
- {
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
- }
- }
-
- private readonly Jeton?[] lesJetons;
+ ///
+ /// Le nombre maximum de jetons dans le code.
+ ///
+ public int NbJetonsMax { get; private set; }
///
/// Le nombre de jetons dans le code.
///
- public int NbJetons { get; private set; } = 0;
+ public int NbJetons { get => lesJetons.Count; }
- public IEnumerable Jetons => lesJetons;
+ public ObservableCollection Jetons => lesJetons;
///
/// Initialise une nouvelle instance de la classe avec la longueur de code spécifiée.
@@ -34,12 +29,12 @@ namespace CoreLibrary.Core
/// Levée lorsque la longueur du code spécifiée est inférieure ou égale à zéro.
public Code(int tailleCode)
{
+ NbJetonsMax = tailleCode;
+
if (tailleCode <= 0)
{
throw new TailleCodeException(tailleCode);
}
-
- lesJetons = new Jeton?[tailleCode];
}
///
@@ -54,7 +49,10 @@ namespace CoreLibrary.Core
throw new TailleCodeException(jetons.Count());
}
- lesJetons = new Jeton?[jetons.Count()];
+ NbJetonsMax = jetons.Count();
+
+
+
foreach (Jeton jeton in jetons)
{
AjouterJeton(jeton);
@@ -68,13 +66,12 @@ namespace CoreLibrary.Core
/// Levée lorsque le code est plein.
public void AjouterJeton(Jeton jeton)
{
- if (NbJetons == TailleMaximale())
+ if (lesJetons.Count == NbJetonsMax)
{
throw new CodeCompletException();
}
- lesJetons[NbJetons++] = jeton;
- OnPropertyChanged(nameof(Jetons));
+ lesJetons.Add(jeton);
}
///
@@ -83,13 +80,12 @@ namespace CoreLibrary.Core
/// Levée lorsque le code est vide.
public void SupprimerDernierJeton()
{
- if (NbJetons == 0)
+ if (lesJetons.Count == 0)
{
throw new CodeVideException();
}
- lesJetons[--NbJetons] = null;
- OnPropertyChanged(nameof(Jetons));
+ lesJetons.RemoveAt(lesJetons.Count - 1);
}
///
@@ -100,13 +96,13 @@ namespace CoreLibrary.Core
/// 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é
public Jeton RecupererJeton(int indice)
{
- if (indice < 0 || indice >= TailleMaximale())
- throw new IndiceCodeException(indice, NbJetons - 1);
+ if (indice < 0 || indice >= NbJetonsMax)
+ throw new IndiceCodeException(indice, lesJetons.Count - 1);
Jeton? jeton = lesJetons[indice];
if (!jeton.HasValue)
- throw new IndiceCodeException(indice, NbJetons - 1);
+ throw new IndiceCodeException(indice, lesJetons.Count - 1);
return jeton.Value;
}
@@ -117,16 +113,7 @@ namespace CoreLibrary.Core
/// True si le code est complet, sinon False.
public bool EstComplet()
{
- return NbJetons == lesJetons.Length;
- }
-
- ///
- /// Recupère la taille maximale du code.
- ///
- /// Taille maximale du code.
- public int TailleMaximale()
- {
- return lesJetons.Length;
+ return lesJetons.Count == NbJetonsMax;
}
///
@@ -164,8 +151,6 @@ namespace CoreLibrary.Core
{
Jeton? sonJeton = sesJetons[i];
-
-
if (sonJeton.HasValue && mesJetons.Contains(sonJeton.Value))
{
indicateurs = indicateurs.Append(Indicateur.BONNECOULEUR).ToArray();
diff --git a/Sources/CoreLibrary/Core/Plateau.cs b/Sources/CoreLibrary/Core/Plateau.cs
index 394b12f..c3d1f3e 100644
--- a/Sources/CoreLibrary/Core/Plateau.cs
+++ b/Sources/CoreLibrary/Core/Plateau.cs
@@ -82,9 +82,9 @@ namespace CoreLibrary.Core
/// Levée lorsque le code fourni est incomplet.
public void AjouterCode(Code code)
{
- if (code.TailleMaximale() != tailleCode)
+ if (code.NbJetonsMax != tailleCode)
{
- throw new CodeInvalideException(code.TailleMaximale(), tailleCode);
+ throw new CodeInvalideException(code.NbJetonsMax, tailleCode);
}
if (!code.EstComplet())
@@ -111,9 +111,9 @@ namespace CoreLibrary.Core
/// Levée lorsque le code fourni est incomplet.
public bool EstBonCode(Code code)
{
- if (code.TailleMaximale() != tailleCode)
+ if (code.NbJetonsMax != tailleCode)
{
- throw new CodeInvalideException(code.TailleMaximale(), tailleCode);
+ throw new CodeInvalideException(code.NbJetonsMax, tailleCode);
}
if (!code.EstComplet())
diff --git a/Sources/CoreLibrary/Regles/ReglesClassiques.cs b/Sources/CoreLibrary/Regles/ReglesClassiques.cs
index 7c929c2..d4bd89f 100644
--- a/Sources/CoreLibrary/Regles/ReglesClassiques.cs
+++ b/Sources/CoreLibrary/Regles/ReglesClassiques.cs
@@ -1,8 +1,4 @@
-using CoreLibrary.Core;
-using CoreLibrary.Exceptions;
-using CoreLibrary.Joueurs;
-
-namespace CoreLibrary.Regles
+namespace CoreLibrary.Regles
{
///
/// Classe définissant les règles classiques du jeu.
diff --git a/Sources/MauiSpark/Pages/Plateau.xaml b/Sources/MauiSpark/Pages/Plateau.xaml
index 60e72d8..bf2362b 100644
--- a/Sources/MauiSpark/Pages/Plateau.xaml
+++ b/Sources/MauiSpark/Pages/Plateau.xaml
@@ -96,11 +96,29 @@
-
-
-
-
-
+
+
+
+
+
+
+
+