diff --git a/BibliothequeClasses/Combinaison.cs b/BibliothequeClasses/Combinaison.cs
index 2ec2547..ffedd46 100644
--- a/BibliothequeClasses/Combinaison.cs
+++ b/BibliothequeClasses/Combinaison.cs
@@ -1,31 +1,16 @@
namespace BibliothequeClasses
{
- public class Combinaison
+ public abstract class Combinaison
{
- private int taillePhysique = 4;
- private int tailleLogique = 0;
- private Jeton[] lesJetons = new Jeton[0];
+ protected static readonly int taillePhysique = 4;
+ public int TailleLogique { get; private set; } = 0;
+ private readonly Jeton[] lesJetons = new Jeton[taillePhysique];
+ protected void AjouterJeton(Jeton jeton) => lesJetons[TailleLogique++] = jeton;
- public Jeton GetJeton(int indice)
- {
- return lesJetons[indice];
- }
+ public Jeton GetJeton(int indice) => lesJetons[indice];
- public void AjouterJeton(Jeton jeton)
- {
- lesJetons[tailleLogique++] = jeton;
- }
-
- public void SupprimerDernierJeton()
- {
- --tailleLogique;
- }
-
- public bool EstComplet()
- {
- return tailleLogique == taillePhysique;
- }
+ protected void SupprimerDernierJeton() => --TailleLogique;
}
}
diff --git a/BibliothequeClasses/CombinaisonIndicateur.cs b/BibliothequeClasses/CombinaisonIndicateur.cs
new file mode 100644
index 0000000..fd21fd1
--- /dev/null
+++ b/BibliothequeClasses/CombinaisonIndicateur.cs
@@ -0,0 +1,40 @@
+namespace BibliothequeClasses
+{
+ public class CombinaisonIndicateur : Combinaison
+ {
+ public CombinaisonIndicateur(CombinaisonJoueur combinaisonJoueur, CombinaisonSecrete combinaisonSecrete)
+ {
+
+ }
+
+ private void AjouterJetonBienPlace()
+ {
+ JetonIndicateur jeton = new JetonIndicateur(Couleur.Noir);
+ base.AjouterJeton(jeton);
+ }
+
+ private void AjouterJetonBonneCouleur()
+ {
+ JetonIndicateur jeton = new JetonIndicateur(Couleur.Blanc);
+ base.AjouterJeton(jeton);
+ }
+
+ private bool ComparerJeton(JetonJoueur jetonJoueur, JetonJoueur jetonSecret)
+ {
+ return jetonJoueur.Couleur == jetonSecret.Couleur;
+ }
+
+ private bool ContientJeton(JetonJoueur jetonJoueur, JetonJoueur[] jetonsSecret)
+ {
+ for(int i = 0; i < jetonsSecret.Length; i++)
+ {
+ if(ComparerJeton(jetonJoueur, jetonsSecret[i]))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/BibliothequeClasses/CombinaisonJoueur.cs b/BibliothequeClasses/CombinaisonJoueur.cs
new file mode 100644
index 0000000..88ba4d8
--- /dev/null
+++ b/BibliothequeClasses/CombinaisonJoueur.cs
@@ -0,0 +1,12 @@
+namespace BibliothequeClasses
+{
+ public class CombinaisonJoueur : Combinaison
+ {
+
+ public void AjouterJeton(JetonJoueur jetonJoueur) => base.AjouterJeton(jetonJoueur);
+
+ public new void SupprimerDernierJeton() => base.SupprimerDernierJeton();
+
+ public bool EstComplete() => base.TailleLogique == Combinaison.taillePhysique;
+ }
+}
diff --git a/BibliothequeClasses/CombinaisonSecrete.cs b/BibliothequeClasses/CombinaisonSecrete.cs
new file mode 100644
index 0000000..9b45ba6
--- /dev/null
+++ b/BibliothequeClasses/CombinaisonSecrete.cs
@@ -0,0 +1,47 @@
+namespace BibliothequeClasses
+{
+ public class CombinaisonSecrete : Combinaison
+ {
+ private static readonly Couleur[] couleurs = (Couleur[])Enum.GetValues(typeof(Couleur));
+ private static readonly Random rand = new Random();
+
+ public CombinaisonSecrete()
+ {
+ for(int i = 0; i < Combinaison.taillePhysique; i++) {
+ this.AjouterJetonAleatoire();
+ }
+ }
+
+ private void AjouterJetonAleatoire()
+ {
+ JetonJoueur jeton = CombinaisonSecrete.GenererJetonAleatoire();
+ base.AjouterJeton(jeton);
+ }
+
+ private static JetonJoueur GenererJetonAleatoire()
+ {
+ int indice = rand.Next(couleurs.Length);
+ Couleur couleur = couleurs[indice];
+
+ return new JetonJoueur(couleur);
+ }
+
+ public bool EstEgale(CombinaisonJoueur combinaisonJoueur)
+ {
+ if(!combinaisonJoueur.EstComplete())
+ {
+ throw new Exception("Combinaison imcomplete");
+ }
+
+ for(int indice = 0; indice < CombinaisonSecrete.taillePhysique; ++indice)
+ {
+ if(this.GetJeton(indice).Couleur != combinaisonJoueur.GetJeton(indice).Couleur)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ }
+}
diff --git a/BibliothequeClasses/Jeton.cs b/BibliothequeClasses/Jeton.cs
deleted file mode 100644
index acbb96d..0000000
--- a/BibliothequeClasses/Jeton.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace BibliothequeClasses
-{
- ///
- /// Class jeton qui peut recuperer la couleu du jeton et la changer
- ///
- public class Jeton
- {
-
- public Couleur Couleur
- {
- get;
- set;
- }
- }
-}
diff --git a/BibliothequeClasses/abc.cs b/BibliothequeClasses/abc.cs
new file mode 100644
index 0000000..234e865
--- /dev/null
+++ b/BibliothequeClasses/abc.cs
@@ -0,0 +1,20 @@
+namespace BibliothequeClasses
+{
+ public enum Couleur { Noir, Blanc, Rouge };
+
+ public abstract class Jeton
+ {
+ public Couleur Couleur { get; set; }
+ public Jeton(Couleur couleur) { }
+ }
+
+ public class JetonJoueur : Jeton
+ {
+ public JetonJoueur(Couleur couleur): base(couleur) { }
+ }
+
+ public class JetonIndicateur : Jeton
+ {
+ public JetonIndicateur(Couleur couleur) : base(couleur) { }
+ }
+}
diff --git a/BibliothequeClasses/couleurs.cs b/BibliothequeClasses/couleurs.cs
deleted file mode 100644
index 7379fd7..0000000
--- a/BibliothequeClasses/couleurs.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace BibliothequeClasses
-{
- ///
- /// Enumeration des 6 couleurs que peuvent prendre les jetons
- ///
- public enum Couleur
- {
- Rouge,
- Bleu,
- Vert,
- Jaune,
- Noir,
- Blanc,
- }
-}
\ No newline at end of file