Jump to content
xanu

[batch] Screensaver

Recommended Posts

xanu

Venho aqui apresentar mais um pequeno programinha em batch...

É um screensaver em que passa vários números aleatórios na janela do MS-Dos.

Basta copiar o código e colocar no bloco de notas e guardar na extensão .bat.

Espero que gostem e seja útil para quem quiser estudar o código.

Podem ver o código aqui:

http://paste.ubuntu.com/642753/

Share this post


Link to post
Share on other sites
thoga31

Podias colocar aqui mesmo o código, referindo por acréscimo esse pastebin. ;)

echo off
title screensaver by:xanu
color 09
cls
setlocal enabledelayedexpansion
set s1=ÛßÛ ÜÛ úßßÛ ßßÛ Û Û Ûßß Ûßß ßßÛ ÛßÛ ÛßÛ
set s2=Û Ûú Û úÛßß ßßÛ ßßÛ ßßÛ ÛßÛúú Û ÛßÛ ßßÛ
set s3=ßßß ßßß ßßß ßßßúú ß ßßß ßßßúú ß ßßß ßßß
::-----012345678901234567890123456789012345678
:begin
for /f "tokens=1" %%u in ('echo %time%') do set t=%%u
set BigDigit=
set /a cts=0
:size
set /a cts=%cts%+1
set r=%random%
if %r% lss 10 set r=%r%0000
if %r% lss 100 set r=%r%000
if %r% lss 1000 set r=%r%00
if %r% lss 10000 set r=%r%0
set BigDigit=%BigDigit%%r%
if %cts% lss 3 goto :size
::%random%%random%
set /a ct=0
set /a ct2=-1
:split
set /a ct=%ct%+1
set /a ct2=%ct2%+1
set t%ct%=!BigDigit:~%ct2%,1!
if not "!t%ct%!"=="" goto split
set /a ct3=1
set l1=
:line1
set /a pos=4*!t%ct3%!
set x%ct3%=!s1:~%pos%,3!
set l1=%l1%³!x%ct3%!
set /a ct3=%ct3%+1
if %ct3% lss %ct% goto line1
echo ±±±±±±±±%l1%³±±±±±±±±
set /a ct3=1
set l2=
:line2
set /a pos=4*!t%ct3%!
set x%ct3%=!s2:~%pos%,3!
set l2=%l2%³!x%ct3%!
set /a ct3=%ct3%+1
if %ct3% lss %ct% goto line2
echo ±±±±±±±±%l2%³±±±±±±±±
set /a ct3=1
set l3=
:line3
set /a pos=4*!t%ct3%!
set x%ct3%=!s3:~%pos%,3!
set l3=%l3%³!x%ct3%!
set /a ct3=%ct3%+1
if %ct3% lss %ct% goto line3
echo ±±±±±±±±%l3%³±±±±±±±±
set /a ticks=0
:wait
set /a ticks=%ticks%+1
::for /f "tokens=1" %%u in ('echo %time%') do set t2=%%u
::if %t2%==%t% goto :wait
::2 linhas anuladas acima definem loop a cada 1 segundo. 
:: a valer linha a baixo pra definir pausa antes de cada loop.
if %ticks% lss 110 goto :wait
:: numero acima pode ser mudado pra alterar velocidade
goto begin


Knowledge is free!

Share this post


Link to post
Share on other sites
xanu

Ainda sou novo por aqui vou aprendendo com o tempo...

Obrigado pela dica assim o farei para a próxima.

E que achas do código?

Share this post


Link to post
Share on other sites
thoga31

E que achas do código?

Não sou especialista em batch, e ainda não experimentei o código. Para já, no comments. :D


Knowledge is free!

Share this post


Link to post
Share on other sites
softklin

Também não tenho grande conhecimento do código, mas até faz um efeito engraçado:

l3qgT.jpg

Isto a deslizar constantemente e a gerar novos números. Usa é muitos recursos de CPU, por isso para screensaver é capaz de nos fritar o PC antes de chegarmos...  :D

