Ver Indice Geral da Apostila de Shell Script
Aplicação Prática: Jogo Descubra a Senha
Tente criar um jogo simples em que o usuário tem que adivinhar uma senha.
A senha é um número escolhido ao acaso pelo computador, esse número é formado por 4 algarismos que vão de 0 a 9.
Cada vez que o usuário acertar um algarismo o computador escreve de volta o número acertado, se errar o computador mostra um '*' para indicar o erro.
Faça com que o usuário tenha apenas 5 chances para descobrir a Senha.
O meu código ficou:
| senha.sh |
senha1=$((RANDOM % 10 ))
senha2=$((RANDOM % 10 ))
senha3=$((RANDOM % 10 ))
senha4=$((RANDOM % 10 ))
echo "Tente Descobrir a Senha"
for ((x=5;x>=1;x--));
do
echo "Você tem $x chance(s) para achar a senha"
echo "Qual senha você acha que é?"
echo "Digite os quatros algarismos separados por um espaço exemplo: 1 4 3 2"
read resp1 resp2 resp3 resp4
if [ "$resp1" -ne "$senha1" ]; then resp1='*'; fi
if [ "$resp2" -ne "$senha2" ]; then resp2='*'; fi
if [ "$resp3" -ne "$senha3" ]; then resp3='*'; fi
if [ "$resp4" -ne "$senha4" ]; then resp4='*'; fi
if [[ $resp1 = "*" || $resp2 = "*" || $resp3 = "*" || $resp4 = "*" ]]
then
echo "$resp1 $resp2 $resp3 $resp4"
else
echo "Parabéns, você acertou a senha"
exit 0
fi
done
echo "Infelizmente você não descobriu a senha. A senha era:"
echo "$senha1 $senha2 $senha3 $senha4"
|
Explicação do Código:
Comecei o script dando valores aleatórios para os quatro algarismos que compõe a senha
senha1=$((RANDOM % 10 ))
senha2=$((RANDOM % 10 ))
senha3=$((RANDOM % 10 ))
senha4=$((RANDOM % 10 ))
Usei o comando FOR para contar quantas vezes o usuário já jogou.
Repare que dei valor inicial de 5 para "x" e a cada resposta errada o FOR tira 1 da variável "x".
Assim posso usar a variável "x" para informar o usuário quantas chances ele ainda tem para encontrar a senha
Com o comando READ guardei os valores que o usuário informa em quatro variáveis
Usei quatro IFs para verificar se o número enviado pelo usuário é DIFERENTE do número sorteado pelo computador.
Se o número for diferente a variável armazena o símbolo '*'
if [ "$resp1" -ne "$senha1" ]; then resp1='*'; fi
if [ "$resp2" -ne "$senha2" ]; then resp2='*'; fi
if [ "$resp3" -ne "$senha3" ]; then resp3='*'; fi
if [ "$resp4" -ne "$senha4" ]; then resp4='*'; fi
Usei um IF para verificar se pelo menos uma das quatro variáveis contém um '*' armazenado.
Se pelo menos uma das variáveis tiver um '*' então o ECHO mostra na tela todas variáveis.
Lembre que os valores "corretos" permanecem intactos, e os "errados" foram substituídos por um '*'
Se nenhuma das variáveis tiver '*' então todos dígitos só podem estar corretos, logo posso usar um ECHO para escrever uma mensagem parabenizando o usuário.
E em seguida usar o comanto "exit" para encerrar o script
Nota: 9
Postado em: 2008-03-28
Ver Indice Geral da Apostila de Shell Script