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