Fin de boucle Partie.
continuous-integration/drone/push Build is failing Details

master
Pauline PRADY 11 months ago
parent 6cfb2056e9
commit aafccfae1b

@ -17,7 +17,7 @@ namespace ConsoleApp
/// <param name="e">L'instance de l'événement DemanderJoueurEventArgs créée par Partie.</param>
/// <returns>Le nom du joueur.</returns>
/// </summary>
public static string? DemanderJoueur(Object? sender, DemanderJoueurEventArgs e)
/*public static string? DemanderJoueur(Object? sender, DemanderJoueurEventArgs e)
{
Console.WriteLine($"Joueur {e.Numero}");
Console.Write(">>> ");
@ -27,7 +27,7 @@ namespace ConsoleApp
Console.WriteLine();
return nom;
}
}*/
/// <summary>
@ -65,7 +65,7 @@ namespace ConsoleApp
/// <param name="e">L'instance de l'événement DemanderJetonEventArgs créée par Partie.</param>
/// <returns>Le jeton choisi par le joueur.</returns>
/// </summary>
public static Jeton? DemanderJeton(Object? sender, DemanderJetonEventArgs e)
/*public static Jeton? DemanderJeton(Object? sender, DemanderJetonEventArgs e)
{
Console.TreatControlCAsInput = true;
Console.CursorVisible = false;
@ -115,7 +115,7 @@ namespace ConsoleApp
Console.CursorVisible = true;
return indice != -2 ? new Jeton(couleurs[indice]) : null;
}
}*/
/// <summary>
/// Ecoute l'événement en rapport avec l'ajout d'un jeton dans le code.

@ -17,10 +17,10 @@ namespace ConsoleApp
Partie maPartie = new Partie(new ReglesClassiques());
maPartie.DemanderJoueur += Evenements.DemanderJoueur;
//maPartie.DemanderJoueur += Evenements.DemanderJoueur;
maPartie.DebutPartie += Evenements.CommencerLaPartie;
maPartie.NouveauTour += Evenements.NouveauTour;
maPartie.DemanderJeton += Evenements.DemanderJeton;
//maPartie.DemanderJeton += Evenements.DemanderJeton;
maPartie.AjouterJeton += Evenements.AjouterJeton;
maPartie.SupprimerDernierJeton += Evenements.SupprimerDernierJeton;
maPartie.AjouterCode += Evenements.AjouterCode;

@ -0,0 +1,14 @@
using CoreLibrary.Joueurs;
namespace CoreLibrary.Events
{
public class ConstruireJoueurEventArgs : EventArgs
{
public string Nom { get; private set; }
public ConstruireJoueurEventArgs(string nom)
{
Nom = nom;
}
}
}

@ -1,22 +0,0 @@
namespace CoreLibrary.Events
{
/// <summary>
/// Classe contenant les arguments passées en paramètre lors de l'événement DemanderJeton.
/// </summary>
public class DemanderJetonEventArgs : EventArgs
{
/// <summary>
/// L'indice du code où le jeton va être ajouté.
/// </summary>
public int Indice { get; private set; }
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="DemanderJetonEventArgs"/> avec l'indice spécifié.
/// </summary>
/// <param name="joueur">L'indice du jeton qui va été ajouté.</param>
public DemanderJetonEventArgs(int indice)
{
Indice = indice;
}
}
}

@ -1,23 +0,0 @@
namespace CoreLibrary.Events
{
/// <summary>
/// Classe contenant les arguments passées en paramètre lors de l'événement DemanderJoueur.
/// </summary>
public class DemanderJoueurEventArgs : EventArgs
{
/// <summary>
/// Le numéro du joueur (Joueur 1 ou 2, 3..).
/// </summary>
public int Numero { get; private set; }
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="DemanderJoueurEventArgs"/> avec le numéro du joueur spécifié.
/// </summary>
/// <param name="numero">Le numéro du joueur qui va être ajouté.</param>
public DemanderJoueurEventArgs(int numero)
{
Numero = numero;
}
}
}

@ -0,0 +1,16 @@
using CoreLibrary.Joueurs;
namespace CoreLibrary.Events
{
public class DemanderNomEventArgs : EventArgs
{
public int Indice { get; private set; }
public JoueurBuilder JoueurBuilder { get; private set; }
public DemanderNomEventArgs(int indice, JoueurBuilder joueurBuilder)
{
Indice = indice;
JoueurBuilder = joueurBuilder;
}
}
}

