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="*, *, *">
+
+
diff --git a/Sources/MauiSpark/Pages/AccueilPage.xaml.cs b/Sources/MauiSpark/Pages/AccueilPage.xaml.cs
index 499f4ef..4582923 100644
--- a/Sources/MauiSpark/Pages/AccueilPage.xaml.cs
+++ b/Sources/MauiSpark/Pages/AccueilPage.xaml.cs
@@ -13,5 +13,10 @@ public partial class AccueilPage : ContentPage
private void QuandJouerClique(Object? sender, EventArgs e)
{
Navigation.PushAsync(new ModePage());
- }
+ }
+
+ private void QuandReprendreClique(Object? sender, EventArgs e)
+ {
+ Navigation.PushAsync(new ReprendrePage());
+ }
}
\ No newline at end of file
diff --git a/Sources/MauiSpark/Pages/ReprendrePage.xaml b/Sources/MauiSpark/Pages/ReprendrePage.xaml
new file mode 100644
index 0000000..663127e
--- /dev/null
+++ b/Sources/MauiSpark/Pages/ReprendrePage.xaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/MauiSpark/Pages/ReprendrePage.xaml.cs b/Sources/MauiSpark/Pages/ReprendrePage.xaml.cs
new file mode 100644
index 0000000..87d7d72
--- /dev/null
+++ b/Sources/MauiSpark/Pages/ReprendrePage.xaml.cs
@@ -0,0 +1,13 @@
+namespace MauiSpark.Pages;
+
+public partial class ReprendrePage : ContentPage
+{
+ public ReprendrePage()
+ {
+ NavigationPage.SetHasNavigationBar(this, false);
+
+ BindingContext = MauiProgram.Manageur.PartiesNonTerminees;
+
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/Sources/MauiSpark/Vues/PartieCommenceeVue.xaml b/Sources/MauiSpark/Vues/PartieCommenceeVue.xaml
new file mode 100644
index 0000000..8195c85
--- /dev/null
+++ b/Sources/MauiSpark/Vues/PartieCommenceeVue.xaml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/MauiSpark/Vues/PartieCommenceeVue.xaml.cs b/Sources/MauiSpark/Vues/PartieCommenceeVue.xaml.cs
new file mode 100644
index 0000000..286ea3d
--- /dev/null
+++ b/Sources/MauiSpark/Vues/PartieCommenceeVue.xaml.cs
@@ -0,0 +1,60 @@
+using CoreLibrary;
+using CoreLibrary.Joueurs;
+using MauiSpark.Pages;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+
+namespace MauiSpark.Vues;
+
+public partial class PartieCommenceeVue : ContentView, INotifyPropertyChanged
+{
+ public static readonly BindableProperty PartieProperty = BindableProperty.Create(nameof(Partie), typeof(Partie), typeof(PartieCommenceeVue), null, propertyChanged: QuandPartieChangee);
+
+ public Partie Partie
+ {
+ get => (Partie)GetValue(PartieProperty);
+ set => SetValue(PartieProperty, value);
+ }
+
+ public string NomRegles
+ {
+ get => Partie != null ? Partie.Regles.Nom : "";
+ }
+
+ public string TourActuel
+ {
+ get => $"Tour : {(Partie != null ? Partie.Tour : 0)} / {(Partie != null ? Partie.Regles.NbTour : 0)}";
+ }
+
+ public Joueur[] Joueurs
+ {
+ get => Partie != null ? Partie.Joueurs.ToArray() : [];
+ }
+
+ public string NombreJoueurs => $"Joueurs : {Joueurs.Length} / {(Partie != null ? Partie.Regles.NbJoueurs : 0)}";
+
+ private static void QuandPartieChangee(BindableObject bindable, object ancienneValeur, object nouvelleValeur)
+ {
+ ((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(NomRegles));
+ ((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(TourActuel));
+ ((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(Joueurs));
+ ((PartieCommenceeVue)bindable).OnPropertyChanged(nameof(NombreJoueurs));
+ }
+
+ private void PartiePressee(object? sender, EventArgs e)
+ {
+ if (Partie == null)
+ return;
+
+ Partie.PartieDemanderJoueur += new ConnexionPage().QuandDemanderNom;
+ Partie.PartieNouveauTour += new PlateauPage().QuandNouveauTour;
+ Partie.PartiePartieTerminee += new VictoirePage().QuandPartieTerminee;
+
+ Partie.Jouer();
+ }
+
+ public PartieCommenceeVue()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file