//Press <CTRL-t>.













                                                                /* Graphics Not Rendered in HTML */
















//The sprite was created with <CTRL-r>.

U0 ElephantWalk()
{
    I64 sc,
        x = Fs->pix_width >> 1, y = Fs->pix_height >> 1, //Fs is current CTask struct.
        x_last = x;

    AutoComplete;
    WinBorder;
    WinMax;
    DocClear;
    while (TRUE)
    {
        DCFill;
        if (x > x_last)
        {
            DCSymmetrySet(, x, y, x, y - 1);
            gr.dc->flags |= DCF_SYMMETRY | DCF_JUST_MIRROR;
        }
        else
            gr.dc->flags &= ~(DCF_SYMMETRY | DCF_JUST_MIRROR);
        x_last = x;
        Sprite3ZB(gr.dc, x, y, 0, <1>, Sin(8 * tS) / 4);//Use <CTRL-r> "Pointer to Sprite"
        switch (KeyGet(&sc))
        {
            case 0:
                switch (sc.u8[0])
                {//Scan code lowest byte
                    case SC_CURSOR_UP:
                        y -= 32;
                        if (y < 0)
                            y = Fs->pix_height;
                        break;

                    case SC_CURSOR_DOWN:
                        y += 32;
                        if (y > Fs->pix_height)
                            y = 0;
                        break;

                    case SC_CURSOR_LEFT:
                        x -= 32;
                        if (x < 0)
                            x = Fs->pix_width;
                        break;

                    case SC_CURSOR_RIGHT:
                        x += 32;
                        if (x > Fs->pix_width)
                            x = 0;
                        break;
                }
                break;

            case CH_ESC:
            case CH_SHIFT_ESC:
                goto ew_done;
        }
    }
ew_done:
    DCFill;
}

ElephantWalk;