c语言中在无语法错误情况下outtextxy等语句为什么突然无法被读取?

已经测试了当满足条件时if内语句可以正常运行,可为什么输出不了文字?
并且在这个else if上面还有十个和这个相似的else if是可以正常输出
加载了easyx插件

img

大一机械狗 不专业格式有点不好……
问题位于bewalk最后部分跳转到talk01最后部分的时候

void bewalk()
{
    
    if (gload != 0)
        putimage(x, y, 45, 60, &people, 0, 0,SRCINVERT); //判断是否有存档信息
    else if ( do1==0 )//游戏开始时出生位置默认于沙发旁
    {
        x=200; y=100;
    }
    else if (do1==1) //如果不是第一次到达地图 则于楼梯口处出现
    {
        x=295; y=100;
    }
    
    BeginBatchDraw();
    
    while (walk==0)
    {
        if (kbhit())  // 判断是否有输入
        {
            input = getch();
            if (y<=106)
            {
                if (input == 'a')  // 左移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);//重新绘制地图
                    left_i++;
                    if (x>200) // 没有达到右边的墙,才移动小人的坐标
                        x = x - 5; //控制小人右移速度
                    putimage(x, y, 45, 60, &people, left_i * 45, 60, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (left_i == 3)
                        left_i = 0;
                }
                
                else if (input == 'd')  // 右移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);
                    right_i++;
                    if (x<390) // 没有达到右边的墙,才移动小人的坐标
                        x = x + 5; //控制小人右移速度
                    putimage(x, y, 45, 60, &people, right_i * 45, 180, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (right_i == 3)
                        right_i = 0;
                }
            }
            
            else if (y>100 && y<=135)
            {
                if (input == 'a')  // 左移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);//重新绘制地图
                    left_i++;
                    if (x>230) // 没有达到左边的墙,才移动小人的坐标
                        x = x - 5; //控制小人左移速度
                    putimage(x, y, 45, 60, &people, left_i * 45, 60, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (left_i == 3)
                        left_i = 0;
                }
                
                else if (input == 'd')  // 右移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);
                    right_i++;
                    if (x<390) // 没有达到右边的墙,才移动小人的坐标
                        x = x + 5; //控制小人右移速度
                    putimage(x, y, 45, 60, &people, right_i * 45, 180, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (right_i == 3)
                        right_i = 0;
                }
            }
            else if (y>100 && y<=340)
            {
                if (input == 'a')  // 左移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);//重新绘制地图
                    left_i++;
                    if (x>230) // 没有达到左边的墙,才移动小人的坐标
                        x = x - 5; //控制小人左移速度
                    putimage(x, y, 45, 60, &people, left_i * 45, 60, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (left_i == 3)
                        left_i = 0;
                }
                
                else if (input == 'd')  // 右移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);
                    right_i++;
                    if (x<295) // 没有达到右边的墙,才移动小人的坐标
                        x = x + 5; //控制小人右移速度
                    putimage(x, y, 45, 60, &people, right_i * 45, 180, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (right_i == 3)
                        right_i = 0;
                }
            }
            
            
            if (x >= 230 && x<=390)
            {
                if (input == 'w')  // 上移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);//重新绘制地图
                    up_i++;
                    if (y > 100) // 没有达到上边的墙,才移动小人的坐标
                        y = y - 5; //控制小人上移速度
                    putimage(x, y, 45, 60, &people, up_i * 45, 120, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (up_i == 3)
                        up_i = 0;
                }
                
                else if (input == 's')  // 下移
                {
                    clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                    putimage(0, 0, &bk1);
                    down_i++;
                    if (y < 135) // 没有达到下边的墙,才移动小人的坐标
                        y = y + 5; //控制小人下移速度
                    putimage(x, y, 45, 60, &people, down_i * 45, 0, SRCINVERT);
                    FlushBatchDraw();
                    Sleep(1);
                    if (down_i == 3)
                        down_i = 0;
                }
            }
            
            if (x >= 230 && x<=295)
            {
                if (y>=135)
                {
                    if (input == 'w')  // 上移
                    {
                        clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                        putimage(0, 0, &bk1);//重新绘制地图
                        up_i++;
                        if (y > 100) // 没有达到上边的墙,才移动小人的坐标
                            y = y - 2; //控制小人上移速度
                        putimage(x, y, 45, 60, &people, up_i * 45, 120, SRCINVERT);
                        FlushBatchDraw();
                        Sleep(1);
                        if (up_i == 3)
                            up_i = 0;
                    }
                    
                    else if (input == 's')  // 下移
                    {
                        clearrectangle(x, y, x + 45, y + 60);    // 清空画面全部矩形区域
                        putimage(0, 0, &bk1);
                        down_i++;
                        if (y < 335) // 没有达到下边的墙,才移动小人的坐标
                            y = y + 5; //控制小人下移速度
                        putimage(x, y, 45, 60, &people, down_i * 45, 0, SRCINVERT);
                        FlushBatchDraw();
                        Sleep(1);
                        if (down_i == 3)
                            down_i = 0;
                    }
                }
            }
            if (x>=235 && x<=255)
                w1_01=1;
            if (y<=340 && y>=300)
                w1_02=1;
            if (x<=390 && x>=380)
                w1_03=1;
            if (w1_01==1 && w1_02==1 && w1_03==1 && x>=285 && x<=300 && y<=110 && y>=95)
            {
                talk=0; //开启对话的while循环
                do1=1;
                walk=1; //关闭行走的while循环
            }
                
        }
    }
}


