iniciar-programa

define-nueva-instruccion come como mientras junto-a-zumbador hacer coge-zumbador;
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;
define-nueva-instruccion media-vuelta como repetir 2 veces gira-izquierda;
define-nueva-instruccion choca como mientras frente-libre hacer avanza;

define-nueva-instruccion deja(n) como inicio
    repetir n veces deja-zumbador;
fin;

define-nueva-instruccion checa como inicio
    norte;
    si frente-libre entonces inicio
        avanza;
        si junto-a-zumbador entonces inicio
            sur;
            avanza;
            si frente-libre entonces inicio
                avanza;
                si junto-a-zumbador entonces inicio
                    norte;
                    avanza;
                    este;
                    si frente-libre entonces inicio
                        avanza;
                        si junto-a-zumbador entonces inicio
                            oeste;
                            avanza;
                            si frente-libre entonces inicio
                                avanza;
                                si junto-a-zumbador entonces inicio
                                    este; avanza;
                                    deja(2);
                                fin sino inicio
                                    este; avanza;
                                    deja(3);
                                fin;
                            fin sino inicio
                                deja(3);
                            fin;
                        fin sino inicio
                            oeste; avanza;
                            deja(3);
                        fin;
                    fin sino inicio
                        deja(3);
                    fin;
                fin sino inicio
                    norte; avanza;
                    deja(3);
                fin;
            fin sino inicio
                deja(3);
            fin;
        fin sino inicio
            sur;
            avanza;
            deja(3);
        fin;
    fin sino inicio
        deja(3);
    fin;
fin;

define-nueva-instruccion busqueda como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
     si no-junto-a-zumbador entonces inicio
                checa;
                 norte;
            si frente-libre entonces inicio
                avanza;
               busqueda;
                sur;
                avanza;
            fin;
            este;
            si frente-libre entonces inicio
                avanza;
                busqueda;
                oeste;
                avanza;
            fin;
            sur;
            si frente-libre entonces inicio
                avanza;
                busqueda;
                norte;
                avanza;
            fin;
            oeste;
            si frente-libre entonces inicio
                avanza;
                busqueda;
                este;
                avanza;
            fin;
        fin sino inicio
            deja-zumbador;
        fin;
    fin;
fin;

define-nueva-instruccion centro como inicio
    sur; choca; oeste; choca; norte;
    mientras derecha-libre hacer inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
             fin sino inicio
                 deja-zumbador;
             fin;
         fin;
         si frente-libre entonces inicio
             avanza;
         fin sino inicio
             este; avanza;
             sur; choca; norte;
         fin;
     fin;
     mientras frente-libre hacer inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
             fin sino inicio
                 deja-zumbador;
             fin;
         fin;
         avanza;
     fin;
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
             fin sino inicio
                 deja-zumbador;
             fin;
         fin;
 fin;

    inicia-ejecucion
        busqueda;
        centro;

        apagate;
    termina-ejecucion
finalizar-programa
