iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte 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 sur como mientras no-orientado-al-sur hacer gira-izquierda;

define-nueva-instruccion busca como
    inicio
        si (frente-bloqueado y derecha-bloqueada y izquierda-bloqueada) o junto-a-zumbador  entonces
            inicio
             si junto-a-zumbador entonces
                 inicio
                     coge-zumbador;
                     si junto-a-zumbador entonces
                         inicio
                             deja-zumbador;
                         fin
                         sino
                        deja-zumbador;
                 fin
                 sino deja-zumbador;
            fin
            sino
                inicio
                 deja-zumbador;
                 deja-zumbador;
                    norte;
                    si frente-libre entonces
                        inicio
                            avanza;
                            busca;
                            sur;
                            avanza;
                        fin
                        sino
                            inicio
                                si derecha-bloqueada y izquierda-bloqueada entonces
                                deja-zumbador;
                            fin;
                   sur;
                    si frente-libre entonces
                        inicio
                            avanza;
                            busca;
                            norte;
                            avanza;
                        fin
                        sino
                            inicio
                                si derecha-bloqueada y izquierda-bloqueada entonces
                                deja-zumbador;
                            fin;
                   este;
                    si frente-libre entonces
                        inicio
                            avanza;
                            busca;
                            oeste;
                            avanza;
                        fin
                        sino
                            inicio
                                si derecha-bloqueada y izquierda-bloqueada entonces
                                deja-zumbador;
                            fin;
                   oeste;
                    si frente-libre entonces
                        inicio
                            avanza;
                            busca;
                            este;
                            avanza;
                        fin
                        sino
                            inicio
                                si derecha-bloqueada y izquierda-bloqueada entonces
                                deja-zumbador;
                            fin;
                                   fin;
    fin;

define-nueva-instruccion buzca como
    inicio
        si no-junto-a-zumbador entonces
            inicio

            fin
            sino
                inicio
                coge-zumbador;
               si junto-a-zumbador entonces
                   inicio
                       coge-zumbador;
                   fin
                   sino deja-zumbador;
                    norte;
                    si frente-libre entonces
                        inicio
                            avanza;
                            buzca;
                            sur;
                            avanza;
                        fin;
                   sur;
                    si frente-libre entonces
                        inicio
                            avanza;
                            buzca;
                            norte;
                            avanza;
                        fin;
                   este;
                    si frente-libre entonces
                        inicio
                            avanza;
                            buzca;
                            oeste;
                            avanza;
                        fin;
                   oeste;
                    si frente-libre entonces
                        inicio
                            avanza;
                            buzca;
                            este;
                            avanza;
                        fin;
                                   fin;
    fin;


define-nueva-instruccion checa como
    inicio
        norte;
        si frente-bloqueado entonces
            inicio
                si derecha-bloqueada entonces
                    inicio
                        si izquierda-bloqueada entonces
                            inicio
                                deja-zumbador;
                            fin;
                    fin;
            fin;
         sur;
         si frente-bloqueado entonces
            inicio
                si derecha-bloqueada entonces
                    inicio
                        si izquierda-bloqueada entonces
                            inicio
                                deja-zumbador;
                            fin;
                    fin;
            fin;
         este;
         si frente-bloqueado entonces
            inicio
                si derecha-bloqueada entonces
                    inicio
                        si izquierda-bloqueada entonces
                            inicio
                                si no-junto-a-zumbador entonces deja-zumbador;
                            fin;
                    fin;
            fin;
        oeste;
        si frente-bloqueado entonces
            inicio
                si derecha-bloqueada entonces
                    inicio
                        si izquierda-bloqueada entonces
                            inicio
                                si no-junto-a-zumbador entonces deja-zumbador;
                            fin;
                    fin;
            fin;
    fin;


    inicia-ejecucion
        si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces
            inicio
                gira-izquierda;
                si izquierda-bloqueada entonces apagate;
            fin;
        busca;
        buzca;
        apagate;
    termina-ejecucion
finalizar-programa
