EyeLook Posted April 28, 2015 at 07:34 PM Report Share #582074 Posted April 28, 2015 at 07:34 PM (edited) Olá amigos. Cá estou eu outra vez... Desta vez preciso de uma pequena ajuda. Quero me divertir com o Pascal e lembrei-me de fazer uma espécie de Loading, mas não estou a conseguir xD O objetivo era carregar até aos 100% mas ter uma barrinha abaixo a acrescentar umas barrinhas. O código está assim.. letra:='V'; for contaux:=1 to 100 do begin gotoxy (33,7); write ('Carregando ',contaux,'%'); gotoxy (33,9); write (letra); delay (35); end; Já tive separado porque supostamente eu não quero 100 barrinhas mas sim umas 30/40/50 Edited April 28, 2015 at 08:39 PM by thoga31 Tags code + GeSHi Link to comment Share on other sites More sharing options...
thoga31 Posted April 28, 2015 at 08:50 PM Report Share #582076 Posted April 28, 2015 at 08:50 PM Tu estás a escrever letra sempre na mesma posição: (33,9). Portanto, nunca vão aparecer vários "V"s como querias. Se MAXIMUM caracteres corresponde a 100%, então counter % corresponde a x caracteres: MAXIMUM ------> 100 % x ------> counter % x = (counter * MAXIMUM) / 100 POSINIT + (counter * MAXIMUM) div 100 Portanto, counter é um valor que indica, em percentagem, o progresso actual, e esta última linha em Pascal indica-te a posição X da barra. Convém não esquecer que nem sempre o progresso ocorre em saltos de 1%. Portanto, caso haja um salto de 50%, um simples write(letra) vai escrever um "V" sem preencher o que está atrás: De... [VVV ] ... passa a... [VVV V ] Tens de pensar, então, numa forma de preencher o espaço em branco de forma eficiente (sem escrever por cima dos caracteres já escritos em progressos anteriores). Cumprimentos. 1 Report Knowledge is free! Link to comment Share on other sites More sharing options...
passarito Posted April 29, 2015 at 11:01 AM Report Share #582106 Posted April 29, 2015 at 11:01 AM (edited) Eu não costumo fazer isto, mas como o quadro tem estado parado há muito tempo, então cá vai... letra:='V'; tamanho_da_barra:=25; for contaux:=1 to 100 do begin gotoxy (33,7); write ('Carregando ',contaux,'%'); for j:=1 to (contaux div tamanho_da_barra) do begin gotoxy(32+j, 9); write (letra); end; delay (35); end; Nota, se queres dar um styling à coisa, dá um espaço à frente da letra V -> letra:='V '; Edited April 29, 2015 at 11:01 AM by passarito 1 Report Link to comment Share on other sites More sharing options...
EyeLook Posted May 2, 2015 at 09:45 AM Author Report Share #582315 Posted May 2, 2015 at 09:45 AM Muito obrigado aos dois (já tinha visto no próprio dia a resposta mas depois não tive tempo de vir cá agradecer) Link to comment Share on other sites More sharing options...
joao_o grande Posted January 4, 2016 at 08:22 PM Report Share #591338 Posted January 4, 2016 at 08:22 PM (edited) Muito obrigado aos dois (já tinha visto no próprio dia a resposta mas depois não tive tempo de vir cá agradecer) Também já tinha feito um programa do género só que numa procedure para o poder intergrar mais facilmente noutros programas que vou fazendo. No programa principal basta escreveres as coordenadas do L de loading e o tempo total que queres em segundos. EX: Loading_screen(2,2,10); Program Loading_screen;Procedure Loading_screen(x,y,tempo_total_segundos:integer);var aux,tempo_total_milissegundos, x_barras:integer;Begin x_barras:=x+15; for aux:=1 to 100 do begin tempo_total_milissegundos:=tempo_total_segundos*1000; delay(tempo_total_milissegundos DIV 100); Gotoxy(x,y); Write('Loading (',aux,'%) '); If (aux=15) or (aux=30) or (aux=45) or (aux=60) or (aux=75) or (aux=90) or (aux=100) then begin x_barras:=x_barras+2; Gotoxy(x_barras,y); Write(#219); end; End;End;Begin Loading_screen(2,2,10);End.[/Code] Acho que assim é mais sofisticado que o V.... 👍 Espero ter sido útil. Edited January 4, 2016 at 08:24 PM by joao_o grande Link to comment Share on other sites More sharing options...
joao_o grande Posted January 5, 2016 at 12:13 AM Report Share #591359 Posted January 5, 2016 at 12:13 AM Para ficar ainda mais interessante podes atribuir um valor aleatorio entre 5 e 25 por exemplo à variavel tempo_total_segundos. Assim simula a lentidão ou rapidez do teu computador. 😉 👍 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now