コード例 #1
0
        // FONCTION MiseAjour => via stratégie cherche selon les case adjacentes celle avec
        // le plus de phéromone maison ou nourriture
        public void MiseAjour()
        {
            if (RefCase != null)
            {
                Vie--;

                if (Vie <= 0)
                {
                    RefCase.AjouterASupprimerFourmi(this);
                    RefCase = null;
                }
                else
                {
                    CaseAbstrait newCase = StrategieFourmi.MiseAjour(this);

                    if (newCase != RefCase)
                    {
                        RefCase.AjouterASupprimerFourmi(this);
                        OldCase = RefCase;
                        RefCase = newCase;
                        RefCase.AjouterEnAjoutFourmi(this);
                    }
                }
            }
        }
コード例 #2
0
 public Fourmiliere(CaseAbstrait _RefCase, int fourmisDefaut)
 {
     RefCase = _RefCase;
     for (int i = 0; i < fourmisDefaut; i++)
     {
         RefCase.Fourmis.Add(new Fourmi(RefCase));
     }
 }
コード例 #3
0
        public void GenererFourmis(Terrain terrain, int posX, int posY, int nbFourmis)
        {
            CaseAbstrait CaseAPopuler = terrain.Cases[posX, posY];

            for (int i = 0; i < nbFourmis; i++)
            {
                CaseAPopuler.Fourmis.Add(new Fourmi(CaseAPopuler));
            }
        }
コード例 #4
0
 public Terrain(int number)
 {
     Taille = number;
     Cases  = new CaseAbstrait[number, number];
     for (int i = 0; i < number; i++)
     {
         for (int j = 0; j < number; j++)
         {
             Cases[i, j] = new CaseNormal(this, i, j);
         }
     }
 }
コード例 #5
0
 public CaseAbstrait MiseAjour(Fourmi fourmi)
 {
     if (fourmi.RefCase.ContientFourmiliere())
     {
         return(fourmi.RefCase);
     }
     else
     {
         fourmi.RefCase.AjouterPheromoneNourriture(fourmi.Vie);
         fourmi.RefCase.SupprimerPheromoneMaison(fourmi.Vie);
         List <CaseAbstrait> list = fourmi.RefCase.CasesAdjacentes();
         if (!(fourmi.RefCase is CaseNourriture))
         {
             list.Remove(fourmi.OldCase);
         }
         CaseAbstrait caseOptimal = CaseMaisonOptimal(list);
         return(caseOptimal);
     }
 }
コード例 #6
0
 public Nourriture(CaseAbstrait _RefCase, int _Poids)
 {
     RefCase = _RefCase;
     Poids   = _Poids;
 }
コード例 #7
0
 public Fourmi(CaseAbstrait _RefCase)
 {
     RefCase = _RefCase;
 }