@ -2,26 +2,53 @@
namespace CoreLibrary
namespace CoreLibrary
{
{
/// <summary>
/// Implémente les règles classiques du jeu.
/// </summary>
public class ReglesClassiques : IRegles
public class ReglesClassiques : IRegles
{
{
private int nbJoueurs = 0 ;
private int nbJoueurs = 0 ;
private int? joueurCourant ;
private int? joueurCourant ;
private readonly Joueur [ ] joueurs ;
private readonly Joueur [ ] joueurs ;
/// <summary>
/// Obtient le nom des règles.
/// </summary>
public string Nom { get = > "Règles classiques" ; }
public string Nom { get = > "Règles classiques" ; }
/// <summary>
/// Obtient le nombre maximum de tours.
/// </summary>
public int TourMaximum { get = > 12 ; }
public int TourMaximum { get = > 12 ; }
/// <summary>
/// Obtient la taille maximale d'un code.
/// </summary>
public int TailleCodeMaximum { get = > 4 ; }
public int TailleCodeMaximum { get = > 4 ; }
/// <summary>
/// Obtient le nombre de joueurs actuels dans le jeu.
/// </summary>
public int NbJoueurs { get = > nbJoueurs ; }
public int NbJoueurs { get = > nbJoueurs ; }
public int NbJoueursMaximum { get = > 2 ; }
/// <summary>
/// Obtient le nombre maximum de joueurs possible pour le jeu.
/// </summary>
public int NbJoueursMaximum { get = > 2 ; }
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="ReglesClassiques"/> en initialisant un tableau de joueurs avec la taille maximale de joueurs autorisée.
/// </summary>
public ReglesClassiques ( )
public ReglesClassiques ( )
{
{
joueurs = new Joueur [ NbJoueursMaximum ] ;
joueurs = new Joueur [ NbJoueursMaximum ] ;
}
}
/// <summary>
/// Ajoute un joueur avec le nom spécifié.
/// </summary>
/// <param name="nom">Le nom du joueur à ajouter.</param>
/// <returns>Le joueur ajouté.</returns>
public Joueur AjouterJoueur ( string nom )
public Joueur AjouterJoueur ( string nom )
{
{
Joueur joueur = new Joueur ( nom , new Plateau ( TailleCodeMaximum , TourMaximum ) ) ;
Joueur joueur = new Joueur ( nom , new Plateau ( TailleCodeMaximum , TourMaximum ) ) ;
@ -29,6 +56,11 @@ namespace CoreLibrary
return joueur ;
return joueur ;
}
}
/// <summary>
/// Obtient le joueur dont c'est actuellement le tour.
/// </summary>
/// <returns>Le joueur actuel.</returns>
/// <exception cref="PartieNonCommenceeException">Levée lorsqu'il n'y a pas de joueur courant.</exception>
public Joueur JoueurCourant ( )
public Joueur JoueurCourant ( )
{
{
if ( ! joueurCourant . HasValue )
if ( ! joueurCourant . HasValue )
@ -37,6 +69,10 @@ namespace CoreLibrary
return joueurs [ joueurCourant . Value ] ;
return joueurs [ joueurCourant . Value ] ;
}
}
/// <summary>
/// Passe la main au joueur suivant.
/// </summary>
/// <exception cref="PartieNonCommenceeException">Levée lorsqu'il n'y a pas de joueur courant.</exception>
public void PasserLaMain ( )
public void PasserLaMain ( )
{
{
if ( ! joueurCourant . HasValue )
if ( ! joueurCourant . HasValue )
@ -52,19 +88,27 @@ namespace CoreLibrary
}
}
/// <summary>
/// Génère un nouveau code.
/// </summary>
/// <returns>Le code généré</returns>
public Code GenererCode ( )
public Code GenererCode ( )
{
{
return new Code ( TailleCodeMaximum ) ;
return new Code ( TailleCodeMaximum ) ;
}
}
/// <summary>
/// Initialise le premier joueur à jouer.
/// </summary>
public void CommencerLaPartie ( )
public void CommencerLaPartie ( )
{
{
joueurCourant = 0 ;
joueurCourant = 0 ;
}
}
/// <summary>
/// Vérifie si la partie est terminée.
/// </summary>
/// <returns>True si la partie est terminée, sinon False.</returns>
public bool EstTerminee ( )
public bool EstTerminee ( )
{
{
if ( ! joueurCourant . HasValue | | joueurCourant ! = 0 )
if ( ! joueurCourant . HasValue | | joueurCourant ! = 0 )
@ -83,6 +127,10 @@ namespace CoreLibrary
}
}
/// <summary>
/// Obtient les joueurs gagnants de la partie.
/// </summary>
/// <returns>La liste des joueurs gagnants.</returns>
public IEnumerable < Joueur > Gagnants ( )
public IEnumerable < Joueur > Gagnants ( )
{
{
Joueur [ ] gagnants = [ ] ;
Joueur [ ] gagnants = [ ] ;
@ -97,6 +145,10 @@ namespace CoreLibrary
return gagnants ;
return gagnants ;
}
}
/// <summary>
/// Obtient les joueurs perdants de la partie.
/// </summary>
/// <returns>La liste des joueurs perdants.</returns>
public IEnumerable < Joueur > Perdants ( )
public IEnumerable < Joueur > Perdants ( )
{
{
Joueur [ ] perdants = [ ] ;
Joueur [ ] perdants = [ ] ;