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