Compare Preços no Buscape e no BondFaro
BuscaPé, líder em comparação de preços na América Latina

Asus Eee PC 0.9 Ghz
512Mb Ram - 4Gb HD

Assim é a Vida
Charlie Brown!

MP6 Emulator
Dynacom 2 Gb

Trilogia Star Wars

CD Silence
Sonata Arctica

Receptor TV ( USB )

Patinho Faminto
www.patinho.net

Apostilas
Expr Regular
Remasterização
SED
Shell Script

Distros
Dizinha
Patinho Faminto

Nerd
Desejo Nerd
Shell Scripts

Artístico
Livro
Musica
Poesias
Tirinhas

Bobagens
Ascii Art
Games Antigos
Porque Amar Nerds
Porque Não Amar Nerds

Eu
About Me
Recomendo
Contato
DOAÇÕES

Amigos
Aurélio
Jogos Antigos
NeoDizinha
Nerds Nervosos
ProibidoParaNormais


* = Recentemente Atualizado



website stats
Locations of visitors to this page

Anúncio provido pelo BuscaPé
BuscaPé, líder em comparação de preços na América Latina

Jogo Descubra a Senha - Parte 2

Vamos modificar o Jogo "Descubra a Senha".
É muito difícil achar a senha sabendo apenas se acertou ou errou cada dígito da senha.
Vamos fazer o computador indicar se cada dígito da senha é maior ou menor que o usuário tentou.
Por exemplo:
Se a senha é: 2345
E o usuário digitar: 5275
O computador deverá mostrar: -+-5

Isso indicará que:
O primeiro dígito da senha é menor que o número tentado
O segundo dígito da senha é maior que o número tentado
O terceiro dígito da senha é menor que o número tentado
O quarto dígito da senha é exatamente o número tentado

descubra_senha2.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" 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

	if [[ $resp1 = "-" || $resp2 = "-" || $resp3 = "-" || $resp4 = "-" || $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

Foi modificado o IF para verificar se o digito colocado pelo usuário é Maior ou Menor que o dígito da senha que o computador selecionou.
O incoveniente é que tivemos que tornar muito maior a linha que verifica se o usuário acertou o digito, ou errou.
Existe uma maneira de tornar essa linha menor?

A resposta é sim
A partir do Bash versão 3, é possível usar expressão regular nas condições IF
Para usar a expressão regular adicionamos um "~" após o sinal de "="
A linha ficará:

if [[ $resp1 =~ [-+] || $resp2 =~ [-+] || $resp3 =~ [-+] || $resp4 =~ [-+] ]]

Atenção! A expressão regular só funcionará se as condições dentro do IF estiverem entre dois colchetes [[ ]]
Se usar a condição entre 1 colchete [ ], o bash retornará erro

 
 

Nota: 8

Votar:
Postado em: 2008-09-11

Doações
Se quer nos ajudar, pode doar pelo PagSeguro

Ou pode doar pelo Paypal clicando no botão DONATE

Compare Produtos, Lojas e Preços


As poesias devem virar um livro impresso?
Claro
Só se tiver menos de 60 páginas
Só se tiver entre 60 e 120 páginas
Só se tiver mais que 120 páginas
Só vou comprar se for barato
Só vou comprar para você ficar feliz
Livro? Que Livro? Que poesia?
Resultado