[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Matrix
From: |
Victor Leonardo |
Subject: |
Matrix |
Date: |
Tue, 10 Aug 2004 16:49:49 -0300 |
Fala meu povo da shell!
Olha eu aí de novo com o screen saver do Matrix. Fiz umas alterações
aqui para serem mostradas mais de uma coluna simultânea. Uma que sempre
cai da linha 1 até a final e outra que começa aleatoriamente e vai
repetindo o loop até a primeira terminar.
Só que tá precisando de uma melhorada. Se alguém puder dar uma mão, vou
agradecer.
Valeu!
Victor
#!/bin/bash
trap "echo -e '\033[m0';clear;setterm -cursor on;exit" 2
clear
prepara () {
setterm -cursor off
Chars="abcdefghijklmnopqrstuvxywzABCDEFGHIJKLMNOPQRSTUVXYWZ01234567890!@#$%¨
&*()_-+=^~{}[];:?"
#clear
while true; do
lin=0
lin1=$((RANDOM%$(tput lines)))
[ ${#Cols[@]} -eq $(($(tput cols)-2)) ] && unset Cols
while true; do
COL=$((RANDOM%$(tput cols)))
COL2=$((RANDOM%$(tput cols)))
[ "${Cols[$COL]}" ] && continue
Cols[$COL]=1
break
done
COR="\e[3$((RANDOM%7+1));1m"
COR2="\e[3$((RANDOM%7+1));1m"
coluna1
done
}
coluna1 () { while [ $lin -lt $(tput lines) ]; do
Char=$(echo $Chars | cut -c$((RANDOM%86+1)))
for i in `seq 1 3`;do
Char1=$(echo $Chars | cut -c$i);sleep 0,000001
tput cup $lin $COL; echo -en "\e[37;1m$Char1"
done
tput cup $lin $COL; echo -en "$COR$Char";sleep 0,0001
let lin++
coluna2
done
prepara
}
coluna2 () { while [ $lin1 -lt $(tput lines) ]; do
Char=$(echo $Chars | cut -c$((RANDOM%86+1)))
for i in `seq 1 3`;do
Char1=$(echo $Chars | cut -c$i);sleep 0,000001
tput cup $lin1 $COL2; echo -en "\e[37;1m$Char1"
done
tput cup $lin1 $COL2; echo -en "$COR2$Char";sleep 0,0001
let lin1++
coluna1
done
[ $lin1 -eq $(tput lines) ] && lin1=$((RANDOM%$(tput
lines)));COL2=$((RANDOM%$(tput cols)));coluna2
}
prepara
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Matrix,
Victor Leonardo <=