Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Feliz 2011
Colaboração: Júlio Cezar Neves
Data de Publicação: 01 de janeiro de 2011
Meus amigos,
Como um nerd poderia desejar Feliz Ano Novo? Obviamente com um scriptinho... )
Favor executar o script em anexo em um terminal e tenham um 2011 cheio de suShellso e Sw Livre.
Para funcionar, você precisa ter o pacote zenity instalado em seu computador e executar o script em modo gráfico.
Se der algum problema, favor reportar.
Abraços,
Julio
AnoNovo.sh
#!/bin/bash
#
# Brincadeira de Ano Novo
# Autor: Julio Neves
#
trap 'tput cnorm; tput sgr0; clear; exit' 0 2 3 15
Cor=6
function ApagaAcende
{
tput cup $[Lin - 4] $[Meio + 1]
((n == 0)) && {
echo "TIM TIM"
n=1
return
}
tput el
n=0
}
function Cab
{
Cor=$[Cor == 7?0:++Cor]
tput setaf $Cor; tput bold
tput cup 0 0
echo "
FFFFFFF EEEEEEE LLL III ZZZZZZZ 22222 0000 1111 1111
FFFFFFF EEEEEEE LLL III ZZZZZZZ 2222222 000000 11111 11111
FFF EEE LLL III ZZZ 22 222 000 000 11 111 11 111
FFFFF EEEEE LLL III ZZZ 222 000 000 111 111
FFFFF EEEEE LLL III ZZZ 222 000 000 111 111
FFF EEE LLL III ZZZ 222 000 000 111 111
FFF EEEEEEE LLLLLLL III ZZZZZZZ 2222222 000000 1111111 1111111
FFF EEEEEEE LLLLLLL III ZZZZZZZ 2222222 0000 1111111 1111111"
tput setaf 3
}
function FazBolha
{
for k in 1 2
do
y=0
for Sai in 2 4 6 6
do
C1=$[Sai == 2?$[Meio + 1]:$[Sai == 4?Meio - 0:Meio - 1]]
C2=$[Sai == 2?$[Meio + 7]:$[Sai == 4?Meio + 6:Meio + 5]]
Var=
for ((j=1; j<=Sai; j++))
{
Var=$Var$[RANDOM % 2]" "
}
x=0
let y++
for SN in $Var
do
((SN)) && {
tput cup $[Lin + 2 - y] $[k == 1?C1 + x:C2 + x]
echo .
}
let x++
done
done
done
}
Cols=5
Fim=$(tput cols)
while ((Fim < 96))
do
tput flash
zenity --error --text "Ponha o terminal em\nModo de tela cheia" || exit 1
Fim=$(tput cols)
done
Meio=$[Fim / 2 - 5]
Lin=$[$(tput lines) - 7]
tput civis
tput setab 1
tput bold
tput setaf 3
clear
for ((i=1; i<$Meio; i++))
do
tput cup $Lin $[i - 1]; echo ' '
tput cup $[Lin + 1] $[i - 1]; echo ' '
tput cup $[Lin + 2] $[i - 1]; echo ' '
tput cup $[Lin + 3] $[i - 1]; echo ' '
tput cup $[Lin + 4] $[i - 1]; echo ' '
tput cup $[Lin + 5] $[i - 1]; echo ' '
tput cup $Lin $i; echo '\____/'
tput cup $[Lin + 1] $i; echo ' \ /'
tput cup $[Lin + 2] $i; echo ' \/'
tput cup $[Lin + 3] $i; echo ' ||'
tput cup $[Lin + 4] $i; echo ' ||'
tput cup $[Lin + 5] $i; echo ' (__)'
tput cup $Lin $[Fim - i - 5]; echo ' '
tput cup $[Lin + 1] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 2] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 3] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 4] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 5] $[Fim - i - 5]; echo ' '
tput cup $Lin $[Fim - i - 6]; echo '\____/'
tput cup $[Lin + 1] $[Fim - i - 6]; echo ' \ /'
tput cup $[Lin + 2] $[Fim - i - 6]; echo ' \/'
tput cup $[Lin + 3] $[Fim - i - 6]; echo ' ||'
tput cup $[Lin + 4] $[Fim - i - 6]; echo ' ||'
tput cup $[Lin + 5] $[Fim - i - 6]; echo ' (__)'
Cab
done
for ((f=0; f<5; f++))
{
tput flash
sleep 0.02
}
while true
do
((++Conta % 6)) || ApagaAcende
FazBolha
Cab
sleep 0.05
y=0
for Sai in 2 4 6 6
do
let y++
C1=$[Sai == 2?$[Meio + 1]:$[Sai == 4?Meio - 0:Meio - 1]]
C2=$[Sai == 2?$[Meio + 7]:$[Sai == 4?Meio + 6:Meio + 5]]
for ((j=1; j<=Sai; j++))
{
Trab="$Trab"$(((Sai == 4)) && echo -n _ || echo -n ' ')
}
tput cup $[Lin + 2 - y] $C1
echo "$Trab"
tput cup $[Lin + 2 - y] $C2
echo "$Trab"
Trab=
done
Cab
sleep 0.05
done
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
02 Jan 2011, 18:37
Feliz ano novo ao Julio Cezar, Rubens Queiroz e leitores da Dicas-L!
02 Jan 2011, 02:24
01 Jan 2011, 14:14
Obrigado, desejo a você e a todos os aficionados por SL um 2011 realmente código aberto, tanto no software como na mente!
[]s
Pedro Moura
01 Jan 2011, 12:05
Coisa de nerd....
Um ótimo 2011 pra toda a equipe!!!
01 Jan 2011, 11:54
Quero ver fazer em 1 linha. (brincadeirinha...)
Feliz ano novo!
01 Jan 2011, 01:52




