shell-script-pt
[Top][All Lists]
Advanced

[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   




reply via email to

[Prev in Thread] Current Thread [Next in Thread]