void talk01() //控制第一个场景的对话文本信息
{
    MOUSEMSG m;        // 定义鼠标消息
    while (talk==0)
    {
        m = GetMouseMsg();        
        
        if (talk1==1)
        {
            Sleep(1000);
            clearrectangle(0, 588, 700, 800);
            setcolor(RGB(43,138,232));
            settextstyle(30,0, _T("黑体"));
            outtextxy(105, 660, "早晨,你在沙发上醒来……");
            talk1=2;
            walk=1;
        }
        
        else if (talk1==2)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "你甩了甩头,发现自己还在昨晚团建的轰趴馆里");
                talk1++;
            }
        }
        
        else if (talk1==3)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "可周围却不是熟悉的伙伴,而是一群陌生人");
                talk1++;
            }
        }
        else if (talk1==4)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "你来不及细想这是为什么");
                talk1++;
            }
        }
        else if (talk1==5)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "因为你看了看手机上的时间");
                talk1++;
            }
        }
        else if (talk1==6)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "发现C语言课就要开始了!");
                talk1++;
            }
        }
        else if (talk1==7)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "你马上从沙发上翻了个跟头滚了下去");
                putimage(200, 100, 45, 60, &people, 0, 0,SRCINVERT);
                talk1++;
            }
        }
        else if (talk1==8)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "不顾周围异样的目光,寻找着你的书本");
                talk1++;
            }
        }
        else if (talk1==9)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(30, 660, "并祈祷能按时抵达教室……");
                talk1++;
            }
        }
        else if (talk1==10)
        {
            if (m.uMsg == WM_LBUTTONDOWN)
            { 
                Sleep(1000);
                clearrectangle(0, 588, 700, 800);
                setcolor(RGB(43,138,232));
                settextstyle(30,0, _T("黑体"));
                outtextxy(270, 620, "<游戏开始>");
                outtextxy(230, 660, "所在地点:轰趴馆");
                outtextxy(130, 700, "游戏目标:找到书本并抵达教室");
                talk1++;

                talk=1; //关闭对话的while循环
                walk=0; //开启行走的while循环
            }
        }
        else if (talk1==11) 
        { 
            clearrectangle(0, 588, 700, 800);
            setcolor(RGB(43,138,232));
            settextstyle(30,0, _T("黑体"));
            outtextxy(30, 660, "似乎这里并没有你的书本,是否前往下一个地方");
            talk1++;
        }
        
    }
    
}

void gamestar() //控制游戏整体逻辑
{
    while (1)
    {
        be();
        talk01();
        bewalk();
    
        //initgraph(700, 800);
    }
}

虽然我没学过easyx,但能猜到你这个outtextxy函数是用来在窗口指定位置显示文本的
1.查看窗口是否有其他元素遮挡文本
2.你的坐标说不定超出了窗口的范围
3.如果这两项都没问题,你再看看这个语句块与上面的有什么不一样,为什么最后一个语句块没有进行嵌套再判断,就直接执行,并且也没有sleep,
如果上面的建议对你有用,点击右上角给个采纳哦~