iniciar-programa
define-nueva-instruccion gira-derecha como inicio
repetir 3 veces gira-izquierda;
fin;
define-nueva-instruccion halfturn como inicio
repetir 2 veces gira-izquierda;
fin;
define-nueva-instruccion  horizontal como inicio
mientras no-orientado-al-oeste hacer gira-izquierda;
si frente-libre entonces inicio
avanza;
horizontal;
mientras no-orientado-al-este hacer gira-izquierda;
avanza;
fin
sino
inicio
 deja-zumbador;

fin;
fin;
define-nueva-instruccion vertical como inicio
mientras no-orientado-al-sur hacer gira-izquierda;
si frente-libre entonces inicio
avanza;
vertical;
mientras no-orientado-al-norte hacer gira-izquierda;
avanza;
fin
sino
inicio
horizontal;
fin;
fin;

DEFINE-NUEVA-INSTRUCCION ubicate como inicio
mientras no orientado-al-oeste hacer gira-izquierda;
mientras frente-libre hacer avanza;
gira-izquierda;
mientras frente-libre hacer avanza;
halfturn;
fin;
define-prototipo-instruccion karelitos;
define-prototipo-instruccion busca;
define-nueva-instruccion girls como  inicio
si junto-a-zumbador entonces inicio
coge-zumbador;

fin
sino
inicio
busca;
fin;
fin;

define-nueva-instruccion Karelitos   como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
si junto-a-zumbador entonces inicio

vertical;
girls;
fin;

karelitos;
busca;
fin;
fin;
DEFINE-NUEVA-INSTRUCCION ultima COMO INICIO
 repetir 3 veces si junto-a-zumbador entonces coge-zumbador;
si frente-libre entonces inicio
avanza;
ultima;
avanza;
fin
sino
inicio
repetir 2 veces gira-izquierda;

FIN;
fin;
define-nueva-instruccion busca como inicio
mientras no-orientado-al-norte hacer gira-izquierda;
si  no-junto-a-zumbador y frente-libre entonces inicio
avanza;
busca;
fin
sino
inicio
si junto-a-zumbador entonces karelitos;
si frente-bloqueado y no-orientado-al-este entonces inicio
halfturn;
mientras frente-libre hacer avanza;
gira-izquierda;
si frente-libre entonces avanza;
si frente-bloqueado y no-junto-a-zumbador entonces inicio
gira-izquierda;
ultima;
gira-izquierda;
sal-de-instruccion;
fin;

 busca;

fin;
fin;
fin;
   define-nueva-instruccion acomodalos como inicio
    halfturn ;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    avanza;
    mientras junto-a-zumbador hacer coge-zumbador;
    halfturn;
    avanza;
     gira-DERECHA;
      mientras junto-a-zumbador y frente-libre   hacer  inicio
     deja-zumbador;
     si frente-libre entonces avanza;
     fin;
     si frente-bloqueado y algun-zumbador-en-la-mochila Y JUNTO-A-ZUMBADOR entonces deja-zumbador;
     gira-izquierda;
     avanza;
     gira-izquierda;
     mientras frente-libre hacer avanza;
     halfturn;
     mientras algun-zumbador-en-la-mochila   hacer  inicio
     deja-zumbador;
     si frente-libre entonces avanza;
     fin;
   fin;
   DEFINE-NUEVA-INSTRUCCION ESQUINA COMO INICIO
MIENTRAS JUNTO-A-ZUMBADOR HACER COGE-ZUMBADOR;
DEJA-ZUMBADOR;
AVANZA;
SAL-DE-INSTRUCCION;
FIN;
    inicia-ejecucion
    ubicate;
    SI JUNTO-A-ZUMBADOR  ENTONCES INICIO
    COGE-ZUMBADOR;
    SI JUNTO-A-ZUMBADOR ENTONCES ESQUINA;
    FIN;
    busca;
    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    halfturn;
    avanza;
    avanza;
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
    halfturn;
     avanza;
     avanza;
     mientras junto-a-zumbador hacer coge-zumbador;
     halfturn;
     avanza;
     gira-izquierda;
     mientras algun-zumbador-en-la-mochila   hacer  inicio
     deja-zumbador;
     si frente-libre entonces avanza;
     fin;
     acomodalos;
        apagate;
    termina-ejecucion
finalizar-programa
