iniciar-programa

define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;

define-nueva-instruccion subir_tortuga(a) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        subir_tortuga(sucede(a));
    fin sino inicio
        repetir 2 veces avanza;
        gira(3);
        mientras no-junto-a-zumbador hacer avanza;
        mientras junto-a-zumbador hacer coge-zumbador;
        repetir a veces deja-zumbador;
        gira(2);
        mientras frente-libre hacer avanza;
        gira(1);
        avanza;
        gira(2);
    fin;
fin;

define-nueva-instruccion subir_conejo(b) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        subir_conejo(sucede(b));
    fin sino inicio
        repetir 2 veces avanza;
        repetir b veces deja-zumbador;
        gira(2);repetir 4 veces avanza;
        gira(2);
    fin;
fin;

define-nueva-instruccion pasos(c) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        pasos(sucede(c));
    fin sino inicio
        repetir c veces deja-zumbador;
        repetir c veces avanza;
        mientras junto-a-zumbador hacer coge-zumbador;
        repetir c veces deja-zumbador;
    fin;
fin;


define-nueva-instruccion momento(e) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        momento(sucede(e));
    fin sino inicio
        repetir e veces deja-zumbador;
        repetir 4 veces avanza;
        gira(3);
        repetir e veces pasos(0);
        gira(2);
        mientras frente-libre hacer avanza;
        gira(1);
        avanza;
        gira(1);
        mientras no-junto-a-zumbador hacer avanza;
        repetir e veces pasos(0);
    fin;
fin;

    inicia-ejecucion

    deja-zumbador;
    avanza;
    subir_tortuga(0);
    subir_conejo(0);

    mientras junto-a-zumbador hacer inicio
        momento(0);
        gira(1);
        avanza;
        si junto-a-zumbador entonces inicio
            apagate;
        fin sino inicio
            gira(1);
            mientras frente-libre hacer avanza;
            gira(1);
            mientras frente-libre hacer avanza;
            gira(2);
            deja-zumbador;
        fin;
    fin;

        apagate;
    termina-ejecucion
finalizar-programa
