private Vecteur getPointInformation(Coordonnee pointActuel, Coordonnee pointViser) { int tempX = pointViser.x; int tempY = pointViser.y; int ponderationVec = 2; int nouveauPointX = tempX; int nouveauPointY = tempY; if (tempX < 0) { nouveauPointX = sizeX - 1; ponderationVec = 1; } if (tempY < 0) { nouveauPointY = sizeY - 1; ponderationVec = 1; } int maxIndexX = sizeX - 1; if (tempX > maxIndexX) { nouveauPointX = 0; ponderationVec = 1; } int maxIndexY = sizeY - 1; if (tempY > maxIndexY) { nouveauPointY = 0; ponderationVec = 1; } Coordonnee coord = new Coordonnee() { x = nouveauPointX, y = nouveauPointY }; if (isObstacle(coord)) { Vecteur vec = new Vecteur() { coor = coord, ponderation = ponderationVec, obstacle = true }; return(vec); } else { Vecteur vec = new Vecteur() { coor = coord, ponderation = ponderationVec, obstacle = false }; return(vec); } }
private void add_vertex(Coordonnee name, Vecteur edges) { if (!graph.ContainsKey(name)) { graph[name] = new List <Vecteur>() { edges }; } else { List <Vecteur> listEnCours = graph[name]; listEnCours.Add(edges); graph[name] = listEnCours; } }
private IEnumerable <Vecteur> getNoeudAutour(Coordonnee pointActuel) { Stack <Vecteur> stack = new Stack <Vecteur>(); Vecteur pointGauche = getPointInformation(pointActuel, new Coordonnee() { x = pointActuel.x - 1, y = pointActuel.y }); if (!pointGauche.obstacle) { stack.Push(pointGauche); } Vecteur pointDroite = getPointInformation(pointActuel, new Coordonnee() { x = pointActuel.x + 1, y = pointActuel.y }); if (!pointDroite.obstacle) { stack.Push(pointDroite); } Vecteur pointHaut = getPointInformation(pointActuel, new Coordonnee() { x = pointActuel.x, y = pointActuel.y + 1 }); if (!pointHaut.obstacle) { stack.Push(pointHaut); } Vecteur pointBas = getPointInformation(pointActuel, new Coordonnee() { x = pointActuel.x, y = pointActuel.y - 1 }); if (!pointBas.obstacle) { stack.Push(pointBas); } return(stack); }