Eu tenho alguns códigos no meu programa. Estou tentando executar a tela de carregamento no Terminal usando sleep(int) em um loop for abaixo, mas isso não acontece na ordem correta. Estes são meus 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);
}
Começar Correndo o sono O código está pronto
Me ajude a ser claro!!
Responder1
sleep()
é executado sempre que necessário, mas printf()
não imprime os caracteres imediatamente. Ele armazena em buffer a saída até que uma nova linha seja encontrada. Você deveria fflush(3)
. Consulte a stdio(3)
página do manual para obter detalhes.
Se você estiver manipulando a tela como essa, talvez queira dar uma olhada na ncurses
biblioteca em vez de fazer tudo isso manualmente.
Observe também que definir o tamanho da janela só funciona em vários terminais e é uma má prática discutível. Um aplicativo bem escrito deve funcionar com qualquer tamanho de janela razoável.