From 9ed8196d3e2b9e9f9550076e1e0787dd37974e30 Mon Sep 17 00:00:00 2001 From: "camille.turpin-etienne" Date: Sat, 25 May 2024 11:57:51 +0200 Subject: [PATCH] Tableau bouton trier --- Sources/CoreLibrary/Core/Code.cs | 336 +++++++++--------- Sources/MauiSpark/Pages/TableauScore.xaml | 16 +- Sources/MauiSpark/Pages/TableauScore.xaml.cs | 10 +- Sources/MauiSpark/Views/CTableauScore.xaml | 28 +- Sources/MauiSpark/Views/CTableauScore.xaml.cs | 96 +++-- 5 files changed, 267 insertions(+), 219 deletions(-) diff --git a/Sources/CoreLibrary/Core/Code.cs b/Sources/CoreLibrary/Core/Code.cs index c61d1d1..6779602 100644 --- a/Sources/CoreLibrary/Core/Code.cs +++ b/Sources/CoreLibrary/Core/Code.cs @@ -1,177 +1,177 @@ -using CoreLibrary.Exceptions; - -namespace CoreLibrary.Core -{ - /// - /// Classe représentant un code composé de jetons et ses différentes méthodes. - /// - public class Code - { - private readonly Jeton?[] lesJetons; - - /// - /// Le nombre de jetons dans le code. - /// - public int NbJetons { get; private set; } = 0; - - /// - /// Initialise une nouvelle instance de la classe avec la longueur de code spécifiée. - /// - /// La longueur du code. - /// Levée lorsque la longueur du code spécifiée est inférieure ou égale à zéro. - public Code(int tailleCode) +using CoreLibrary.Exceptions; + +namespace CoreLibrary.Core +{ + /// + /// Classe représentant un code composé de jetons et ses différentes méthodes. + /// + public class Code + { + private readonly Jeton?[] lesJetons; + + /// + /// Le nombre de jetons dans le code. + /// + public int NbJetons { get; private set; } = 0; + + /// + /// Initialise une nouvelle instance de la classe avec la longueur de code spécifiée. + /// + /// La longueur du code. + /// Levée lorsque la longueur du code spécifiée est inférieure ou égale à zéro. + public Code(int tailleCode) + { + if (tailleCode <= 0) + { + throw new TailleCodeException(tailleCode); + } + + lesJetons = new Jeton?[tailleCode]; + } + + /// + /// Initialise une nouvelle instance de la classe avec les jetons spécifiés. + /// + /// Les jetons pour initaliser le code. + /// Levée lorsque la collection de jetons spécifiée est vide. + public Code(IEnumerable jetons) + { + if (!jetons.Any()) + { + throw new TailleCodeException(jetons.Count()); + } + + lesJetons = new Jeton?[jetons.Count()]; + foreach (Jeton jeton in jetons) + { + AjouterJeton(jeton); + } + } + + /// + /// Ajoute un jeton au code. + /// + /// Le jeton à ajouter. + /// Levée lorsque le code est plein. + public void AjouterJeton(Jeton jeton) + { + if (NbJetons == TailleMaximale()) + { + throw new CodeCompletException(); + } + + lesJetons[NbJetons++] = jeton; + } + + /// + /// Supprime le dernier jeton ajouté au code. + /// + /// Levée lorsque le code est vide. + public void SupprimerDernierJeton() { - if (tailleCode <= 0) - { - throw new TailleCodeException(tailleCode); - } - - lesJetons = new Jeton?[tailleCode]; - } - - /// - /// Initialise une nouvelle instance de la classe avec les jetons spécifiés. - /// - /// Les jetons pour initaliser le code. - /// Levée lorsque la collection de jetons spécifiée est vide. - public Code(IEnumerable jetons) - { - if (!jetons.Any()) - { - throw new TailleCodeException(jetons.Count()); - } - - lesJetons = new Jeton?[jetons.Count()]; - foreach (Jeton jeton in jetons) - { - AjouterJeton(jeton); - } - } - - /// - /// Ajoute un jeton au code. - /// - /// Le jeton à ajouter. - /// Levée lorsque le code est plein. - public void AjouterJeton(Jeton jeton) - { - if (NbJetons == TailleMaximale()) - { - throw new CodeCompletException(); - } - - lesJetons[NbJetons++] = jeton; - } - - /// - /// Supprime le dernier jeton ajouté au code. - /// - /// Levée lorsque le code est vide. - public void SupprimerDernierJeton() - { - if (NbJetons == 0) - { - throw new CodeVideException(); + if (NbJetons == 0) + { + throw new CodeVideException(); } - lesJetons[--NbJetons] = null; - } - - /// - /// Récupère le jeton à l'indice spécifié dans le code. - /// - /// L'indice du jeton a récupéré. - /// Le jeton situé à l'indice spécifié. - /// 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()) + lesJetons[--NbJetons] = null; + } + + /// + /// Récupère le jeton à l'indice spécifié dans le code. + /// + /// L'indice du jeton a récupéré. + /// Le jeton situé à l'indice spécifié. + /// 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); - Jeton? jeton = lesJetons[indice]; - - if (!jeton.HasValue) - throw new IndiceCodeException(indice, NbJetons - 1); - - return jeton.Value; - } - - /// - /// Récupère une liste des jetons dans le code. - /// - /// Les jetons du code. - public IEnumerable Jetons() - { - return lesJetons; - } - - - /// - /// Vérifie si le code est complet. - /// - /// 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; - } - - /// - /// Compare le code avec un autre code et génère des indicateurs. - /// - /// Le code à comparer avec le code actuel. - /// Les indicateurs de bonne place et bonne couleur entre les deux codes. - public IEnumerable Comparer(Code autreCode) - { - // Mon code est le code correct, l'autre code est celui qui teste - - Indicateur[] indicateurs = []; - - if (!autreCode.EstComplet()) - return indicateurs; - - List mesJetons = new List(Jetons()); - List sesJetons = new List(autreCode.Jetons()); - - for (int i = 0; i < mesJetons.Count; ++i) - { - Jeton? monJeton = mesJetons[i]; - Jeton? sonJeton = sesJetons[i]; - - if (monJeton.HasValue && sonJeton.HasValue && monJeton.Value.Couleur.Equals(sonJeton.Value.Couleur)) - { - indicateurs = indicateurs.Append(Indicateur.BONNEPLACE).ToArray(); - mesJetons[i] = null; - sesJetons[i] = null; - } - } - - - for (int i = 0; i < sesJetons.Count; ++i) - { + Jeton? jeton = lesJetons[indice]; + + if (!jeton.HasValue) + throw new IndiceCodeException(indice, NbJetons - 1); + + return jeton.Value; + } + + /// + /// Récupère une liste des jetons dans le code. + /// + /// Les jetons du code. + public IEnumerable Jetons() + { + return lesJetons; + } + + + /// + /// Vérifie si le code est complet. + /// + /// 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; + } + + /// + /// Compare le code avec un autre code et génère des indicateurs. + /// + /// Le code à comparer avec le code actuel. + /// Les indicateurs de bonne place et bonne couleur entre les deux codes. + public IEnumerable Comparer(Code autreCode) + { + // Mon code est le code correct, l'autre code est celui qui teste + + Indicateur[] indicateurs = []; + + if (!autreCode.EstComplet()) + return indicateurs; + + List mesJetons = new List(Jetons()); + List sesJetons = new List(autreCode.Jetons()); + + for (int i = 0; i < mesJetons.Count; ++i) + { + Jeton? monJeton = mesJetons[i]; + Jeton? sonJeton = sesJetons[i]; + + if (monJeton.HasValue && sonJeton.HasValue && monJeton.Value.Couleur.Equals(sonJeton.Value.Couleur)) + { + indicateurs = indicateurs.Append(Indicateur.BONNEPLACE).ToArray(); + mesJetons[i] = null; + sesJetons[i] = null; + } + } + + + for (int i = 0; i < sesJetons.Count; ++i) + { Jeton? sonJeton = sesJetons[i]; - if (sonJeton.HasValue && mesJetons.Contains(sonJeton.Value)) - { - indicateurs = indicateurs.Append(Indicateur.BONNECOULEUR).ToArray(); - mesJetons[mesJetons.IndexOf(sonJeton)] = null; - sesJetons[i] = null; - } - } - - return indicateurs; - } - } -} - - + if (sonJeton.HasValue && mesJetons.Contains(sonJeton.Value)) + { + indicateurs = indicateurs.Append(Indicateur.BONNECOULEUR).ToArray(); + mesJetons[mesJetons.IndexOf(sonJeton)] = null; + sesJetons[i] = null; + } + } + + return indicateurs; + } + } +} + + diff --git a/Sources/MauiSpark/Pages/TableauScore.xaml b/Sources/MauiSpark/Pages/TableauScore.xaml index c095872..8be3c70 100644 --- a/Sources/MauiSpark/Pages/TableauScore.xaml +++ b/Sources/MauiSpark/Pages/TableauScore.xaml @@ -18,15 +18,13 @@ - - - - - - - - - + + + + + + + diff --git a/Sources/MauiSpark/Pages/TableauScore.xaml.cs b/Sources/MauiSpark/Pages/TableauScore.xaml.cs index febd769..10d0c3f 100644 --- a/Sources/MauiSpark/Pages/TableauScore.xaml.cs +++ b/Sources/MauiSpark/Pages/TableauScore.xaml.cs @@ -18,6 +18,7 @@ public partial class TableauScore : ContentPage private void QuandNbCoutMoyenButtonClicked(object sender, EventArgs e) { + CTableauScore.UpdateClassement(CTableauScore.GetClassementNbCoupParPartie); } @@ -36,13 +37,8 @@ public partial class TableauScore : ContentPage CTableauScore.UpdateClassement(CTableauScore.GetClassementPartieEgalite); } - private void QuandAlphabetHautButtonClicked(object sender, EventArgs e) + private void QuandAlphabetButtonClicked(object sender, EventArgs e) { - CTableauScore.UpdateClassement(CTableauScore.GetClassementAlphabetHaut); - } - - private void QuandAlphabetBasButtonClicked(object sender, EventArgs e) - { - CTableauScore.UpdateClassement(CTableauScore.GetClassementAlphabetBas); + CTableauScore.UpdateClassement(CTableauScore.GetClassementAlphabet); } } \ No newline at end of file diff --git a/Sources/MauiSpark/Views/CTableauScore.xaml b/Sources/MauiSpark/Views/CTableauScore.xaml index 684ab52..41cfb3b 100644 --- a/Sources/MauiSpark/Views/CTableauScore.xaml +++ b/Sources/MauiSpark/Views/CTableauScore.xaml @@ -2,22 +2,22 @@ - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/Sources/MauiSpark/Views/CTableauScore.xaml.cs b/Sources/MauiSpark/Views/CTableauScore.xaml.cs index 5f7430e..0834793 100644 --- a/Sources/MauiSpark/Views/CTableauScore.xaml.cs +++ b/Sources/MauiSpark/Views/CTableauScore.xaml.cs @@ -137,48 +137,102 @@ public class JoueurClassementAlphabet public partial class CTableauScore : ContentView { + public int NbCliquer { get; set; } = 0; + public IEnumerable GetClassementNbCoupParPartie() { - return MauiProgram.Manager.Joueurs + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs .OrderBy(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)) .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manager)); + + } + else + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderByDescending(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)) + .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manager)); + } } public IEnumerable GetClassementPartieGagnee() { - return MauiProgram.Manager.Joueurs - .OrderByDescending(joueur => joueur.NbPartieGagnee) - .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderByDescending(joueur => joueur.NbPartieGagnee) + .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); + } + else + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.NbPartieGagnee) + .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); + } + } public IEnumerable GetClassementPartieEgalite() { - return MauiProgram.Manager.Joueurs - .OrderByDescending(joueur => joueur.NbPartieEgalite) - .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderByDescending(joueur => joueur.NbPartieEgalite) + .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); + } + else + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.NbPartieEgalite) + .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); + } + } public IEnumerable GetClassementPartiePerdue() { - return MauiProgram.Manager.Joueurs + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs .OrderByDescending(joueur => joueur.NbPartiePerdue) .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manager)); - } - - public IEnumerable GetClassementAlphabetHaut() - { - return MauiProgram.Manager.Joueurs - .OrderBy(joueur => joueur.Nom) - .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); - } - public IEnumerable GetClassementAlphabetBas() - { - return MauiProgram.Manager.Joueurs + } + else + { + NbCliquer++; +; return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.NbPartiePerdue) + .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manager)); + } + + } + + public IEnumerable GetClassementAlphabet() + { + if(NbCliquer % 2 == 0) + { + NbCliquer++; + return MauiProgram.Manager.Joueurs + .OrderBy(joueur => joueur.Nom) + .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); + } + else + { + NbCliquer++; + return MauiProgram.Manager.Joueurs .OrderByDescending(joueur => joueur.Nom) .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); + } + } - - public CTableauScore() { InitializeComponent();