Mas está bem conseguido. Podes explicar um pouco o código, xanu? Assim fica mais fácil para quem não percebe muito de batch.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
thoga31

Queria colocar isto na Wiki, mas meto em dev_geral:batch ou em sistemas_operativos:windows:batch? 🤔

Muito bom, mesmo. Está fixe. Para não fritar a CPU, não sei se é possível, pausava-se o programa por uns segundos antes de voltar a processar. :D


Knowledge is free!

Share this post


Link to post
Share on other sites
xanu

Irei explicar o código espero que seja claro na explicação.

Vou dividir o códigos por partes para facilitar a explicação para que possam entender.

1)

echo off
title screensaver by:xanu
color 09
cls
setlocal enabledelayedexpansion
set s1=ÛßÛ ÜÛ úßßÛ ßßÛ Û Û Ûßß Ûßß ßßÛ ÛßÛ ÛßÛ
set s2=Û Ûú Û úÛßß ßßÛ ßßÛ ßßÛ ÛßÛúú Û ÛßÛ ßßÛ
set s3=ßßß ßßß ßßß ßßßúú ß ßßß ßßßúú ß ßßß ßßß
::-----012345678901234567890123456789012345678

Esta a parte inicial do programa. Nesta parte é onde será definido o título, a cor em em seguida ao "cls" os símbolos "ÛßÛ" serão o que vai dar forma aos números.

2)

:begin
for /f "tokens=1" %%u in ('echo %time%') do set t=%%u
set BigDigit=
set /a cts=0

Aqui é a parte em que será definido o tempo de formação da forma dos números.

3)

set /a cts=%cts%+1
set r=%random%
if %r% lss 10 set r=%r%0000
if %r% lss 100 set r=%r%000
if %r% lss 1000 set r=%r%00
if %r% lss 10000 set r=%r%0
set BigDigit=%BigDigit%%r%
if %cts% lss 3 goto :size
::%random%%random%
set /a ct=0
set /a ct2=-1

Esta fase é onde vão ser definidos aleatoriamente os números.

4)

:split
set /a ct=%ct%+1
set /a ct2=%ct2%+1
set t%ct%=!BigDigit:~%ct2%,1!
if not "!t%ct%!"=="" goto split
set /a ct3=1
set l1=

Aqui ele faz somas aos números e faz com que ao chegar ao número 9 volte ao 0.

5)

:line1
set /a pos=4*!t%ct3%!
set x%ct3%=!s1:~%pos%,3!
set l1=%l1%³!x%ct3%!
set /a ct3=%ct3%+1
if %ct3% lss %ct% goto line1
echo ±±±±±±±±%l1%³±±±±±±±±
set /a ct3=1
set l2=
:line2
set /a pos=4*!t%ct3%!
set x%ct3%=!s2:~%pos%,3!
set l2=%l2%³!x%ct3%!
set /a ct3=%ct3%+1
if %ct3% lss %ct% goto line2
echo ±±±±±±±±%l2%³±±±±±±±±
set /a ct3=1
set l3=
:line3
set /a pos=4*!t%ct3%!
set x%ct3%=!s3:~%pos%,3!
set l3=%l3%³!x%ct3%!
set /a ct3=%ct3%+1
if %ct3% lss %ct% goto line3
echo ±±±±±±±±%l3%³±±±±±±±±
set /a ticks=0

Esta é a parte do código em que define as varias linhas. Vai buscar os símbolos da parte 1 do código, com o tempo de formação da parte 2 e mostra os números definidos aleatoriamente.

6)

:wait
set /a ticks=%ticks%+1
::for /f "tokens=1" %%u in ('echo %time%') do set t2=%%u
::if %t2%==%t% goto :wait
::2 linhas anuladas acima definem loop a cada 1 segundo. 
:: a valer linha a baixo pra definir pausa antes de cada loop.
if %ticks% lss 110 goto :wait
:: numero acima pode ser mudado pra alterar velocidade
goto begin

Esta é a fase final do programa em que será definido a velocidade de apresentação dos números.

