iniciar-programa
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 a como
  inicio
   norte;
   avanza;
   mientras junto-a-zumbador hacer avanza;
   deja-zumbador;
   repetir 2 veces gira-izquierda;
   avanza;
    mientras junto-a-zumbador hacer
     inicio
      coge-zumbador;
       si no junto-a-zumbador entonces
        inicio
          deja-zumbador;
          avanza;
        fin
       sino
        inicio
         deja-zumbador;
         sal-de-instruccion;
        fin;
     fin;
  fin;

define-nueva-instruccion b como
  inicio
    oeste;
   avanza;
   mientras junto-a-zumbador hacer avanza;
   deja-zumbador;
   repetir 2 veces gira-izquierda;
   avanza;
    mientras junto-a-zumbador hacer
     inicio
      coge-zumbador;
       si no junto-a-zumbador entonces
        inicio
          deja-zumbador;
          avanza;
        fin
       sino
        inicio
         deja-zumbador;
         sal-de-instruccion;
        fin;
     fin;
  fin;

define-nueva-instruccion c como
  inicio
    sur;
   avanza;
   mientras junto-a-zumbador hacer avanza;
   deja-zumbador;
   repetir 2 veces gira-izquierda;
   avanza;
    mientras junto-a-zumbador hacer
     inicio
      coge-zumbador;
       si no junto-a-zumbador entonces
        inicio
          deja-zumbador;
          avanza;
        fin
       sino
        inicio
         deja-zumbador;
         sal-de-instruccion;
        fin;
     fin;
  fin;

define-nueva-instruccion d como
  inicio
    este;
   avanza;
   mientras junto-a-zumbador hacer avanza;
   deja-zumbador;
   repetir 2 veces gira-izquierda;
   avanza;
    mientras junto-a-zumbador hacer
     inicio
      coge-zumbador;
       si no junto-a-zumbador entonces
        inicio
          deja-zumbador;
          avanza;
        fin
       sino
        inicio
         sal-de-instruccion;
        fin;
     fin;
  fin;

define-nueva-instruccion kabolaempiezo como
 inicio
  coge-zumbador;
  norte;
  avanza;
  deja-zumbador;
  sur;
  avanza;
  avanza;
  deja-zumbador;
  norte;
  avanza;
  este;
  avanza;
  deja-zumbador;
  oeste;
  avanza;
  avanza;
  deja-zumbador;
  este;
  avanza;
 fin;

define-nueva-instruccion kabola como
 inicio
  a;
  b;
  c;
  d;
 fin;


define-nueva-instruccion kabolafin como
 inicio
  norte;
  avanza;
  mientras junto-a-zumbador hacer avanza;
  deja-zumbador;
  sur;
  mientras junto-a-zumbador hacer avanza;
 avanza;
  mientras junto-a-zumbador hacer avanza;
  deja-zumbador;
  norte;
  mientras junto-a-zumbador hacer avanza;
  este;
  avanza;
  mientras junto-a-zumbador hacer avanza;
  deja-zumbador;
  oeste;
  mientras junto-a-zumbador hacer avanza;
  avanza;
  mientras junto-a-zumbador hacer avanza;
  deja-zumbador;
  este;
  mientras junto-a-zumbador hacer avanza;
  sal-de-instruccion;
 fin;

define-nueva-instruccion marcarkabola como
 inicio
   coge-zumbador;
    si no junto-a-zumbador entonces
     inicio
      kabolafin;
     fin
      sino
       inicio
        deja-zumbador;
       fin;
  si junto-a-zumbador entonces  kabola;
 fin;

define-nueva-instruccion recoge1 como
 inicio
  norte;
   avanza;
  mientras junto-a-zumbador y frente-libre hacer avanza;
  repetir 2 veces gira-izquierda;
 si no junto-a-zumbador entonces avanza;
  avanza;
   mientras junto-a-zumbador hacer
    inicio
     coge-zumbador;
     avanza;
    fin;
 fin;

define-nueva-instruccion recoge2 como
 inicio
  oeste;
   avanza;
  mientras junto-a-zumbador y frente-libre hacer avanza;
  repetir 2 veces gira-izquierda;
  si no junto-a-zumbador entonces avanza;
  avanza;
   mientras junto-a-zumbador hacer
    inicio
     coge-zumbador;
     avanza;
    fin;
 fin;

define-nueva-instruccion recoge3 como
 inicio
  sur;
   avanza;
  mientras junto-a-zumbador y frente-libre hacer avanza;
  repetir 2 veces gira-izquierda;
  si no junto-a-zumbador entonces avanza;
  avanza;
   mientras junto-a-zumbador hacer
    inicio
     coge-zumbador;
     avanza;
    fin;
 fin;

define-nueva-instruccion recoge4 como
 inicio
  este;
  avanza;
  mientras junto-a-zumbador y frente-libre hacer avanza;
  repetir 2 veces gira-izquierda;
  si no junto-a-zumbador entonces avanza;
  avanza;
   mientras junto-a-zumbador hacer
    inicio
     coge-zumbador;
     avanza;
    fin;
 fin;

define-nueva-instruccion linea1 como
 inicio
  norte;
  mientras no junto-a-zumbador hacer avanza;
  gira-izquierda;
  avanza;
  gira-izquierda;
  avanza;
   mientras no junto-a-zumbador hacer
    inicio
     deja-zumbador;
      oeste;
      avanza;
      sur;
      avanza;
    fin;
 fin;

define-nueva-instruccion linea2 como
 inicio
  avanza;
  este;
  avanza;
   mientras no junto-a-zumbador hacer
    inicio
     deja-zumbador;
     sur;
     avanza;
     este;
     avanza;
    fin;
 fin;

define-nueva-instruccion linea3 como
 inicio
   avanza;
   norte;
   avanza;
    mientras no junto-a-zumbador hacer
     inicio
      deja-zumbador;
      este;
      avanza;
      norte;
      avanza;
     fin;
 fin;

define-nueva-instruccion linea4 como
 inicio
  avanza;
  oeste;
  avanza;
   mientras no junto-a-zumbador hacer
    inicio
      deja-zumbador;
      norte;
      avanza;
      oeste;
      avanza;
    fin;
 fin;

    inicia-ejecucion
     si no junto-a-zumbador entonces
      inicio
       si algun-zumbador-en-la-mochila entonces deja-zumbador;
     apagate;
      fin;
     si junto-a-zumbador entonces
      inicio
      kabolaempiezo;
      si no junto-a-zumbador entonces apagate;
   mientras junto-a-zumbador hacer marcarkabola;
      fin;
       recoge1;
       recoge2;
       recoge3;
       recoge4;

       linea1;
       linea2;
       linea3;
       linea4;
        apagate;
    termina-ejecucion
finalizar-programa
