public Itineraire chemin(Pt_cle dep, Pt_cle arr) { List <Itineraire> listIti; // lorsque que les 2 points sont dans le même couloir if (compareList(dep.getCouloir().getNoeudsVoisin(), arr.getCouloir().getNoeudsVoisin()) == false) { List <ListNoeud> listList; listList = rechercheItiNoeud(dep, arr); for (int i = 0; i < listList.Count; i++) { listIti.Add(generationIti(listList[i], dep, arr)); } } else { Itineraire iti = new Itineraire(); List <CaseCouloir> listCase = generationList(dep.getCouloir(), arr.getCouloir()); listCase.Add(arr.getCouloir()); for (int j = 0; j < listCase.Count; j++) { iti.addCase(listCase[j]); } listIti.Add(iti); } iti = itiFinal(listIti); return(iti); }
// la méthode génère une liste de CaseCouloir avec l'aide de la liste des CaseNoeud public Itineraire generationIti(ListNoeud listN, Pt_cle dep, Pt_cle arr) { int lig, col; Itineraire iti = new Itineraire(); List <CaseCouloir> liste = new List <CaseCouloir>(); // liste contenant la case départ jusqu'au premier noeud liste = generationList(dep.getCouloir(), listN[0]); for (int i = 0; i < liste.Count; i++) { iti.addCase(liste[i]); } // boucle pour rajouter toutes les CaseCouloir qui sont entre les CaseNoeud for (int j = 1; j < listN; j++) { liste = generationList(listN[j - 1], listN[j]); for (int k = 0; k < liste.Count; k++) { iti.addCase(liste[k]); } } // ajout des CaseCouloir entre le dernier noeud et le point d'arrivée liste = generationList(listN[listN.Count - 1], arr.getCouloir()); for (int l = 0; l < liste.Count; l++) { iti.addCase(liste[l]); } // ajout du point d'arrivée iti.addCase(arr.getCouloir()); return(iti); }