diff --git a/Sources/ConsoleApp/Program.cs b/Sources/ConsoleApp/Program.cs
index 3c85a5e..a43a2ae 100644
--- a/Sources/ConsoleApp/Program.cs
+++ b/Sources/ConsoleApp/Program.cs
@@ -1,4 +1,13 @@
using CoreLibrary;
+using CoreLibrary.Events;
+
+void LaPartieDemarre(object sender, DebutPartieEventArgs evenement)
+{
+ Console.WriteLine("La partie commence");
+}
+
Partie maPartie = new Partie(new ReglesClassiques());
+maPartie.debutPartie += LaPartieDemarre;
+
maPartie.Jouer();
diff --git a/Sources/CoreLibrary/CoreLibrary.csproj b/Sources/CoreLibrary/CoreLibrary.csproj
index 9ff0d50..fa71b7a 100644
--- a/Sources/CoreLibrary/CoreLibrary.csproj
+++ b/Sources/CoreLibrary/CoreLibrary.csproj
@@ -6,8 +6,4 @@
enable
-
-
-
-
diff --git a/Sources/CoreLibrary/Events/AjouterCodeEventArgs.cs b/Sources/CoreLibrary/Events/AjouterCodeEventArgs.cs
new file mode 100644
index 0000000..3cd1c56
--- /dev/null
+++ b/Sources/CoreLibrary/Events/AjouterCodeEventArgs.cs
@@ -0,0 +1,12 @@
+
+namespace CoreLibrary.Events
+{
+ public class AjouterCodeEventArgs : EventArgs
+ {
+ public Code Code { get; private set; }
+ public AjouterCodeEventArgs(Code code)
+ {
+ Code = code;
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Events/AjouterJetonEventArgs.cs b/Sources/CoreLibrary/Events/AjouterJetonEventArgs.cs
new file mode 100644
index 0000000..50b35ab
--- /dev/null
+++ b/Sources/CoreLibrary/Events/AjouterJetonEventArgs.cs
@@ -0,0 +1,13 @@
+
+
+namespace CoreLibrary.Events
+{
+ public class AjouterJetonEventArgs : EventArgs
+ {
+ public Jeton Jeton { get; private set; }
+ public AjouterJetonEventArgs(Jeton jeton)
+ {
+ Jeton = jeton;
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Events/AjouterJoueursEventArgs.cs b/Sources/CoreLibrary/Events/AjouterJoueursEventArgs.cs
new file mode 100644
index 0000000..4fb2ddb
--- /dev/null
+++ b/Sources/CoreLibrary/Events/AjouterJoueursEventArgs.cs
@@ -0,0 +1,12 @@
+namespace CoreLibrary.Events
+{
+ public class AjouterJoueursEventArgs : EventArgs
+ {
+ public Joueur Joueur { get; private set; }
+
+ public AjouterJoueursEventArgs(Joueur joueur)
+ {
+ Joueur = joueur;
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Events/DebutPartieEventArgs.cs b/Sources/CoreLibrary/Events/DebutPartieEventArgs.cs
new file mode 100644
index 0000000..93745af
--- /dev/null
+++ b/Sources/CoreLibrary/Events/DebutPartieEventArgs.cs
@@ -0,0 +1,10 @@
+namespace CoreLibrary.Events
+{
+ public class DebutPartieEventArgs : EventArgs
+ {
+
+ public DebutPartieEventArgs()
+ {
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Events/NouveauTourEventArgs.cs b/Sources/CoreLibrary/Events/NouveauTourEventArgs.cs
new file mode 100644
index 0000000..a6e297f
--- /dev/null
+++ b/Sources/CoreLibrary/Events/NouveauTourEventArgs.cs
@@ -0,0 +1,14 @@
+namespace CoreLibrary.Events
+{
+ public class NouveauTourEventArgs : EventArgs
+ {
+ public Joueur Joueur { get; private set; }
+ public int Tour { get; private set; }
+
+ public NouveauTourEventArgs(Joueur joueur, int tour)
+ {
+ Joueur = joueur;
+ Tour = tour;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Sources/CoreLibrary/Events/PartieTermineeEventArgs.cs b/Sources/CoreLibrary/Events/PartieTermineeEventArgs.cs
new file mode 100644
index 0000000..094073c
--- /dev/null
+++ b/Sources/CoreLibrary/Events/PartieTermineeEventArgs.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CoreLibrary.Events
+{
+ public class PartieTermineeEventArgs : EventArgs
+ {
+ public IEnumerable Gagnants { get; private set; }
+ public IEnumerable Perdants { get; private set; }
+
+ public PartieTermineeEventArgs(IEnumerable gagnants, IEnumerable perdants)
+ {
+ Gagnants = gagnants;
+ Perdants = perdants;
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Events/PasserMainEventArgs.cs b/Sources/CoreLibrary/Events/PasserMainEventArgs.cs
new file mode 100644
index 0000000..30999ad
--- /dev/null
+++ b/Sources/CoreLibrary/Events/PasserMainEventArgs.cs
@@ -0,0 +1,13 @@
+
+using System.Security.Cryptography.X509Certificates;
+
+namespace CoreLibrary.Events
+{
+ public class PasserMainEventArgs : EventArgs
+ {
+ public PasserMainEventArgs()
+ {
+
+ }
+ }
+}
diff --git a/Sources/CoreLibrary/Partie.cs b/Sources/CoreLibrary/Partie.cs
index fb61c2c..41a2bd9 100644
--- a/Sources/CoreLibrary/Partie.cs
+++ b/Sources/CoreLibrary/Partie.cs
@@ -1,9 +1,28 @@
-namespace CoreLibrary
+using CoreLibrary.Events;
+
+namespace CoreLibrary
{
public class Partie
{
private IRegles regles;
+ public event EventHandler ajouterJoueur;
+ public event EventHandler debutPartie;
+ public event EventHandler nouveauTour;
+ public event EventHandler ajouterJeton;
+ public event EventHandler ajouterCode;
+ public event EventHandler passerMain;
+ public event EventHandler partieTerminee;
+
+ private void QuandAjouterJoueur(Joueur joueur) => ajouterJoueur?.Invoke(this, new AjouterJoueursEventArgs(joueur));
+ private void QuandDebutPartie() => debutPartie?.Invoke(this, new DebutPartieEventArgs());
+ private void QuandNouveauTour(Joueur joueur, int tour) => nouveauTour?.Invoke(this, new NouveauTourEventArgs(joueur, tour));
+ private void QuandNouveauJeton(Jeton jeton) => ajouterJeton?.Invoke(this, new AjouterJetonEventArgs(jeton));
+ private void QuandNouveauCode(Code code) => ajouterCode?.Invoke(this, new AjouterCodeEventArgs(code));
+ private void QuandPasserMain() => passerMain?.Invoke(this, new PasserMainEventArgs());
+ private void QuandPartieTerminee(IEnumerable gagnants, IEnumerable perdants) => partieTerminee?.Invoke(this, new PartieTermineeEventArgs(gagnants, perdants));
+
+
public Partie(IRegles regles)
{
this.regles = regles;
@@ -11,34 +30,41 @@
public void Jouer()
{
- DefinirJoueurs();
+ DefinirJoueurs();
regles.CommencerLaPartie();
+ QuandDebutPartie();
while (!regles.EstTerminee())
{
Joueur joueurCourant = regles.JoueurCourant();
- Plateau plateauCourant = joueurCourant.Plateau;
+ Plateau plateauCourant = joueurCourant.Plateau;
+
+ QuandNouveauTour(joueurCourant, plateauCourant.Tour);
Code code = regles.GenererCode();
while (!code.EstComplet())
{
- AjouterJeton(code);
+ AjouterJeton(code);
+
}
plateauCourant.AjouterCode(code);
+ QuandNouveauCode(code);
regles.PasserLaMain();
+ QuandPasserMain();
}
PartieTerminee();
-
+ QuandPartieTerminee(regles.Gagnants(), regles.Perdants());
}
private void AjouterJeton(Code code)
{
Jeton jeton = new Jeton(Couleur.ROUGE);
code.AjouterJeton(jeton);
+ QuandNouveauJeton(jeton);
}
private void DefinirJoueurs()
@@ -47,6 +73,7 @@
{
string nom = "pauline";
regles.AjouterJoueur(nom);
+ //QuandAjouterJoueur()
}
}