@ -1,4 +1,7 @@
namespace CoreLibrary.Joueurs
using CoreLibrary.Core;
using CoreLibrary.Events;
namespace CoreLibrary.Joueurs
{
/// <summary>
/// Classe représentant un joueur.

@ -1,21 +1,16 @@
namespace CoreLibrary.Joueurs
using CoreLibrary.Events;
namespace CoreLibrary.Joueurs
{
public class JoueurBuilder
{
private string nom;
public event EventHandler<ConstruireJoueurEventArgs>? ConstruireJoueur;
public JoueurBuilder Nom(string nom)
{
this.nom = nom;
return this;
}
private void QuandConstruireJoueur(string nom) => ConstruireJoueur?.Invoke(this, new ConstruireJoueurEventArgs(nom));
public Joueur Build()
public void Nom(string nom)
{
return new Joueur()
QuandConstruireJoueur(nom);
}
}
}

@ -26,12 +26,7 @@ namespace CoreLibrary
/// <summary>
/// Événement déclenché lorsqu'il est nécessaire de d'ajouter un joueur.
/// </summary>
public event StringEventHandler<DemanderJoueurEventArgs>? DemanderJoueur;
/// <summary>
/// Événement déclenché lorsqu'il est nécessaire d'ajouter un jeton.
/// </summary>
public event JetonEventHandler<DemanderJetonEventArgs>? DemanderJeton;
public event StringEventHandler<DemanderNomEventArgs>? DemanderNom;
/// <summary>
/// Événement déclenché lorsqu'il est nécessaire d'ajouter un joueur.
@ -79,13 +74,7 @@ namespace CoreLibrary
/// </summary>
/// <param name="numero">Le numéro du joueur à ajouter</param>
/// <returns>Le nom du joueur demandé</returns></returns>
private string? QuandDemanderJoueur(int numero) => DemanderJoueur?.Invoke(this, new DemanderJoueurEventArgs(numero));
/// <summary>
/// Méthode pour déclencher l'événement de demande d'ajout d'un jeton.
/// </summary>
/// <returns>Le jeton demandé</returns>
private Jeton? QuandDemanderJeton(int indice) => DemanderJeton?.Invoke(this, new DemanderJetonEventArgs(indice));
private string? QuandDemanderNom(int numero, JoueurBuilder joueurBuilder) => DemanderNom?.Invoke(this, new DemanderNomEventArgs(numero, joueurBuilder));
/// <summary>
/// Méthode pour déclencher l'événement d'ajout d'un joueur.
@ -143,7 +132,7 @@ namespace CoreLibrary
/// <param name="regles">Les règles de la partie.</param>
public Partie(IRegles regles)
{
this.regles = regles;
this.regles = regles;
}
/// <summary>
@ -151,31 +140,44 @@ namespace CoreLibrary
/// </summary>
public void Jouer()
{
/// Ajout des joueurs jusqu'à atteindre le nombre maximum de joueurs défini par les règles
AjouterJoueurs();
regles.CommencerLaPartie();
QuandDebutPartie();
Joueur joueurCourant = regles.JoueurCourant();
Plateau plateauCourant = joueurCourant.Plateau;
QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs());
JoueurBuilder joueurBuilder = new JoueurBuilder();
joueurBuilder.ConstruireJoueur += Joueur;
QuandDemanderNom(regles.NbJoueurs + 1, joueurBuilder);
}
public void Joueur(Object? sender, )
public void Joueur(Object? sender, ConstruireJoueurEventArgs e)
{
Joueur joueur = regles.AjouterJoueur(e.Nom);
QuandAjouterJoueur(joueur);
joueur.JouerCode += Tour;
if (regles.NbJoueurs != regles.NbJoueursMaximum)
{
JoueurBuilder joueurBuilder = new JoueurBuilder();
joueurBuilder.ConstruireJoueur += Joueur;
QuandDemanderNom(regles.NbJoueurs + 1, joueurBuilder);
}
else
{
Commencer();
}
}
private void Tour()
public void Commencer()
{
Code code = regles.GenererCode();
regles.CommencerLaPartie();
QuandDebutPartie();
CreerCode(code);
(Joueur joueurCourant, Plateau plateauCourant) = regles.JoueurCourant();
QuandNouveauTour(joueurCourant, plateauCourant.Tour, plateauCourant.Grille(), plateauCourant.Indicateurs());
}
plateauCourant.AjouterCode(code);
QuandNouveauCode(code);
private void Tour(Object? sender, JouerCodeEventArgs e)
{
(Joueur joueurCourant, Plateau plateauCourant) = regles.JoueurCourant();
plateauCourant.AjouterCode(e.Code);
QuandNouveauCode(e.Code);
if(regles.EstTerminee())
{
@ -186,46 +188,11 @@ namespace CoreLibrary
regles.PasserLaMain();
QuandPasserMain();
}
}
private void Terminee()
{
QuandPartieTerminee(regles.Gagnants(), regles.Perdants());
}
private void AjouterJoueurs()
{
while (regles.NbJoueurs != regles.NbJoueursMaximum)
{
string nom = QuandDemanderJoueur(regles.NbJoueurs + 1) ?? $"Joueur {regles.NbJoueurs + 1}";
Joueur joueur = regles.AjouterJoueur(nom);
QuandAjouterJoueur(joueur);
}
}
private void CreerCode(Code code)
{
while (!code.EstComplet())
{
Jeton? jeton = QuandDemanderJeton(code.NbJetons);
if (DemanderJeton == null)
{
jeton = new Jeton();
}
if(!jeton.HasValue)
{
code.SupprimerDernierJeton();
QuandSupprimerDernierJeton();
}
else
{
code.AjouterJeton(jeton.Value);
QuandNouveauJeton(jeton.Value);
}
}
}
}
}

Loading…
Cancel
Save