Algorithme basique de recherche du plus court chemin

Pour conclure avec cette leçon d'introduction aux algorithmes de sortie de labyrinthe, nous allons étudier un autre moyen de trouver la sortie. La buggle de cette leçon est spécial : c'est un jedi. Il peut ressentir la Force. Cela signifie qu'elle peut ressentir son environnement.

Sans même changer de place, elle peut retrouver des informations sur le monde qui l'entoure, avec les instructions suivantes :

Il est bon de noter qu'il n'est pas possible de construire un mur sur la côté inférieur ou droit d'une case. Néanmoins, quand de tels murs existent, cela signifie qu'il a été construit sur une case voisine -- comme mur supérieur (respectivement gauche) sur la case qui est située en dessous (respectivement sur à droite) de la case courante.

Objectif de cet exercice

Votre buggle devrait tout d'abord écrire sur chaque case importante la distance qui la sépare de la sortie.
Pour cela, trouvez la sortie et écrivez 0 dessus. Ensuite, écrivez 1 sur toutes les cases adjacentes à la sortie qui n'en sont pas séparées par un mur. Ensuite, écrivez 2 sur toutes les cases à partir desquelles on peut atteindre une case marquée 1, puis faites de même pour toutes les cases jusqu'à numéroter la case où se trouve votre buggle.

Une fois que toutes les cases sont marquées, faites en sorte que votre buggle jedi trouve le plus court chemin en suivant les indications écrites au sol. Pour celà, il lui suffit à chaque pas d'aller sur la case de plus petite distance parmis celles accessibles. Vous pouvez utiliser la méthode void setDirection(Direction d) pour faire regarder votre buggle dans une direction spécifique comme Direction.NORTH, Direction.SOUTH, Direction.EAST ou Direction.WEST, qui correspondent respectivement au nord, sud, est et ouest.

Utilises la Force Luke !