diff --git a/Sources/ConsoleApp1/ConsoleApp1.csproj b/Sources/ConsoleApp1/ConsoleApp1.csproj deleted file mode 100644 index 2150e37..0000000 --- a/Sources/ConsoleApp1/ConsoleApp1.csproj +++ /dev/null @@ -1,10 +0,0 @@ - - - - Exe - net8.0 - enable - enable - - - diff --git a/Sources/ConsoleApp1/Program.cs b/Sources/ConsoleApp1/Program.cs deleted file mode 100644 index 460e52d..0000000 --- a/Sources/ConsoleApp1/Program.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.IO; - -class Program -{ - static void Main() - { - // Récupérer le chemin du dossier AppData de l'utilisateur - string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - - // Définir le chemin du dossier "mastermind" dans AppData - string mastermindPath = Path.Combine(appDataPath, "Mastermind"); - - // Vérifier si le dossier existe, et s'il n'existe pas, le créer - if (!Directory.Exists(mastermindPath)) - { - Directory.CreateDirectory(mastermindPath); - Console.WriteLine("Le dossier 'mastermind' a été créé dans AppData."); - } - else - { - Console.WriteLine("Le dossier 'mastermind' existe déjà dans AppData."); - } - } -} diff --git a/Sources/CoreLibrary/Joueurs/Joueur.cs b/Sources/CoreLibrary/Joueurs/Joueur.cs index 50a0478..3369cdc 100644 --- a/Sources/CoreLibrary/Joueurs/Joueur.cs +++ b/Sources/CoreLibrary/Joueurs/Joueur.cs @@ -20,7 +20,6 @@ namespace CoreLibrary.Joueurs [DataMember] public string Nom { get; private set; } = ""; - [DataMember] public bool EstConnecte { get; private set; } = false; public Joueur() diff --git a/Sources/CoreLibrary/Manageurs/Manageur.cs b/Sources/CoreLibrary/Manageurs/Manageur.cs index 2a1bec0..9283be8 100644 --- a/Sources/CoreLibrary/Manageurs/Manageur.cs +++ b/Sources/CoreLibrary/Manageurs/Manageur.cs @@ -13,6 +13,7 @@ namespace CoreLibrary.Manageurs public IReadOnlyList Joueurs => joueurs; public IReadOnlyList Parties => parties; + public IReadOnlyList PartiesNonTerminees => parties.Where(partie => !partie.Termine).ToList(); public Manageur(IPersistance persistance) { @@ -54,6 +55,8 @@ namespace CoreLibrary.Manageurs { perdant.IncrementerStatistique(regles, Statistique.PartiePerdue); } + + Sauvegarder(); }; return partie; diff --git a/Sources/CoreLibrary/Partie.cs b/Sources/CoreLibrary/Partie.cs index 2c0ee43..6658277 100644 --- a/Sources/CoreLibrary/Partie.cs +++ b/Sources/CoreLibrary/Partie.cs @@ -30,6 +30,12 @@ namespace CoreLibrary [DataMember] private int courant = 0; + public IReadOnlyList Joueurs => joueurs; + [DataMember] + public bool Termine { get; private set; } = false; + [DataMember] + public int Tour { get; private set; } = 0; + [DataMember] public IRegles Regles { get; private init; } @@ -40,7 +46,10 @@ namespace CoreLibrary public void Jouer() { - DemanderJoueur(); + if (joueurs.Count != Regles.NbJoueurs) + DemanderJoueur(); + else + DebutPartie(); } private void DemanderJoueur() @@ -53,11 +62,8 @@ namespace CoreLibrary private void JoueurConnecte(object? sender, JoueurSeConnecterEventArgs e) { - Plateau plateau = new Plateau(Regles.TailleCode, Regles.NbTour); - plateau.PlateauAjouterCode += PlateauAjouterCode; - joueurs.Add(e.JoueurConnecte); - plateaux.Add(plateau); + plateaux.Add(new Plateau(Regles.TailleCode, Regles.NbTour)); if (joueurs.Count < Regles.NbJoueurs) { @@ -71,7 +77,15 @@ namespace CoreLibrary private void DebutPartie() { + Tour = 1; + + foreach (Plateau plateau in plateaux) + { + plateau.PlateauAjouterCode += PlateauAjouterCode; + } + QuandPartieDebutPartie(); + NouveauTour(); } @@ -91,7 +105,10 @@ namespace CoreLibrary else { if (courant + 1 == joueurs.Count) + { + ++Tour; courant = 0; + } else ++courant; @@ -101,6 +118,8 @@ namespace CoreLibrary private void PartieTerminee() { + Termine = true; + List gagnants = new List(); List perdants = new List(); @@ -114,5 +133,14 @@ namespace CoreLibrary QuandPartiePartieTerminee(gagnants, perdants); } + + public void ReinitialiserEcouteEvenements() + { + PartieDemanderJoueur = null; + PartieDebutPartie = null; + PartieNouveauTour = null; + PartiePasserLaMain = null; + PartiePartieTerminee = null; + } } } diff --git a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs index 51bbed5..1640fde 100644 --- a/Sources/CoreLibrary/Persistance/PersistanceJSON.cs +++ b/Sources/CoreLibrary/Persistance/PersistanceJSON.cs @@ -6,8 +6,15 @@ namespace CoreLibrary.Persistance { public class PersistanceJSON : IPersistance { - private readonly string dossier = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../../.."); private readonly string nomDossier = "Fichiers"; + private readonly string nomRacine = "Sources"; + private readonly string dossier = AppDomain.CurrentDomain.BaseDirectory; + + public PersistanceJSON() + { + while (new DirectoryInfo(dossier).Name != nomRacine) + dossier = Path.GetFullPath(Path.Combine(dossier, @"../")); + } public T[] Charger() where T : IEstPersistant { diff --git a/Sources/Fichiers/joueurs.json b/Sources/Fichiers/joueurs.json deleted file mode 100644 index 059113c..0000000 --- a/Sources/Fichiers/joueurs.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - { - "EstConnecte": false, - "Nom": "Céleste", - "statistiques": [ - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - }, - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 11 - } - ] - }, - { - "EstConnecte": false, - "Nom": "Pauline", - "statistiques": [ - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - }, - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - } - ] - } -] \ No newline at end of file diff --git a/Sources/Fichiers/parties.json b/Sources/Fichiers/parties.json deleted file mode 100644 index b85da3d..0000000 --- a/Sources/Fichiers/parties.json +++ /dev/null @@ -1,1023 +0,0 @@ -[ - { - "Regles": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "courant": 0, - "joueurs": [ - { - "EstConnecte": true, - "Nom": "Céleste", - "statistiques": [ - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - } - ] - }, - { - "EstConnecte": true, - "Nom": "Pauline", - "statistiques": [ - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - } - ] - } - ], - "plateaux": [ - { - "TailleMax": 12, - "TailleMaxCode": 4, - "Victoire": false, - "codeSecret": { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 4 - }, - { - "Couleur": 3 - }, - { - "Couleur": 5 - }, - { - "Couleur": 0 - } - ] - }, - "codes": [ - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 1 - }, - { - "Couleur": 2 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 1 - }, - { - "Couleur": 1 - }, - { - "Couleur": 1 - }, - { - "Couleur": 1 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 2 - }, - { - "Couleur": 2 - }, - { - "Couleur": 2 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 3 - }, - { - "Couleur": 3 - }, - { - "Couleur": 3 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 4 - }, - { - "Couleur": 4 - }, - { - "Couleur": 4 - }, - { - "Couleur": 4 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 5 - }, - { - "Couleur": 5 - }, - { - "Couleur": 3 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 5 - }, - { - "Couleur": 5 - }, - { - "Couleur": 5 - }, - { - "Couleur": 5 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 5 - }, - { - "Couleur": 4 - }, - { - "Couleur": 3 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - } - ], - "indicateurs": [ - [ - 0 - ], - [ - 1, - 1 - ], - [ ], - [ ], - [ - 0 - ], - [ - 0 - ], - [ - 0, - 1, - 1 - ], - [ - 0 - ], - [ - 0, - 1, - 1 - ], - [ - 0 - ] - ] - }, - { - "TailleMax": 12, - "TailleMaxCode": 4, - "Victoire": false, - "codeSecret": { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 2 - }, - { - "Couleur": 4 - }, - { - "Couleur": 1 - } - ] - }, - "codes": [ - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - } - ], - "indicateurs": [ - [ ], - [ ], - [ ], - [ ], - [ ], - [ ], - [ ], - [ ], - [ ], - [ ] - ] - } - ] - }, - { - "Regles": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "courant": 1, - "joueurs": [ - { - "EstConnecte": true, - "Nom": "Céleste", - "statistiques": [ - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - }, - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 11 - } - ] - }, - { - "EstConnecte": true, - "Nom": "Pauline", - "statistiques": [ - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - }, - { - "Key": { - "Item1": { - "__type": "ReglesClassiques:#CoreLibrary.Regles" - }, - "Item2": 3 - }, - "Value": 10 - } - ] - } - ], - "plateaux": [ - { - "TailleMax": 12, - "TailleMaxCode": 4, - "Victoire": true, - "codeSecret": { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 4 - }, - { - "Couleur": 3 - }, - { - "Couleur": 3 - } - ] - }, - "codes": [ - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 1 - }, - { - "Couleur": 2 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 1 - }, - { - "Couleur": 1 - }, - { - "Couleur": 1 - }, - { - "Couleur": 1 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 2 - }, - { - "Couleur": 2 - }, - { - "Couleur": 2 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 2 - }, - { - "Couleur": 2 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 5 - }, - { - "Couleur": 5 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 4 - }, - { - "Couleur": 4 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 3 - }, - { - "Couleur": 3 - }, - { - "Couleur": 3 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 3 - }, - { - "Couleur": 4 - }, - { - "Couleur": 3 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 2 - }, - { - "Couleur": 4 - }, - { - "Couleur": 3 - }, - { - "Couleur": 3 - } - ] - } - ], - "indicateurs": [ - [ - 0, - 1 - ], - [ ], - [ ], - [ - 0 - ], - [ - 0, - 0 - ], - [ - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0, - 1, - 1 - ], - [ - 0, - 0, - 0, - 0 - ] - ] - }, - { - "TailleMax": 12, - "TailleMaxCode": 4, - "Victoire": false, - "codeSecret": { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 2 - }, - { - "Couleur": 0 - }, - { - "Couleur": 5 - } - ] - }, - "codes": [ - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - }, - { - "TailleMax": 4, - "jetons": [ - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - }, - { - "Couleur": 0 - } - ] - } - ], - "indicateurs": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - } - ] - } -] \ No newline at end of file diff --git a/Sources/MauiSpark/MauiSpark.csproj b/Sources/MauiSpark/MauiSpark.csproj index 0e188ef..551dd2c 100644 --- a/Sources/MauiSpark/MauiSpark.csproj +++ b/Sources/MauiSpark/MauiSpark.csproj @@ -103,6 +103,9 @@ MSBuild:Compile + + MSBuild:Compile + MSBuild:Compile @@ -121,6 +124,9 @@ MSBuild:Compile + + MSBuild:Compile + MSBuild:Compile diff --git a/Sources/MauiSpark/Pages/AccueilPage.xaml b/Sources/MauiSpark/Pages/AccueilPage.xaml index 186c3cd..1b23591 100644 --- a/Sources/MauiSpark/Pages/AccueilPage.xaml +++ b/Sources/MauiSpark/Pages/AccueilPage.xaml @@ -6,7 +6,7 @@ + RowDefinitions="*, *, *">