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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(in)utilitário


From: Valtoir
Subject: (in)utilitário
Date: Thu, 09 Jun 2005 09:56:18 -0300
User-agent: Mozilla Thunderbird 1.0.2 (X11/20050317)

Olá, pessoal.

Fiz esse script como exercício de lógica e para testar alguns conceitos com 
relação à aleatoriedade e simulação de movimento em modo caractere. Ele cria 
uma tesoura (finjam que aquilo parece uma tesoura :-) ) que fica passeando pela 
tela, em sentido aleatório (esquerda ou direita), numa linha aleatória e com 
cor idem.
Como achei o resultado interessante, decidi divulgar. Vai que alguém melhora o 
código e eu aprendo sobre otimização, ou encontram alguma utilidade :)))

Até pensei em fazer uma espécie de screensaver em modo texto, como aquele 
estilo Matrix que foi postado na lista, mas ao rodar várias instâncias em 
background ao mesmo tempo o rabo torce a porca...

--------------------------------------------------------------------------------------
#!/bin/bash
colors=(31 32 33 34 35 36 37)
color=${colors[$(($RANDOM%${#colors[*]}))]}
columns=$((`tput cols`-3))
row=$(($RANDOM%$((`tput lines`-1))))
direction=$(($RANDOM%2))
setterm -cursor off
if [ "$direction" == "0" ] ; then
  closed=" 8="
  open=" &<"
  direction="0 $columns"
else
  closed="=8 "
  open=">& "
  direction="$columns -1 0"
fi
for column in `seq $direction`; do
 tput cup $row $column
 sleep .3
 echo -e "\e[$color;1m$closed\e[m"
 tput cup $row $column
 sleep .3
 echo -e "\e[$color;1m$open\e[m"
done
tput cup $row $column
echo "   "
setterm -cursor on
--------------------------------------------------------------------------------------

[]'s

Valtoir




reply via email to

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