Aqui podem colocar a velocidade ao vosso gosto para isso alteram na linha

"set /a ticks=%ticks%+1" o valor final, isto é, onde está 1 colocam  velocidade que queiram. Quanto maior for o número que colocarem maior será a velocidade de apresentação dos números.

Share this post


Link to post
Share on other sites
thoga31

xanu, mete na Wiki e com essas explicações. :thumbsup:

Coloca em sistemas_operativos:windows:batch.


Knowledge is free!

Share this post


Link to post
Share on other sites
xanu

Na Wiki na parte sistemas_operativos:windows:batch só tem linux...

Ou é erro meu e não vi??

Share this post


Link to post
Share on other sites
Andrepereira9

Na Wiki na parte sistemas_operativos:windows:batch só tem linux...

Ou é erro meu e não vi??

Ainda não existia nenhum artigo. Mas bastava na barra de endereços, escreveres o caminho completo + o nome do artigo que ele dizia que não exisita e perguntava se querias criar o artigo

Ex:

Eu fiz isso por ti. Agora se quiseres alterar à tua maneira, estás à vontade  :thumbsup::)

Screensaver


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Localhost

Não recomendo a que metam isto na Wiki. Pesquisei um pouco pela WWW e vejam o que encontrei. Link.

Enfim, lamentável...


here since 2009

Share this post


Link to post
Share on other sites
thoga31

Não recomendo a que metam isto na Wiki. Pesquisei um pouco pela WWW e vejam o que encontrei. Link.

Enfim, lamentável...

Obrigado, Localhost. :thumbsup:

De facto, é lamentável plagiar-se da web e não se colocar a fonte, que era o mínimo, tipo "vejam o que encontrei, muito fixe!", e com o link original e não um pastebin no site do ubuntu.

O documento em questão está para análise, e o link redirecciona para a Home Page da Wiki.


Knowledge is free!

Share this post


Link to post
Share on other sites
Andrepereira9

Não recomendo a que metam isto na Wiki. Pesquisei um pouco pela WWW e vejam o que encontrei. Link.

Enfim, lamentável...

É que é exactamente igual.

Nem as linhas de comentário, se deu ao trabalho de alterar...


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Andrepereira9

Quem o meteu na Wiki fui eu.

O Thoga31 disse para ele fazer isso. Mas como ele não sabia como fazer, porque ainda não havia essa secção, eu meti-o lá. Mas como ele deu a entender que tinha sido ele a criar, meti-o como o autor.


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Localhost

Quem o meteu na Wiki fui eu.

O Thoga31 disse para ele fazer isso. Mas como ele não sabia como fazer, porque ainda não havia essa secção, eu meti-o lá. Mas como ele deu a entender que tinha sido ele a criar, meti-o como o autor.

Não estou a falar disso. Estou a falar desta linha no código:

title screensaver by:xanu


here since 2009

Share this post


Link to post
Share on other sites
thoga31

Andrepereira9, calma. Ninguém te culpa de nada. :P

Foi descoberto plágio indevido feito pela xanu, não por ti, quando ele podia ter feito o mesmo mas citando a fonte verdadeira, e não colocando "by xanu", o que, além de violar as regras do fórum, é de má educação para com o autor original e para connosco, que nos quis iludir, dizendo "fui eu que fiz!" :)

A Wiki Team está a discutir sobre este documento. Até uma decisão, tenham calma. :thumbsup:


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

O Xanu não voltou a aparecer :-(

Ele no P@P apareceu, aqui é que não.


O artigo foi eliminado da Wiki por violar as regras não só da Wiki como também do fórum.

Agradecemos, por conseguinte, que passem a citar as fontes quando copiarem algo para aqui, e não tentem fazer que é vosso quando não é, pois se citarem as fontes estão a ir de encontro às regras e estão a contribuir para passar informação que está algures na www para aqui, e se tentarem "ludibriar" estão a ir contra as regras e não estão a respeitar os autores originais.

Em suma, agradecemos as informações, mas se forem externas, que sejam citadas as fontes. :)


Knowledge is free!

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.