You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastermind/CoreLibrary/CombinaisonIndicateur.cs

73 lines
2.6 KiB

namespace BibliothequeClasses
{
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;
}
}
}