//----------------------------------------------------------------------

function forward(step)
{
    var i;
    if( step < 1 ) step = 1;
    if( this.dir == 0 ) {   //  右方向
        for(i = 0; i<step; ++i)
            vicmd("33153#c");
    } else if( this.dir == 1 ) {    //  下方向
        for(i = 0; i<step; ++i)
            vicmd("33155#c");
    } else if( this.dir == 2 ) {    //  左方向
        for(i = 0; i<step; ++i)
            vicmd("33152#c");
    } else if( this.dir == 3 ) {    //  上方向
        for(i = 0; i<step; ++i)
            vicmd("33154#c");
    }
}

function turn(d)
{
    this.dir += d;
    while( this.dir < 0 )
        this.dir += 4;
    this.dir %= 4;
}

function newTurtle()
{
    var obj;
    obj.dir = 0;    //  0:right, 1:down, 2:left, 3:up
    obj.pen = 1;    //  0:up, 1:down
    obj.forward = forward;
    obj.turn = turn;
    return obj;
}

//----------------------------------------------------------------------

function hilbert(tur, n, right)
{
    if( n == 0 ) return;
    tur.turn(right);
    hilbert(tur, n - 1, -right);
    tur.forward(1);
    tur.turn(-right);
    hilbert(tur, n - 1, right);
    tur.forward(1);
    hilbert(tur, n - 1, right);
    tur.turn(-right);
    tur.forward(1);
    hilbert(tur, n - 1, -right);
    tur.turn(right);
}

function main()
{
    newDocument();
    var tur = newTurtle();
    hilbert(tur, 5, 1);
}