You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastermind/Sources/CoreLibrary/Joueurs/Joueur.cs

77 lines
2.2 KiB

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>
/// Crée une nouvelle instance de joueur avec un nom
/// Evénement appelé pour jouer un code.
/// </summary>
public event EventHandler<JouerCodeEventArgs>? JouerCode;
/// <summary>
/// Appel de l'événement JouerCode.
/// </summary>
private void QuandJouerCode(Code code) => JouerCode?.Invoke(this, new JouerCodeEventArgs(code));
/// <summary>
/// Crée une nouvelle instance de joueur avec un nom et un plateau spécifié.
/// </summary>
/// <param name="nom">Le nom du joueur.</param>
public Joueur(string nom)
{
Nom = nom;
NbCoutTotal = 0;
NbPartieGagnee = 0;
NbPartieEgalite = 0;
NbPartiePerdue = 0;
}
public Joueur(string nom, int nbCoutTotal, int nbPartieGagnee, int nbPartieEgalite, int nbPartiePerdue)
{
Nom = nom;
NbCoutTotal = nbCoutTotal;
NbPartieGagnee = nbPartieGagnee;
NbPartieEgalite = nbPartieEgalite;
NbPartiePerdue = nbPartiePerdue;
}
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;
}
}
}