Pesquisa de site

Aprenda Bash escrevendo um jogo interativo


Programar um jogo simples é uma ótima maneira de praticar um novo idioma e compará-lo com outros que você conhece.

Aprender uma nova linguagem de programação pode ser divertido. Sempre que tento aprender algo novo, concentro-me em definir variáveis, escrever uma declaração e avaliar expressões. Depois de ter uma compreensão geral desses conceitos, geralmente consigo descobrir o resto sozinho. A maioria das linguagens de programação tem algumas semelhanças, portanto, depois de conhecer uma linguagem de programação, aprender a próxima é uma questão de descobrir os detalhes exclusivos e reconhecer as diferenças nela.

Para me ajudar a praticar uma nova linguagem de programação, gosto de escrever alguns programas de teste. Um exemplo de programa que escrevo com frequência é um programa simples de “adivinhe o número”, em que o computador escolhe um número entre um e 100 e me pede para adivinhar o número. O programa faz um loop até que eu adivinhe corretamente.

O programa "adivinhe o número" exercita vários conceitos em linguagens de programação: como atribuir valores a variáveis, como escrever instruções e como realizar avaliações condicionais e loops. É um ótimo experimento prático para aprender uma nova linguagem de programação.

Adivinhe o número no Bash

Bash é o shell padrão para a maioria dos sistemas Linux. Além de fornecer uma interface de usuário de linha de comando avançada, o Bash também oferece suporte a uma linguagem de programação completa na forma de scripts.

Se você não estiver familiarizado com o Bash, recomendo estas introduções:

  • O que é Bash?
  • Comece com a programação Bash
  • Comece a usar scripts Bash para administradores de sistemas
  • Como escrever funções no Bash
  • Leia mais sobre Bash

Você pode explorar o Bash escrevendo uma versão do jogo "adivinhe o número". Aqui está minha implementação:

#!/bin/bash

number=$(( $RANDOM % 100 + 1 ))

echo "Guess a number between 1 and 100"

guess=0

while [ "0$guess" -ne $number ] ; do
	read guess
	[ "0$guess" -lt $number ] && echo "Too low"
	[ "0$guess" -gt $number ] && echo "Too high"
done

echo "That's right!"
exit 0

Detalhando o roteiro

A primeira linha do script, #!/bin/bash diz ao Linux para executar este script usando o shell Bash. Cada script começa com o par de caracteres #!, o que indica que se trata de um script shell. O que segue imediatamente #! é o shell a ser executado. Neste caso, /bin/bash é o shell Bash.

Para atribuir um valor a uma variável, liste o nome da variável seguido do sinal =. Por exemplo, a instrução guess=0 atribui um valor zero à variável guess.

Você também pode solicitar que o usuário insira um valor usando a instrução read. Se você escrever read palpite, o Bash espera que o usuário insira algum texto e então armazena esse valor na variável guess.

Para referenciar o valor de uma variável, use $ antes do nome da variável. Assim, tendo armazenado um valor na variável guess, você pode recuperá-lo usando $guess.

Você pode usar qualquer nome que desejar para variáveis, mas o Bash reserva alguns nomes de variáveis especiais para si mesmo. Uma variável especial é RANDOM, que gera um número aleatório muito grande toda vez que você faz referência a ela.

Se você quiser executar uma operação ao mesmo tempo em que armazena um valor, será necessário colocar a instrução entre colchetes especiais. Isso diz ao Bash para executar essa instrução primeiro, e = armazena o valor resultante na variável. Para avaliar uma expressão matemática, use $ (( )) em torno de sua instrução. Os parênteses duplos indicam uma expressão aritmética. No meu exemplo, number=$ (( $RANDOM % 100 + 1 )) avalia a expressão $RANDOM % 100 + 1 e então armazena o valor no variável de código>número.

Operadores aritméticos padrão, como + (mais), - (menos), * (multiplicar), / ( dividir) e % (módulo) se aplicam.

Isso significa que a instrução number=$ (( $RANDOM % 100 + 1 )) gera um número aleatório entre um e 100. O operador de módulo (%) retorna o resto após a divisão de dois números. Nesse caso, o Bash divide um número aleatório por 100, deixando um resto no intervalo de zero a 99. Ao adicionar um a esse valor, você obtém um número aleatório entre um e 100.

Bash suporta expressões condicionais e controle de fluxo como loops. No jogo "adivinhe o número", o Bash continua em loop desde que o valor em guess não seja igual a number. Se a estimativa for menor que o número aleatório, o Bash imprimirá “Muito baixo” e se a estimativa for maior que o número, o Bash imprimirá “Muito alto”.

Como funciona

Agora que você escreveu seu script Bash, você pode executá-lo para jogar o jogo “adivinhe o número”. Continue adivinhando até encontrar o número correto:

Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!

Cada vez que você executa o script, o Bash escolhe um número aleatório diferente.

Este jogo de “adivinhe o número” é um ótimo programa introdutório ao aprender uma nova linguagem de programação porque exercita vários conceitos comuns de programação de uma forma bastante direta. Ao implementar este jogo simples em diferentes linguagens de programação, você pode demonstrar alguns conceitos básicos e comparar detalhes em cada linguagem.

Você tem uma linguagem de programação favorita? Como você escreveria o jogo "adivinhe o número" nele? Siga esta série de artigos para ver exemplos de outras linguagens de programação que podem lhe interessar.