Binding avec manageur
continuous-integration/drone/push Build is failing Details

master
Céleste BARBOSA 11 months ago
commit aaefed3542

@ -17,7 +17,7 @@ namespace ConsoleApp
/// <param name="e">L'instance de l'événement DemanderNomEventArgs créée par Partie.</param>
/// <returns>Le nom du joueur.</returns>
/// </summary>
public static void DemanderNom(Object? sender, DemanderNomEventArgs e)
public static void DemanderNom(Object? sender, DemanderJoueurEventArgs e)
{
Console.WriteLine($"Joueur {e.Indice}");
Console.Write(">>> ");

@ -1,11 +1,13 @@
using CoreLibrary.Exceptions;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
namespace CoreLibrary.Core
{
/// <summary>
/// Classe représentant un code composé de jetons et ses différentes méthodes.
/// </summary>
[DataContract]
public class Code
{
private readonly ObservableCollection<Jeton?> lesJetons = new ObservableCollection<Jeton?>();
@ -13,13 +15,16 @@ namespace CoreLibrary.Core
/// <summary>
/// Le nombre maximum de jetons dans le code.
/// </summary>
[DataMember]
public int NbJetonsMax { get; private set; }
/// <summary>
/// Le nombre de jetons dans le code.
/// </summary>
[DataMember]
public int NbJetons { get => lesJetons.Count; }
[DataMember]
public ObservableCollection<Jeton?> Jetons => lesJetons;
/// <summary>

@ -1,8 +1,11 @@
namespace CoreLibrary.Core
using System.Runtime.Serialization;
namespace CoreLibrary.Core
{
/// <summary>
/// Enumération des indicateurs disponibles pour les jetons.
/// </summary>
[DataContract]
public enum Indicateur
{
BONNEPLACE,

@ -1,13 +1,17 @@
namespace CoreLibrary.Core
using System.Runtime.Serialization;
namespace CoreLibrary.Core
{
/// <summary>
/// Structure représentant un jeton de couleur
/// </summary>
[DataContract]
public struct Jeton
{
/// <summary>
/// La couleur du jeton.
/// </summary>
[DataMember]
public readonly Couleur Couleur { get; private init; }
/// <summary>

@ -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
/// <summary>
/// Classe représentant un plateau de jeu composé de codes et leurs indicateurs ainsi que les méthodes associées.
/// </summary>
[DataContract]
public class Plateau
{
[DataMember]
private readonly Code codeSecret;
[DataMember]
private readonly Code?[] grille;
[DataMember]
private readonly IEnumerable<Indicateur>[] indicateurs;
[DataMember]
private readonly int tailleCode;
/// <summary>
/// Le numéro de tour actuel.
/// </summary>
[DataMember]
public int Tour { get; private set; } = 1;
/// <summary>
/// La victoire du joueur, True si le joueur a gagné sinon False
/// </summary>
[DataMember]
public bool Victoire { get; private set; } = false;
/// <summary>

@ -6,4 +6,8 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Persistance\Persistance.cs" />
</ItemGroup>
</Project>

@ -1,4 +1,6 @@
namespace CoreLibrary.Events
using CoreLibrary.Joueurs;
namespace CoreLibrary.Events
{
/// <summary>
/// Classe contenant les arguments passées en paramètre lors de l'événement ConstruireJoueurEventArgs.
@ -6,17 +8,17 @@
public class ConstruireJoueurEventArgs : EventArgs
{
/// <summary>
/// Le nom du joueur à ajouter.
/// Le joueur à ajouter.
/// </summary>
public string? Nom { get; private set; }
public Joueur Joueur { get; private set; }
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="ConstruireJoueurEventArgs"/> avec les informations spécifiées.
/// </summary>
/// <param name="nom">Le nom du joueur à ajouter.</param>
public ConstruireJoueurEventArgs(string? nom)
/// <param name="joueur">Le joueur à ajouter.</param>
public ConstruireJoueurEventArgs(Joueur joueur)
{
Nom = nom;
Joueur = joueur;
}
}
}

@ -10,19 +10,19 @@ namespace CoreLibrary.Events
/// <summary>
/// Les joueurs gagnants de la partie.
/// </summary>
public IEnumerable<Joueur> Gagnants { get; private set; }
public Joueur[] Gagnants { get; private set; }
/// <summary>
/// Les joueurs perdants de la partie.
/// </summary>
public IEnumerable<Joueur> Perdants { get; private set; }
public Joueur[] Perdants { get; private set; }
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="PartieTermineeEventArgs"/> avec les gagnants et les perdants spécifiés.
/// </summary>
/// <param name="gagnants">Les gagnants.</param>
/// <param name="perdants">Les perdants.</param>
public PartieTermineeEventArgs(IEnumerable<Joueur> gagnants, IEnumerable<Joueur> perdants)
public PartieTermineeEventArgs(Joueur[] gagnants, Joueur[] perdants)
{
Gagnants = gagnants;
Perdants = perdants;

@ -1,21 +1,27 @@
using CoreLibrary.Core;
using CoreLibrary.Events;
using System.Runtime.Serialization;
namespace CoreLibrary.Joueurs
{
/// <summary>
/// Classe représentant un joueur.
/// </summary>
[DataContract]
public class Joueur
{
/// <summary>
/// Le nom du joueur.
/// </summary>
[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; }
/// <summary>
@ -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;

@ -6,11 +6,11 @@ namespace CoreLibrary.Joueurs
{
public event EventHandler<ConstruireJoueurEventArgs>? 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);
}
}
}

@ -1,13 +0,0 @@
using CoreLibrary.Joueurs;
namespace CoreLibrary.Manager
{
public interface IPersistanceManager
{
public bool EstEnregistre { get; }
public IEnumerable<Joueur> Charger();
public void Enregistrer(IEnumerable<Joueur> donnees);
}
}

@ -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<Joueur> joueurs;
public IEnumerable<Joueur> 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);
}
}
}

@ -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<Joueur> 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<Joueur> donnees)
{
EstEnregistre = true;
}
}
}

@ -0,0 +1,44 @@
using CoreLibrary.Joueurs;
using CoreLibrary.Persistance;
namespace CoreLibrary.Manager
{
public class Manageur
{
public Partie? partie;
public List<Joueur> joueurs;
public List<Partie> parties;
private IPersistance persistance;
public Manageur(IPersistance persistance)
{
this.persistance = persistance;
joueurs = persistance.Charger<Joueur>().ToList();
parties = persistance.Charger<Partie>().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<Joueur>(joueurs.ToArray());
persistance.Enregistrer<Partie>(parties.ToArray());
}
}
}

@ -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
{
/// <summary>
/// Représente une partie de jeu.
/// </summary>
[DataContract]
public class Partie
{
[DataMember]
public IRegles Regles { get; private set; }
[DataMember]
private readonly List<Joueur> joueurs = new List<Joueur>();
[DataMember]
private readonly List<Plateau> plateaux = new List<Plateau>();
[DataMember]
private int? courant;
/// <summary>
@ -95,12 +102,13 @@ namespace CoreLibrary
/// </summary>
/// <param name="gagnants">La liste des joueurs gagnants.</param>
/// <param name="perdants">La liste des joueurs perdants.</param>
private void QuandPartieTerminee(IEnumerable<Joueur> gagnants, IEnumerable<Joueur> perdants) => PartieTerminee?.Invoke(this, new PartieTermineeEventArgs(gagnants, perdants));
private void QuandPartieTerminee(Joueur[] gagnants, Joueur[] perdants) => PartieTerminee?.Invoke(this, new PartieTermineeEventArgs(gagnants, perdants));
/// <summary>
/// Crée une nouvelle instance de la classe Partie.
/// </summary>
/// <param name="regles">Les règles de la partie.</param>
/// <param name="persistance">Persistance de la partie.</param>
public Partie(IRegles regles)
{
Regles = regles;
@ -122,7 +130,7 @@ namespace CoreLibrary
/// </summary>
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);
@ -169,7 +177,7 @@ namespace CoreLibrary
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<Joueur> gagnants = new List<Joueur>();
List<Joueur> perdants = new List<Joueur>();
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());
}
}
}

