Jogo Descubra a Senha - Parte Final
O jogo "Descubra a Senha" ficaria muito melhor se mostrasse ao usuário todos os seus palpites e o resultado dos palpites,
isso tornaria mais fácil o jogo
Para resolver esse problema é simples, veja o código abaixo:
| descubra_senha3a.sh |
senha1=$((RANDOM % 10 ))
senha2=$((RANDOM % 10 ))
senha3=$((RANDOM % 10 ))
senha4=$((RANDOM % 10 ))
for ((x=5;x>=1;x--));
do
resp=$(Xdialog --stdout --inputbox "Você tem $x chance(s) para achar a senha\n \
Qual senha você acha que é? \n \
Digite os quatros algarismos separados por um espaço exemplo: 1 4 3 2 \n \
$tentativa" 0 0)
resp1=${resp:0:1}
resp2=${resp:2:1}
resp3=${resp:4:1}
resp4=${resp:6:1}
if [ "$senha1" -lt "$resp1" ]; then resp1='-';
elif [ "$senha1" -gt "$resp1" ]; then resp1='+'; fi
if [ "$senha2" -lt "$resp2" ]; then resp2='-';
elif [ "$senha2" -gt "$resp2" ]; then resp2='+'; fi
if [ "$senha3" -lt "$resp3" ]; then resp3='-';
elif [ "$senha3" -gt "$resp3" ]; then resp3='+'; fi
if [ "$senha4" -lt "$resp4" ]; then resp4='-';
elif [ "$senha4" -gt "$resp4" ]; then resp4='+'; fi
tentativa="$tentativa \n Seu Palpite: $resp Resultado: $resp1 $resp2 $resp3 $resp4"
if [[ $resp1 =~ [-+] || $resp2 =~ [-+] || $resp3 =~ [-+] || $resp4 =~ [-+] ]]
then
Xdialog --msgbox "$resp1 $resp2 $resp3 $resp4" 0 0
else
Xdialog --msgbox "Parabéns, você acertou a senha" 0 0
exit 0
fi
done
Xdialog --msgbox "Infelizmente você não descobriu a senha. A senha era: \n \
$senha1 $senha2 $senha3 $senha4" 0 0
|
Só fiz 2 alterações no código.
A primeira foi no Xdialog. Adicionei nele uma quebra de linha ( \n ) e a variável $tentativa.
Assim todos os palpites do usuário serão guardados na variável palpite
A segunda alteração foi adicionar uma linha antes do "if". A linha é a seguinte
tentativa="$tentativa \n Seu Palpite: $resp Resultado: $resp1 $resp2 $resp3 $resp4"
Essa linha armazena na variável "tentativa" o palpite que o usário digitou e o resultado do palpite
Vamos alterar mais uma coisa no jogo.
Toda vez que o usuário insere um palpite abre uma janela mostrando o resultado desse palpite.
Como fizemos uma alteração que armazena todos palpites e resultados, fica um pouco chata essa janela abrindo.
Vamos retirá-la
| descubra_senha3b.sh |
senha1=$((RANDOM % 10 ))
senha2=$((RANDOM % 10 ))
senha3=$((RANDOM % 10 ))
senha4=$((RANDOM % 10 ))
for ((x=5;x>=1;x--));
do
resp=$(Xdialog --stdout --inputbox "Você tem $x chance(s) para achar a senha\n \
Qual senha você acha que é? \n \
Digite os quatros algarismos separados por um espaço exemplo: 1 4 3 2 \n \
$tentativa" 0 0)
resp1=${resp:0:1}
resp2=${resp:2:1}
resp3=${resp:4:1}
resp4=${resp:6:1}
if [ "$senha1" -lt "$resp1" ]; then resp1='-';
elif [ "$senha1" -gt "$resp1" ]; then resp1='+'; fi
if [ "$senha2" -lt "$resp2" ]; then resp2='-';
elif [ "$senha2" -gt "$resp2" ]; then resp2='+'; fi
if [ "$senha3" -lt "$resp3" ]; then resp3='-';
elif [ "$senha3" -gt "$resp3" ]; then resp3='+'; fi
if [ "$senha4" -lt "$resp4" ]; then resp4='-';
elif [ "$senha4" -gt "$resp4" ]; then resp4='+'; fi
tentativa="$tentativa \n Seu Palpite: $resp Resultado: $resp1 $resp2 $resp3 $resp4"
if ! [[ $resp1 =~ [-+] || $resp2 =~ [-+] || $resp3 =~ [-+] || $resp4 =~ [-+] ]]
then
Xdialog --msgbox "Parabéns, você acertou a senha" 0 0
exit 0
fi
done
Xdialog --msgbox "Infelizmente você não descobriu a senha. A senha era: \n \
$senha1 $senha2 $senha3 $senha4" 0 0
|
Para retirar a janela adicionei um ponto de exclamação logo após o "if"
if ! [[ $resp1 =~ [-+] || $resp2 =~ [-+] || $resp3 =~ [-+] || $resp4 =~ [-+] ]]
Isso altera a lógica do IF, que seria de "Se" para "Se não"
Ou seja:
SE $resp1 for diferente de - + OU SE $resp2 for diferente de - + OU SE $resp3 for diferente de - + OU SE $resp4 for diferente de - +
ENTÃO Abre a Xdialog dizendo parabéns e em seguida o script é terminado
Outra coisa que fiz foi apagar de dentro do IF a linha:
Xdialog --msgbox "$resp1 $resp2 $resp3 $resp4" 0 0
Que era justamente a linha que abria o Xdialog
Nota: 10
Postado em: 2008-09-16