Tengo algunos códigos en mi programa. Estoy intentando ejecutar la pantalla de carga en la Terminal usando sleep(int) en un bucle for a continuación, pero no lo hace en el orden correcto. Estos son mis códigos:
void LOAD()
{
change_Terminal_Size(75 , 25);
change_Background_To_Green();
fill_The_Screen(75 , 25);
int j;
gotoxy(34,14);
change_Background_To_Black();
printf(" LOADING....");
for(j = 30 ; j <= 50; j++)
{
gotoxy(j,13);
printf(" ");
sleep(1);
}
gotoxy(34,14); printf(" COMPLETED ");
gotoxy(27,16); printf("PRESS ANY KEY TO CONTINUE");
}
void change_Terminal_Size(int width , int height)
{
printf("\e[8;%d;%dt" , height , width);
}
void change_Background_To_Green()
{
printf("\033[42m");
}
void fill_The_Screen(int width , int length)
{
for(int i = 0 ; i < width ; i++)
for(int j = 0 ; j < length ; j++)
printf("%c" , 32);
}
void change_Background_To_Black()
{
printf("\033[40m");
}
void gotoxy(int x, int y)
{
printf("%c[%d;%df", 0x1B, y, x);
}
Comenzar Dormir corriendo El código está hecho
Ayúdame a ser claro!!
Respuesta1
sleep()
se ejecuta cuando es necesario, pero printf()
no imprime los caracteres inmediatamente. Almacena en búfer la salida hasta que se encuentra una nueva línea. Deberías fflush(3)
hacerlo. Consulte la stdio(3)
página del manual para obtener más detalles.
Si está manipulando la pantalla de esta manera, es posible que desee echar un vistazo a la ncurses
biblioteca en lugar de hacer todo esto manualmente.
También tenga en cuenta que configurar el tamaño de la ventana sólo funciona en varios terminales y es una mala práctica discutible. Una aplicación bien escrita debería funcionar con cualquier tamaño de ventana razonable que tenga.