/**
 * Created by zulupero on 20/06/16.
 */
public class Bug extends Buggle {
    public Bug(int posx, int posy, int dir) {
        super(posx, posy, dir);
    }

    public void enRoute() throws InterruptedException {
        setVitesse(3);
        setX(0);
        setCouleur(StdDraw.BOOK_LIGHT_BLUE);
        baisseBrosse();
        /*
         * mode 0 = tout droit
         * mode 1 = suivi main gauche
         *
         * Principe : la boucle pincipale ligne 21 surveille la sortie,
         *            le switch permet de progresser d'au plus une case
         *            dans l'un des deux modes et décider de la nécessité
         *            de changer de mode.
         *            Cela garatit que l'on ne rate pas la sortie
         */
        int mode = 0 ;
        while(!isSurBiscuit()){
            switch(mode){
                case 0:
                    if(!isFaceMur())
                        avance();
                    else {
											/*
	                     * on ne peut plus aller plein nord,
	                     * on passse donc en mode "suivi main gauche" (1)
	                     */
                    	mode = 1;
										}
                    break;

                case 1:
                    while(isFaceMur()) {
                        droite();
                    }
                    avance();
					gauche();
                    /*
                     * si on fait face au nord, mais pas à un mur,
                     * alors on repassse en mode "tout droit" (0).
                     */
                    if (!isFaceMur() && "N".equals(getDirection()))
                        mode = 0;
            }
        }
        prendBiscuit();
        message("Miam !");
    }
}
