// 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); } } } }
public Fourmiliere(CaseAbstrait _RefCase, int fourmisDefaut) { RefCase = _RefCase; for (int i = 0; i < fourmisDefaut; i++) { RefCase.Fourmis.Add(new Fourmi(RefCase)); } }
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)); } }
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); } } }
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); } }
public Nourriture(CaseAbstrait _RefCase, int _Poids) { RefCase = _RefCase; Poids = _Poids; }
public Fourmi(CaseAbstrait _RefCase) { RefCase = _RefCase; }