C++自定的义函数,会被跳过调用是为什么?

请教一下,自定义了一个函数,但是运行发现,函数的调用会被跳过,这是为什么呢
正常输出是小球上下跳动,如果自定义成函数来调用,小球的跳动动画就没有了

#include <graphics.h>
#include<conio.h>

void ball(float x, float y, float r, float g, float vy)
{
    vy += g;    //y方向速度
    y += vy;    //y方向位移
    if (y >= 380) { y = 380; vy = -18; }    //防止小球穿过地面

    cleardevice();
    solidcircle(x, y, r);   //画球
    Sleep(10);
}

int main()
{
    initgraph(600,400);

    float x1 = 100;     //小球x位置
    float y1 = 380;     //小球y位置
    float r1 = 20;      //小球半径

    float g1 = 1;       //小球重力加速度
    float vy1 = -18;    //小球y方向速度

    while (1)
    {
        //下面注释的是可以正常运行的
        /* 
        vy1 += g1;
        y1 += vy1;
        if (y1 >= 380){ y1 = 380; vy1 = -18; }

        cleardevice();
        solidcircle(x1, y1, r1);
        Sleep(10);
        */

        //这行代码是会被跳过的,无法执行,看输出结果似乎是可以执行一次,之后循环都会跳过
        ball(x1, y1, r1, g1, vy1);
    }
    
    _getch();
    return 0;
}

怎么判断被跳过的啊?