namespace CoreLibrary { public class CombinaisonIndicateur : Combinaison { public CombinaisonIndicateur(CombinaisonJoueur combinaisonJoueur, CombinaisonSecrete combinaisonSecrete) { if(!combinaisonJoueur.EstComplete()) { throw new ArgumentException("Combinaison non complète"); } JetonJoueur?[] lesJetonsJoueur = new JetonJoueur?[combinaisonJoueur.TailleLogique]; for(int i = 0; i < combinaisonJoueur.TailleLogique; ++i) { lesJetonsJoueur[i] = (JetonJoueur) combinaisonJoueur.GetJeton(i); } JetonJoueur?[] lesJetonsSecret = new JetonJoueur?[combinaisonSecrete.TailleLogique]; for (int i = 0; i < combinaisonSecrete.TailleLogique; ++i) { lesJetonsSecret[i] = (JetonJoueur)combinaisonSecrete.GetJeton(i); } for (int i = 0; i < Combinaison.taillePhysique; ++i) { JetonJoueur? jetonJoueur = lesJetonsJoueur[i]; JetonJoueur? jetonSecret = lesJetonsSecret[i]; if (jetonJoueur is not null && jetonSecret is not null && ComparerJeton(jetonJoueur, jetonSecret)) { AjouterJetonBienPlace(); lesJetonsJoueur[i] = null; lesJetonsSecret[i] = null; } } for (int i = 0; i < Combinaison.taillePhysique; ++i) { JetonJoueur? jetonJoueur = lesJetonsJoueur[i]; if (jetonJoueur is not null && ContientJeton(jetonJoueur, lesJetonsSecret)) { AjouterJetonBonneCouleur(); lesJetonsJoueur[i] = null; lesJetonsSecret[i] = null; } } } 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) { return Array.IndexOf(jetonsSecret, jetonJoueur) != -1; } } }