diff --git a/Sources/ConsoleApp/Evenements.cs b/Sources/ConsoleApp/Evenements.cs index a8e073c..bacbd3b 100644 --- a/Sources/ConsoleApp/Evenements.cs +++ b/Sources/ConsoleApp/Evenements.cs @@ -17,7 +17,7 @@ namespace ConsoleApp /// L'instance de l'événement DemanderNomEventArgs créée par Partie. /// Le nom du joueur. /// - public static void DemanderNom(Object? sender, DemanderNomEventArgs e) + public static void DemanderNom(Object? sender, DemanderJoueurEventArgs e) { Console.WriteLine($"Joueur {e.Indice}"); Console.Write(">>> "); diff --git a/Sources/CoreLibrary/Core/Code.cs b/Sources/CoreLibrary/Core/Code.cs index 3567998..4cf8e91 100644 --- a/Sources/CoreLibrary/Core/Code.cs +++ b/Sources/CoreLibrary/Core/Code.cs @@ -1,11 +1,13 @@ using CoreLibrary.Exceptions; using System.Collections.ObjectModel; +using System.Runtime.Serialization; namespace CoreLibrary.Core { /// /// Classe représentant un code composé de jetons et ses différentes méthodes. /// + [DataContract] public class Code { private readonly ObservableCollection lesJetons = new ObservableCollection(); @@ -13,13 +15,16 @@ namespace CoreLibrary.Core /// /// Le nombre maximum de jetons dans le code. /// + [DataMember] public int NbJetonsMax { get; private set; } /// /// Le nombre de jetons dans le code. /// + [DataMember] public int NbJetons { get => lesJetons.Count; } + [DataMember] public ObservableCollection Jetons => lesJetons; /// diff --git a/Sources/CoreLibrary/Core/Indicateur.cs b/Sources/CoreLibrary/Core/Indicateur.cs index 89180d8..c4284d5 100644 --- a/Sources/CoreLibrary/Core/Indicateur.cs +++ b/Sources/CoreLibrary/Core/Indicateur.cs @@ -1,8 +1,11 @@ -namespace CoreLibrary.Core +using System.Runtime.Serialization; + +namespace CoreLibrary.Core { /// /// Enumération des indicateurs disponibles pour les jetons. /// + [DataContract] public enum Indicateur { BONNEPLACE, diff --git a/Sources/CoreLibrary/Core/Jeton.cs b/Sources/CoreLibrary/Core/Jeton.cs index 1996ce5..4451cdc 100644 --- a/Sources/CoreLibrary/Core/Jeton.cs +++ b/Sources/CoreLibrary/Core/Jeton.cs @@ -1,13 +1,17 @@ -namespace CoreLibrary.Core +using System.Runtime.Serialization; + +namespace CoreLibrary.Core { /// /// Structure représentant un jeton de couleur /// + [DataContract] public struct Jeton { /// /// La couleur du jeton. /// + [DataMember] public readonly Couleur Couleur { get; private init; } /// diff --git a/Sources/CoreLibrary/Core/Plateau.cs b/Sources/CoreLibrary/Core/Plateau.cs index c3d1f3e..6d560b5 100644 --- a/Sources/CoreLibrary/Core/Plateau.cs +++ b/Sources/CoreLibrary/Core/Plateau.cs @@ -1,4 +1,5 @@ using CoreLibrary.Exceptions; +using System.Runtime.Serialization; using System.Security.Cryptography; namespace CoreLibrary.Core @@ -6,22 +7,29 @@ namespace CoreLibrary.Core /// /// Classe représentant un plateau de jeu composé de codes et leurs indicateurs ainsi que les méthodes associées. /// + [DataContract] public class Plateau { + [DataMember] private readonly Code codeSecret; + [DataMember] private readonly Code?[] grille; + [DataMember] private readonly IEnumerable[] indicateurs; + [DataMember] private readonly int tailleCode; /// /// Le numéro de tour actuel. /// + [DataMember] public int Tour { get; private set; } = 1; /// /// La victoire du joueur, True si le joueur a gagné sinon False /// + [DataMember] public bool Victoire { get; private set; } = false; /// diff --git a/Sources/CoreLibrary/CoreLibrary.csproj b/Sources/CoreLibrary/CoreLibrary.csproj index fa71b7a..af4eedb 100644 --- a/Sources/CoreLibrary/CoreLibrary.csproj +++ b/Sources/CoreLibrary/CoreLibrary.csproj @@ -6,4 +6,8 @@ enable + + + + diff --git a/Sources/CoreLibrary/Events/ConstruireJoueurEventArgs.cs b/Sources/CoreLibrary/Events/ConstruireJoueurEventArgs.cs index 08af7fd..fcb8577 100644 --- a/Sources/CoreLibrary/Events/ConstruireJoueurEventArgs.cs +++ b/Sources/CoreLibrary/Events/ConstruireJoueurEventArgs.cs @@ -1,4 +1,6 @@ -namespace CoreLibrary.Events +using CoreLibrary.Joueurs; + +namespace CoreLibrary.Events { /// /// Classe contenant les arguments passées en paramètre lors de l'événement ConstruireJoueurEventArgs. @@ -6,17 +8,17 @@ public class ConstruireJoueurEventArgs : EventArgs { /// - /// Le nom du joueur à ajouter. + /// Le joueur à ajouter. /// - public string? Nom { get; private set; } + public Joueur Joueur { get; private set; } /// /// Initialise une nouvelle instance de la classe avec les informations spécifiées. /// - /// Le nom du joueur à ajouter. - public ConstruireJoueurEventArgs(string? nom) + /// Le joueur à ajouter. + public ConstruireJoueurEventArgs(Joueur joueur) { - Nom = nom; + Joueur = joueur; } } } diff --git a/Sources/CoreLibrary/Events/PartieTermineeEventArgs.cs b/Sources/CoreLibrary/Events/PartieTermineeEventArgs.cs index b2f55b3..ebf45b5 100644 --- a/Sources/CoreLibrary/Events/PartieTermineeEventArgs.cs +++ b/Sources/CoreLibrary/Events/PartieTermineeEventArgs.cs @@ -10,19 +10,19 @@ namespace CoreLibrary.Events /// /// Les joueurs gagnants de la partie. /// - public IEnumerable Gagnants { get; private set; } + public Joueur[] Gagnants { get; private set; } /// /// Les joueurs perdants de la partie. /// - public IEnumerable Perdants { get; private set; } + public Joueur[] Perdants { get; private set; } /// /// Initialise une nouvelle instance de la classe avec les gagnants et les perdants spécifiés. /// /// Les gagnants. /// Les perdants. - public PartieTermineeEventArgs(IEnumerable gagnants, IEnumerable perdants) + public PartieTermineeEventArgs(Joueur[] gagnants, Joueur[] perdants) { Gagnants = gagnants; Perdants = perdants; diff --git a/Sources/CoreLibrary/Joueurs/Joueur.cs b/Sources/CoreLibrary/Joueurs/Joueur.cs index ba6ffb4..f36d6b3 100644 --- a/Sources/CoreLibrary/Joueurs/Joueur.cs +++ b/Sources/CoreLibrary/Joueurs/Joueur.cs @@ -1,21 +1,27 @@ using CoreLibrary.Core; using CoreLibrary.Events; +using System.Runtime.Serialization; namespace CoreLibrary.Joueurs { /// /// Classe représentant un joueur. /// + [DataContract] public class Joueur { /// /// Le nom du joueur. /// + [DataMember] public string Nom { get; private init; } - + [DataMember] public int NbCoutTotal { get; set; } + [DataMember] public int NbPartieGagnee { get; set; } + [DataMember] public int NbPartieEgalite { get; set; } + [DataMember] public int NbPartiePerdue { get; set; } /// @@ -53,9 +59,15 @@ namespace CoreLibrary.Joueurs public void Code(Code code) { + ++NbCoutTotal; QuandJouerCode(code); } + public void AGagne() => ++NbPartieGagnee; + public void APerdu() => ++NbPartiePerdue; + public void AEgalite() => ++NbPartieEgalite; + + public override String ToString() { return Nom; diff --git a/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs b/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs index b136b7b..6a0f3bf 100644 --- a/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs +++ b/Sources/CoreLibrary/Joueurs/JoueurBuilder.cs @@ -6,11 +6,11 @@ namespace CoreLibrary.Joueurs { public event EventHandler? ConstruireJoueur; - private void QuandConstruireJoueur(string? nom) => ConstruireJoueur?.Invoke(this, new ConstruireJoueurEventArgs(nom)); + private void QuandConstruireJoueur(Joueur joueur) => ConstruireJoueur?.Invoke(this, new ConstruireJoueurEventArgs(joueur)); - public void Nom(string? nom) + public void Joueur(Joueur joueur) { - QuandConstruireJoueur(nom); + QuandConstruireJoueur(joueur); } } } diff --git a/Sources/CoreLibrary/Manager/IPersistanceManager.cs b/Sources/CoreLibrary/Manager/IPersistanceManager.cs deleted file mode 100644 index 501b80b..0000000 --- a/Sources/CoreLibrary/Manager/IPersistanceManager.cs +++ /dev/null @@ -1,13 +0,0 @@ -using CoreLibrary.Joueurs; - -namespace CoreLibrary.Manager -{ - public interface IPersistanceManager - { - public bool EstEnregistre { get; } - - public IEnumerable Charger(); - - public void Enregistrer(IEnumerable donnees); - } -} diff --git a/Sources/CoreLibrary/Manager/Manager.cs b/Sources/CoreLibrary/Manager/Manager.cs deleted file mode 100644 index 619d180..0000000 --- a/Sources/CoreLibrary/Manager/Manager.cs +++ /dev/null @@ -1,41 +0,0 @@ -using CoreLibrary.Joueurs; -using System.Runtime.InteropServices; - -namespace CoreLibrary.Manager -{ - public class Manager : IDisposable - { - private bool estDetruit; - - private readonly IPersistanceManager persistance; - - private readonly IEnumerable joueurs; - public IEnumerable Joueurs => joueurs; - - public Manager(IPersistanceManager persistance) - { - this.persistance = persistance; - joueurs = this.persistance.Charger(); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - protected virtual void Dispose(bool detruire) - { - if (estDetruit) return; - - persistance.Enregistrer(joueurs); - - estDetruit = true; - } - - ~Manager() - { - Dispose(false); - } - } -} diff --git a/Sources/CoreLibrary/Manager/Stub.cs b/Sources/CoreLibrary/Manager/Stub.cs deleted file mode 100644 index dfebedb..0000000 --- a/Sources/CoreLibrary/Manager/Stub.cs +++ /dev/null @@ -1,26 +0,0 @@ -using CoreLibrary.Joueurs; -using System.Diagnostics.CodeAnalysis; - -namespace CoreLibrary.Manager -{ - public class Stub : IPersistanceManager - { - public bool EstEnregistre { get; private set; } = false; - - public IEnumerable Charger() - { - return [ - new Joueur("Pauline", 50, 5, 2, 0), - new Joueur("Céleste", 40, 6, 2, 0), - new Joueur("Camille", 55, 8, 0, 1), - new Joueur("Toto", 70, 0, 0, 10), - ]; - } - - [SuppressMessage("SonarAnalyzer", "S1186", Justification = "This method is intentionally left blank.")] - public void Enregistrer(IEnumerable donnees) - { - EstEnregistre = true; - } - } -} diff --git a/Sources/CoreLibrary/Manageur/Manageur.cs b/Sources/CoreLibrary/Manageur/Manageur.cs new file mode 100644 index 0000000..3fcd031 --- /dev/null +++ b/Sources/CoreLibrary/Manageur/Manageur.cs @@ -0,0 +1,44 @@ +using CoreLibrary.Joueurs; +using CoreLibrary.Persistance; + +namespace CoreLibrary.Manager +{ + public class Manageur + { + public Partie? partie; + public List joueurs; + public List parties; + private IPersistance persistance; + + public Manageur(IPersistance persistance) + { + this.persistance = persistance; + joueurs = persistance.Charger().ToList(); + parties = persistance.Charger().ToList(); + } + + public void NouvellePartie(Partie partie) + { + this.partie = partie; + parties.Add(partie); + } + + public Joueur DemanderJoueur(string nom) + { + foreach (Joueur joueur in joueurs) + { + if (joueur.Nom == nom) + return joueur; + } + Joueur nouveauJoueur = new Joueur(nom); + joueurs.Add(nouveauJoueur); + return nouveauJoueur; + } + + ~Manageur() + { + persistance.Enregistrer(joueurs.ToArray()); + persistance.Enregistrer(parties.ToArray()); + } + } +} diff --git a/Sources/CoreLibrary/Partie.cs b/Sources/CoreLibrary/Partie.cs index 9c9a14b..21bd980 100644 --- a/Sources/CoreLibrary/Partie.cs +++ b/Sources/CoreLibrary/Partie.cs @@ -1,19 +1,26 @@ using CoreLibrary.Core; using CoreLibrary.Events; using CoreLibrary.Joueurs; +using CoreLibrary.Persistance; using CoreLibrary.Regles; +using System.Runtime.Serialization; namespace CoreLibrary { /// /// Représente une partie de jeu. /// + [DataContract] public class Partie { + [DataMember] public IRegles Regles { get; private set; } + [DataMember] private readonly List joueurs = new List(); + [DataMember] private readonly List plateaux = new List(); + [DataMember] private int? courant; /// @@ -95,12 +102,13 @@ namespace CoreLibrary /// /// La liste des joueurs gagnants. /// La liste des joueurs perdants. - private void QuandPartieTerminee(IEnumerable gagnants, IEnumerable perdants) => PartieTerminee?.Invoke(this, new PartieTermineeEventArgs(gagnants, perdants)); + private void QuandPartieTerminee(Joueur[] gagnants, Joueur[] perdants) => PartieTerminee?.Invoke(this, new PartieTermineeEventArgs(gagnants, perdants)); /// /// Crée une nouvelle instance de la classe Partie. /// /// Les règles de la partie. + /// Persistance de la partie. public Partie(IRegles regles) { Regles = regles; @@ -122,7 +130,7 @@ namespace CoreLibrary /// private void Joueur(Object? sender, ConstruireJoueurEventArgs e) { - Joueur joueur = new Joueur(string.IsNullOrEmpty(e.Nom) ? $"Joueur {joueurs.Count + 1}" : e.Nom); + Joueur joueur = e.Joueur; Plateau plateau = new Plateau(Regles.TailleCodeMaximum, Regles.TourMaximum); joueurs.Add(joueur); @@ -168,8 +176,8 @@ namespace CoreLibrary if (++courant == joueurs.Count) courant = 0; QuandPasserMain(); - - if(courant == 0 && (plateauCourant.Tour > Regles.TourMaximum || plateaux.Where(plateau => plateau.Victoire).Any())) + + if (courant == 0 && (plateauCourant.Tour > Regles.TourMaximum || plateaux.Where(plateau => plateau.Victoire).Any())) { Terminee(); } @@ -189,7 +197,7 @@ namespace CoreLibrary List gagnants = new List(); List perdants = new List(); - for(int i = 0; i < joueurs.Count; i++) + for (int i = 0; i < joueurs.Count; i++) { if (plateaux[i].Victoire) gagnants.Add(joueurs[i]); @@ -197,7 +205,7 @@ namespace CoreLibrary perdants.Add(joueurs[i]); } - QuandPartieTerminee(gagnants, perdants); + QuandPartieTerminee(gagnants.ToArray(), perdants.ToArray()); } } } diff --git a/Sources/CoreLibrary/Persistance/IPersistance.cs b/Sources/CoreLibrary/Persistance/IPersistance.cs new file mode 100644 index 0000000..94e8ab6 --- /dev/null +++ b/Sources/CoreLibrary/Persistance/IPersistance.cs @@ -0,0 +1,11 @@ + using CoreLibrary.Joueurs; + +namespace CoreLibrary.Persistance +{ + public interface IPersistance + { + public T[] Charger(); + + public void Enregistrer(T[] elements); + } +} diff --git a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs new file mode 100644 index 0000000..63cc9a8 --- /dev/null +++ b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs @@ -0,0 +1,78 @@ +using CoreLibrary.Joueurs; +using System.Runtime.Serialization.Json; +using System.Text; +using System.Xml; + +namespace CoreLibrary.Persistance +{ + public class PersistanceJSON : IPersistance + { + + public T[] Charger() + { + string fichier = $"{typeof(T).Name}.json"; + string ancienDossier = Directory.GetCurrentDirectory(); + + Directory.SetCurrentDirectory(Path.Combine(ancienDossier, "../../../../")); + Console.WriteLine(Directory.GetCurrentDirectory()); + if(!Directory.Exists("Fichiers")) + { + Directory.SetCurrentDirectory(ancienDossier); + return []; + } + else + { + Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Fichiers")); + } + + if (!File.Exists(fichier)) + { + Directory.SetCurrentDirectory(ancienDossier); + return []; + } +; + + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(IEnumerable)); + T[] elements; + + using (FileStream s = File.OpenRead(fichier)) + { + elements = jsonSerializer.ReadObject(s) as T[]; + } + + Directory.SetCurrentDirectory(ancienDossier); + return elements; + } + + public void Enregistrer(T[] elements) + { + string fichier = $"{typeof(T).Name}.json"; + string ancienDossier = Directory.GetCurrentDirectory(); + + Directory.SetCurrentDirectory(Path.Combine(ancienDossier, "../../../../")); + + if (!Directory.Exists("Fichiers")) + { + Directory.CreateDirectory("Fichiers"); + } + + Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Fichiers")); + + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(IEnumerable)); + + using(FileStream s = File.Create(fichier)) + { + using(XmlDictionaryWriter writer = JsonReaderWriterFactory.CreateJsonWriter( + s, + Encoding.UTF8, + false, + true)) + { + jsonSerializer.WriteObject(writer, elements); + } + } + + Directory.SetCurrentDirectory(ancienDossier); + } + } +} \ No newline at end of file diff --git a/Sources/CoreLibrary/Regles/IRegles.cs b/Sources/CoreLibrary/Regles/IRegles.cs index bba390b..a8d8e7b 100644 --- a/Sources/CoreLibrary/Regles/IRegles.cs +++ b/Sources/CoreLibrary/Regles/IRegles.cs @@ -1,4 +1,5 @@ using CoreLibrary.Core; +using System.Runtime.Serialization; namespace CoreLibrary.Regles { diff --git a/Sources/CoreLibrary/Regles/ReglesClassiques.cs b/Sources/CoreLibrary/Regles/ReglesClassiques.cs index a41d5c3..8da48f6 100644 --- a/Sources/CoreLibrary/Regles/ReglesClassiques.cs +++ b/Sources/CoreLibrary/Regles/ReglesClassiques.cs @@ -1,28 +1,35 @@ -namespace CoreLibrary.Regles +using System.Runtime.Serialization; + +namespace CoreLibrary.Regles { /// /// Classe définissant les règles classiques du jeu. /// + [DataContract] public class ReglesClassiques : IRegles { /// /// Le nom des règles. /// + [DataMember] public string Nom { get => "Règles classiques"; } /// /// Le nombre maximum de tour. /// + [DataMember] public int TourMaximum { get => 2; } /// /// La taille maximale d'un code. /// + [DataMember] public int TailleCodeMaximum { get => 4; } /// /// Me nombre maximum de joueurs possibles pour le jeu. /// + [DataMember] public int NbJoueursMaximum { get => 2; } } } diff --git a/Sources/MauiSpark/App.xaml.cs b/Sources/MauiSpark/App.xaml.cs index e51a453..f0e41c0 100644 --- a/Sources/MauiSpark/App.xaml.cs +++ b/Sources/MauiSpark/App.xaml.cs @@ -1,4 +1,6 @@ -using MauiSpark.Pages; +using CoreLibrary.Manager; +using CoreLibrary.Persistance; +using MauiSpark.Pages; namespace MauiSpark { diff --git a/Sources/MauiSpark/MauiProgram.cs b/Sources/MauiSpark/MauiProgram.cs index 82d1290..6a61bd9 100644 --- a/Sources/MauiSpark/MauiProgram.cs +++ b/Sources/MauiSpark/MauiProgram.cs @@ -1,11 +1,12 @@ using CoreLibrary.Manager; +using CoreLibrary.Persistance; using Microsoft.Extensions.Logging; namespace MauiSpark { public static class MauiProgram { - public static Manager Manager { get; private set; } = new Manager(new Stub()); + public static Manageur Manageur { get; private set; } = new Manageur(new PersistanceJSON()); public static MauiApp CreateMauiApp() { diff --git a/Sources/MauiSpark/Pages/ConnexionPage.xaml.cs b/Sources/MauiSpark/Pages/ConnexionPage.xaml.cs index 8c2f7cf..84a2231 100644 --- a/Sources/MauiSpark/Pages/ConnexionPage.xaml.cs +++ b/Sources/MauiSpark/Pages/ConnexionPage.xaml.cs @@ -1,5 +1,6 @@ using CoreLibrary.Events; using CoreLibrary.Joueurs; +using Microsoft.UI.Xaml.Documents; namespace MauiSpark.Pages; @@ -7,6 +8,7 @@ namespace MauiSpark.Pages; public partial class ConnexionPage : ContentPage { private JoueurBuilder? joueurBuilder; + private int? indice; public ConnexionPage() { @@ -22,12 +24,22 @@ public partial class ConnexionPage : ContentPage Nom.Text = ""; joueurBuilder = e.JoueurBuilder; - BindingContext = $"Joueur {e.Indice}"; + indice = e.Indice; + BindingContext = $"Joueur {e.Indice}"; } private void QuandSeConnecterPresse(Object sender, EventArgs e) { if(joueurBuilder != null) - joueurBuilder.Nom(Nom.Text); + { + if(string.IsNullOrEmpty(Nom.Text)) + { + joueurBuilder.Joueur(new Joueur($"Joueur {indice}")); + } + else + { + joueurBuilder.Joueur(MauiProgram.Manageur.DemanderJoueur(Nom.Text)); + } + } } } \ No newline at end of file diff --git a/Sources/MauiSpark/Pages/Victoire.xaml.cs b/Sources/MauiSpark/Pages/Victoire.xaml.cs index 7953293..b25d9ee 100644 --- a/Sources/MauiSpark/Pages/Victoire.xaml.cs +++ b/Sources/MauiSpark/Pages/Victoire.xaml.cs @@ -1,4 +1,5 @@ using CoreLibrary.Events; +using CoreLibrary.Joueurs; namespace MauiSpark.Pages; @@ -29,12 +30,22 @@ public partial class Victoire : ContentPage Application.Current.MainPage.Navigation.RemovePage(page); } - if(e.Gagnants.Count() == 1) + if (e.Gagnants.Length == 1) BindingContext = ("Victoire", $"Le joueur {e.Gagnants.First().Nom} a gagné"); - else if(e.Gagnants.Count() > 1) - BindingContext = ("Egalité", $"Les joueurs {string.Join(' ', e.Gagnants)} ont gagné"); + else if (e.Gagnants.Length > 1) + BindingContext = ("Egalité", $"Les joueurs {string.Join(' ', e.Gagnants.Select(joueur => joueur.Nom))} ont gagné"); else BindingContext = ("Défaite", "Personne n'a trouvé le code..."); + + if (e.Gagnants.Length == 1) + e.Gagnants.First().AGagne(); + else + foreach (Joueur gagnant in e.Gagnants) + gagnant.AEgalite(); + + foreach (Joueur perdant in e.Gagnants) + perdant.APerdu(); + } public async void QuandMenuPresse(object sender, EventArgs e) diff --git a/Sources/MauiSpark/Views/CTableauScore.xaml.cs b/Sources/MauiSpark/Views/CTableauScore.xaml.cs index 0085d27..05262e1 100644 --- a/Sources/MauiSpark/Views/CTableauScore.xaml.cs +++ b/Sources/MauiSpark/Views/CTableauScore.xaml.cs @@ -5,7 +5,7 @@ namespace MauiSpark.Views; public class JoueurClassementNbCoupParPartie { - private Manager manager; + private Manageur manageur; private Joueur joueur; public Joueur Joueur @@ -15,23 +15,23 @@ public class JoueurClassementNbCoupParPartie } public int Place { - get => manager.Joueurs + get => manageur.joueurs .OrderBy(joueur => joueur.NbCoutTotal/(joueur.NbPartiePerdue+joueur.NbPartieGagnee+joueur.NbPartieEgalite)).ToList() .IndexOf(Joueur) + 1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); - public JoueurClassementNbCoupParPartie(Joueur joueur, Manager manager) + public JoueurClassementNbCoupParPartie(Joueur joueur, Manageur manageur) { - this.manager = manager; + this.manageur = manageur; this.joueur = joueur; } } public class JoueurClassementPartieGagnee { - private Manager manager; + private Manageur manageur; private Joueur joueur; public Joueur Joueur @@ -42,21 +42,21 @@ public class JoueurClassementPartieGagnee public int Place { - get => manager.Joueurs.OrderByDescending(joueur => joueur.NbPartieGagnee).ToList().IndexOf(Joueur) + 1; + get => manageur.joueurs.OrderByDescending(joueur => joueur.NbPartieGagnee).ToList().IndexOf(Joueur) + 1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); - public JoueurClassementPartieGagnee(Joueur joueur, Manager manager) + public JoueurClassementPartieGagnee(Joueur joueur, Manageur manageur) { - this.manager = manager; + this.manageur = manageur; this.joueur = joueur; } } public class JoueurClassementPartieEgalite { - private Manager manager; + private Manageur manageur; private Joueur joueur; public Joueur Joueur @@ -67,21 +67,21 @@ public class JoueurClassementPartieEgalite public int Place { - get => manager.Joueurs.OrderByDescending(joueur => joueur.NbPartieEgalite).ToList().IndexOf(joueur)+1; + get => manageur.joueurs.OrderByDescending(joueur => joueur.NbPartieEgalite).ToList().IndexOf(joueur)+1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); - public JoueurClassementPartieEgalite(Joueur joueur, Manager manager) + public JoueurClassementPartieEgalite(Joueur joueur, Manageur manageur) { - this.manager = manager; + this.manageur = manageur; this.joueur = joueur; } } public class JoueurClassementPartiePerdue { - private Manager manager; + private Manageur manageur; private Joueur joueur; public Joueur Joueur @@ -92,21 +92,21 @@ public class JoueurClassementPartiePerdue public int Place { - get => manager.Joueurs.OrderByDescending(joueur => joueur.NbPartiePerdue).ToList().IndexOf(joueur)+1; + get => manageur.joueurs.OrderByDescending(joueur => joueur.NbPartiePerdue).ToList().IndexOf(joueur)+1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); - public JoueurClassementPartiePerdue(Joueur joueur, Manager manager) + public JoueurClassementPartiePerdue(Joueur joueur, Manageur manageur) { - this.manager = manager; + this.manageur = manageur; this.joueur = joueur; } } public class JoueurClassementAlphabet { - private Manager manager; + private Manageur manageur; private Joueur joueur; public Joueur Joueur @@ -117,115 +117,115 @@ public class JoueurClassementAlphabet public int Place { - get => manager.Joueurs + get => manageur.joueurs .OrderBy(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)).ToList() .IndexOf(Joueur) + 1; } public int NbCoutMoyen => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite); - public JoueurClassementAlphabet(Joueur joueur, Manager manager) + public JoueurClassementAlphabet(Joueur joueur, Manageur manager) { - this.manager = manager; + this.manageur = manager; this.joueur = joueur; } } public partial class CTableauScore : ContentView { - public int NbCliquer { get; set; } = 0; + public int NbClique { get; set; } = 0; public IEnumerable GetClassementNbCoupParPartie() { - if(NbCliquer % 2 == 0) + if(NbClique % 2 == 0) { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderBy(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)) - .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manageur)); } else { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderByDescending(joueur => joueur.NbCoutTotal / (joueur.NbPartiePerdue + joueur.NbPartieGagnee + joueur.NbPartieEgalite)) - .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementNbCoupParPartie(joueur, MauiProgram.Manageur)); } } public IEnumerable GetClassementPartieGagnee() { - if(NbCliquer % 2 == 0) + if(NbClique % 2 == 0) { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderByDescending(joueur => joueur.NbPartieGagnee) - .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manageur)); } else { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderBy(joueur => joueur.NbPartieGagnee) - .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementPartieGagnee(joueur, MauiProgram.Manageur)); } } public IEnumerable GetClassementPartieEgalite() { - if(NbCliquer % 2 == 0) + if(NbClique % 2 == 0) { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderByDescending(joueur => joueur.NbPartieEgalite) - .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manageur)); } else { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderBy(joueur => joueur.NbPartieEgalite) - .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementPartieEgalite(joueur, MauiProgram.Manageur)); } } public IEnumerable GetClassementPartiePerdue() { - if(NbCliquer % 2 == 0) + if(NbClique % 2 == 0) { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderByDescending(joueur => joueur.NbPartiePerdue) - .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manageur)); } else { - NbCliquer++; -; return MauiProgram.Manager.Joueurs + NbClique++; +; return MauiProgram.Manageur.joueurs .OrderBy(joueur => joueur.NbPartiePerdue) - .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementPartiePerdue(joueur, MauiProgram.Manageur)); } } public IEnumerable GetClassementAlphabet() { - if(NbCliquer % 2 == 0) + if(NbClique % 2 == 0) { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderBy(joueur => joueur.Nom) - .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manageur)); } else { - NbCliquer++; - return MauiProgram.Manager.Joueurs + NbClique++; + return MauiProgram.Manageur.joueurs .OrderByDescending(joueur => joueur.Nom) - .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manager)); + .Select(joueur => new JoueurClassementAlphabet(joueur, MauiProgram.Manageur)); } } diff --git a/Sources/UnitTesting/DemanderNomEventArgsUT.cs b/Sources/UnitTesting/DemanderNomEventArgsUT.cs index 272b79e..095e64a 100644 --- a/Sources/UnitTesting/DemanderNomEventArgsUT.cs +++ b/Sources/UnitTesting/DemanderNomEventArgsUT.cs @@ -12,7 +12,7 @@ namespace UnitTesting JoueurBuilder joueurBuilder = new JoueurBuilder(); int indice = 15; - DemanderNomEventArgs evenement = new DemanderNomEventArgs(indice, joueurBuilder); + DemanderJoueurEventArgs evenement = new DemanderJoueurEventArgs(indice, joueurBuilder); Assert.Equal(joueurBuilder, evenement.JoueurBuilder); Assert.Equal(indice, evenement.Indice); diff --git a/Sources/mastermind.sln b/Sources/mastermind.sln index 806d18f..af9bf58 100644 --- a/Sources/mastermind.sln +++ b/Sources/mastermind.sln @@ -9,7 +9,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleApp", "ConsoleApp\Co EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MauiSpark", "MauiSpark\MauiSpark.csproj", "{BD22A919-E40E-4791-A6B0-2B8D37BBE834}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "UnitTesting\UnitTesting.csproj", "{A2182054-C0D1-46D6-BD39-F3F7926CE2DD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTesting", "UnitTesting\UnitTesting.csproj", "{A2182054-C0D1-46D6-BD39-F3F7926CE2DD}" ProjectSection(ProjectDependencies) = postProject {341FB405-085D-4C34-B395-64EF0F9B93E0} = {341FB405-085D-4C34-B395-64EF0F9B93E0} EndProjectSection