Пример #1
0
        public void Resoudre()
        {
            _ihm.AfficherRegles(_bdRegles.Regles);
            bool       resteRegles = true;
            BaseRegles reglesDispo = new BaseRegles
            {
                Regles = new List <Regle>(_bdRegles.Regles)
            };

            _bdFaits.RaZ();
            while (resteRegles)
            {
                Tuple <Regle, int> regleIns = TrouverDispo(reglesDispo);
                if (regleIns != null)
                {
                    IFait faitIns = regleIns.Item1.These;
                    faitIns.DefinirNiveau(regleIns.Item2 + 1);
                    _bdFaits.Ajouter(faitIns);
                    reglesDispo.Supprimer(regleIns.Item1);
                }
                else
                {
                    resteRegles = false;
                }
            }
            _ihm.AfficherFaits(_bdFaits.Faits);
        }
Пример #2
0
 private Tuple <Regle, int> TrouverDispo(BaseRegles rDisp)
 {
     foreach (Regle r in rDisp.Regles)
     {
         int iTmp = Applicable(r);
         if (iTmp != -1)
         {
             return(Tuple.Create(r, iTmp));
         }
     }
     return(null);
 }
Пример #3
0
 public Moteur(IHM ihm)
 {
     _ihm      = ihm;
     _bdFaits  = new BaseFaits();
     _bdRegles = new BaseRegles();
 }