From 57f2cca38f83f24838bb17c1cee3a074899b538f Mon Sep 17 00:00:00 2001 From: "camille.turpin-etienne" Date: Mon, 3 Jun 2024 12:54:19 +0200 Subject: [PATCH 1/6] Le classement ne marche pas encore. --- Sources/CoreLibrary/Manageurs/Manageur.cs | 4 +- .../Persistance/PersistanceJSON.cs | 1 + Sources/MauiSpark/Pages/ConnexionPage.xaml | 1 - Sources/MauiSpark/Pages/TableauScore.xaml | 32 +++- Sources/MauiSpark/Pages/TableauScore.xaml.cs | 140 +++++++++++++++++- .../MauiSpark/Resources/Styles/Styles.xaml | 4 +- 6 files changed, 171 insertions(+), 11 deletions(-) diff --git a/Sources/CoreLibrary/Manageurs/Manageur.cs b/Sources/CoreLibrary/Manageurs/Manageur.cs index 2a1bec0..45285ba 100644 --- a/Sources/CoreLibrary/Manageurs/Manageur.cs +++ b/Sources/CoreLibrary/Manageurs/Manageur.cs @@ -8,7 +8,7 @@ namespace CoreLibrary.Manageurs public class Manageur { private readonly IPersistance persistance; - private readonly List joueurs; + public readonly List joueurs; private readonly List parties; public IReadOnlyList Joueurs => joueurs; @@ -54,8 +54,8 @@ namespace CoreLibrary.Manageurs { perdant.IncrementerStatistique(regles, Statistique.PartiePerdue); } + Sauvegarder(); }; - return partie; } diff --git a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs index 51bbed5..3e53cfd 100644 --- a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs +++ b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs @@ -19,6 +19,7 @@ namespace CoreLibrary.Persistance return []; Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), nomDossier)); + var directory = Directory.GetCurrentDirectory(); if (!File.Exists(fichier)) return []; diff --git a/Sources/MauiSpark/Pages/ConnexionPage.xaml b/Sources/MauiSpark/Pages/ConnexionPage.xaml index bdcb7b2..bfe3e6d 100644 --- a/Sources/MauiSpark/Pages/ConnexionPage.xaml +++ b/Sources/MauiSpark/Pages/ConnexionPage.xaml @@ -1,7 +1,6 @@ diff --git a/Sources/MauiSpark/Pages/TableauScore.xaml b/Sources/MauiSpark/Pages/TableauScore.xaml index 0f52200..a4023a3 100644 --- a/Sources/MauiSpark/Pages/TableauScore.xaml +++ b/Sources/MauiSpark/Pages/TableauScore.xaml @@ -3,8 +3,9 @@ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:pages="clr-namespace:MauiSpark.Pages" x:Class="MauiSpark.Pages.TableauScore" + xmlns:vues="clr-namespace:MauiSpark.Vues" Title="TableauScore"> - + @@ -12,6 +13,35 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/MauiSpark/Pages/TableauScore.xaml.cs b/Sources/MauiSpark/Pages/TableauScore.xaml.cs index 98f9347..774b560 100644 --- a/Sources/MauiSpark/Pages/TableauScore.xaml.cs +++ b/Sources/MauiSpark/Pages/TableauScore.xaml.cs @@ -1,11 +1,141 @@ -namespace MauiSpark.Pages; +using CoreLibrary.Joueurs; +using CoreLibrary.Manageurs; +using CoreLibrary.Statistiques; +using System.Linq; +using CoreLibrary.Regles; -public partial class TableauScore : ContentPage +namespace MauiSpark.Pages { - public TableauScore() + public partial class TableauScore : ContentPage { - NavigationPage.SetHasNavigationBar(this, false); + private IRegles regles = new ReglesClassiques(); + public TableauScore() + { + NavigationPage.SetHasNavigationBar(this, false); + InitializeComponent(); + QuandButtonClassementClique(null, EventArgs.Empty); + } - InitializeComponent(); + private void QuandButtonRegleClassiqueClique(object sender, EventArgs e) + { + regles = new ReglesClassiques(); + } + + public int NbClique { get; set; } = 0; + + public IEnumerable GetClassement(Func critereTri) + { + IEnumerable joueursTries = NbClique % 2 == 0 + ? MauiProgram.Manageur.joueurs.OrderBy(critereTri) + : MauiProgram.Manageur.joueurs.OrderByDescending(critereTri); + + NbClique++; + + return joueursTries.Select(joueur => new Classement(joueur, MauiProgram.Manageur, critereTri, regles)); + } + + public void QuandButtonClassementClique(object sender, EventArgs e) + { + Button button = sender as Button; + string nom = button?.Text ?? string.Empty; + Func critereTri; + + switch (nom) + { + case "PSEUDO": + critereTri = joueur => joueur.Nom; + break; + + case "Cout Moyen": + critereTri = joueur => + { + int totalParties = joueur.Statistique(regles, Statistique.PartiePerdue) + + joueur.Statistique(regles, Statistique.PartieGagnee) + + joueur.Statistique(regles, Statistique.PartieEgalite); + return totalParties == 0 ? 0 : (double)joueur.Statistique(regles, Statistique.CoupJoue) / totalParties; + }; + break; + + case "Partie Gagnée": + critereTri = joueur => joueur.Statistique(regles, Statistique.PartieGagnee); + break; + + case "Partie Perdue": + critereTri = joueur => joueur.Statistique(regles, Statistique.PartiePerdue); + break; + + case "Partie Égalité": + critereTri = joueur => joueur.Statistique(regles, Statistique.PartieEgalite); + break; + + default: + critereTri = joueur => + { + int totalParties = joueur.Statistique(regles, Statistique.PartiePerdue) + + joueur.Statistique(regles, Statistique.PartieGagnee) + + joueur.Statistique(regles, Statistique.PartieEgalite); + return totalParties == 0 ? 0 : (double)joueur.Statistique(regles, Statistique.CoupJoue) / totalParties; + }; + break; + } + + BindingContext = GetClassement(critereTri); + int a = 2; + } + } + + public class Classement + { + private IRegles regles; + private Manageur manageur; + private Joueur joueur; + private Func critereTri; + + public Joueur Joueur + { + get => joueur; + private set => joueur = value; + } + + public int Place + { + get => manageur.joueurs + .OrderBy(critereTri) + .ToList() + .IndexOf(joueur) + 1; + } + + public int PartieGagnee + { + get => joueur.Statistique(regles, Statistique.PartieGagnee); + } + + public int PartiePerdue + { + get => joueur.Statistique(regles, Statistique.PartiePerdue); + } + public int PartieEgalite + { + get => joueur.Statistique(regles, Statistique.PartieEgalite); + } + + public double NbCoupMoyen + { + get + { + int totalParties = joueur.Statistique(regles, Statistique.PartiePerdue) + + joueur.Statistique(regles, Statistique.PartieGagnee) + + joueur.Statistique(regles, Statistique.PartieEgalite); + return totalParties == 0 ? 0 : (double)joueur.Statistique(regles, Statistique.CoupJoue) / totalParties; + } + } + + public Classement(Joueur joueur, Manageur manageur, Func critereTri, IRegles regles) + { + this.manageur = manageur; + this.joueur = joueur; + this.critereTri = critereTri; + this.regles = regles; + } } } \ No newline at end of file diff --git a/Sources/MauiSpark/Resources/Styles/Styles.xaml b/Sources/MauiSpark/Resources/Styles/Styles.xaml index d54d87a..e31e836 100644 --- a/Sources/MauiSpark/Resources/Styles/Styles.xaml +++ b/Sources/MauiSpark/Resources/Styles/Styles.xaml @@ -16,8 +16,8 @@ - - + + + + + + + From c67065ee4e11177151f941504ff98ad05f292969 Mon Sep 17 00:00:00 2001 From: "camille.turpin-etienne" Date: Mon, 3 Jun 2024 19:52:17 +0200 Subject: [PATCH 6/6] Le Classement finie --- Sources/Fichiers/joueurs.json | 2 +- Sources/MauiSpark/Pages/TableauScore.xaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/Fichiers/joueurs.json b/Sources/Fichiers/joueurs.json index 3f034ee..803a08f 100644 --- a/Sources/Fichiers/joueurs.json +++ b/Sources/Fichiers/joueurs.json @@ -18,7 +18,7 @@ }, "Item2": 1 }, - "Value": 1 + "Value": 2 } ] }, diff --git a/Sources/MauiSpark/Pages/TableauScore.xaml b/Sources/MauiSpark/Pages/TableauScore.xaml index ddb4474..6c9954d 100644 --- a/Sources/MauiSpark/Pages/TableauScore.xaml +++ b/Sources/MauiSpark/Pages/TableauScore.xaml @@ -30,9 +30,9 @@ -