@ -0,0 +1,11 @@
 using CoreLibrary.Joueurs;
namespace CoreLibrary.Persistance
{
public interface IPersistance
{
public T[] Charger<T>();
public void Enregistrer<T>(T[] elements);
}
}

@ -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<T>()
{
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>));
T[] elements;
using (FileStream s = File.OpenRead(fichier))
{
elements = jsonSerializer.ReadObject(s) as T[];
}
Directory.SetCurrentDirectory(ancienDossier);
return elements;
}
public void Enregistrer<T>(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<T>));
using(FileStream s = File.Create(fichier))
{
using(XmlDictionaryWriter writer = JsonReaderWriterFactory.CreateJsonWriter(
s,
Encoding.UTF8,
false,
true))
{
jsonSerializer.WriteObject(writer, elements);
}
}
Directory.SetCurrentDirectory(ancienDossier);
}
}
}

@ -1,4 +1,5 @@
using CoreLibrary.Core;
using System.Runtime.Serialization;
namespace CoreLibrary.Regles
{

@ -1,28 +1,35 @@
namespace CoreLibrary.Regles
using System.Runtime.Serialization;
namespace CoreLibrary.Regles
{
/// <summary>
/// Classe définissant les règles classiques du jeu.
/// </summary>
[DataContract]
public class ReglesClassiques : IRegles
{
/// <summary>
/// Le nom des règles.
/// </summary>
[DataMember]
public string Nom { get => "Règles classiques"; }
/// <summary>
/// Le nombre maximum de tour.
/// </summary>
[DataMember]
public int TourMaximum { get => 2; }
/// <summary>
/// La taille maximale d'un code.
/// </summary>
[DataMember]
public int TailleCodeMaximum { get => 4; }
/// <summary>
/// Me nombre maximum de joueurs possibles pour le jeu.
/// </summary>
[DataMember]
public int NbJoueursMaximum { get => 2; }
}
}

@ -1,4 +1,6 @@
using MauiSpark.Pages;
using CoreLibrary.Manager;
using CoreLibrary.Persistance;
using MauiSpark.Pages;
namespace MauiSpark
{

@ -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()
{

@ -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));
}
}
}
}

@ -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)

@ -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<JoueurClassementNbCoupParPartie> 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<JoueurClassementPartieGagnee> 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<JoueurClassementPartieEgalite> 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<JoueurClassementPartiePerdue> 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<JoueurClassementAlphabet> 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));
}
}

@ -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);

@ -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

Loading…
Cancel
Save