C语言迷宫小游戏每次移动时重新打印屏幕闪烁怎么解决

如题,每次移动时重新调用一遍print函数导致屏幕闪烁,请问有什么好的解决方案吗?
代码如下


void CreateMaze(int **maze, int x, int y) {//构建迷宫
    maze[x][y] = ROUTE;
    //确保四个方向随机,而不再是固定的上下左右这种排列 
    int direction[4][2] = { { 1,0 },{ -1,0 },{ 0,-1 },{ 0,1 } };
    for (int i = 0; i < 4; i++) {
        int r = rand() % 4;
        int temp = direction[0][0];
        direction[0][0] = direction[r][0];
        direction[r][0] = temp;
        temp = direction[0][1];
        direction[0][1] = direction[r][1];
        direction[r][1] = temp;
    } 
    //向四个方向开挖
    for (int i = 0; i < 4; i++) {
        int dx = x;
        int dy = y;
        //控制挖的距离,由Rank来调整大小
        int range = 1 + (Rank == 0 ? 0 : rand() % Rank);
        while (range > 0) {
            //计算出将要访问到的坐标 
            dx += direction[i][0];
            dy += direction[i][1];
            //排除掉回头路
            if (maze[dx][dy] == ROUTE) {
                break;
            }
            //判断是否挖穿路径
            int count = 0;
            for (int j = dx - 1; j < dx + 2; j++) {
                for (int k = dy - 1; k < dy + 2; k++) {
                    //abs(j - dx) + abs(k - dy) == 1 确保只判断九宫格的四个特定位置
                    if (abs(j - dx) + abs(k - dy) == 1 && maze[j][k] == ROUTE) {
                        count++;
                    }
                }
            }
            //count大于1表明墙体会被挖穿,停止 
            if (count > 1)
                break;
            //确保不会挖穿时,前进
            range -= 1;
            maze[dx][dy] = ROUTE;
        }
        //没有挖穿危险,以此为节点递归
        if (range <= 0) {
            CreateMaze(maze, dx, dy);
        }
    }
}

不想你浪费时间,没法解决。它本身就是靠的打印。