Como criar um jogo de adivinhação em Python
Crie um jogo onde o computador escolhe um número e você tenta adivinhar. Seu primeiro projeto completo em Python.
O que vamos construir?
Um jogo simples: o computador escolhe um número aleatório entre 1 e 100, e você tenta adivinhar. A cada tentativa, ele diz se o número é maior ou menor. No final, mostra quantas tentativas foram necessárias.
É um projeto clássico para quem está começando porque usa tudo que você aprendeu na trilha Python do Zero: variáveis, condicionais, loops e input do usuário.
Gerando um número aleatório
Python tem um módulo embutido chamado random que gera números aleatórios. Vamos usar a função randint():
import random
numero_secreto = random.randint(1, 100)
print(numero_secreto) # so para testar, depois removemos
A função randint(1, 100) retorna um número inteiro entre 1 e 100, incluindo os dois extremos.
Pedindo o palpite do jogador
Agora precisamos pedir que o jogador digite um número. Lembre-se: input() sempre retorna uma string, então precisamos converter para inteiro com int():
palpite = int(input("Digite seu palpite: "))
Mas e se a pessoa digitar uma letra em vez de um número? O programa vai dar erro. Vamos tratar isso:
try:
palpite = int(input("Digite seu palpite: "))
except ValueError:
print("Digite apenas numeros!")
Comparando o palpite
Com if, elif e else, verificamos se o palpite é maior, menor ou igual ao número secreto:
if palpite < numero_secreto:
print("Muito baixo! Tente um numero maior.")
elif palpite > numero_secreto:
print("Muito alto! Tente um numero menor.")
else:
print("Parabens! Voce acertou!")
Repetindo com um loop
O jogo precisa continuar até o jogador acertar. Para isso, usamos um loop while:
import random
numero_secreto = random.randint(1, 100)
tentativas = 0
acertou = False
print("=== Jogo de Adivinhacao ===")
print("Pensei em um numero entre 1 e 100.")
print()
while not acertou:
try:
palpite = int(input("Seu palpite: "))
except ValueError:
print("Digite apenas numeros!")
continue
tentativas += 1
if palpite < numero_secreto:
print("Muito baixo! Tente um numero maior.")
elif palpite > numero_secreto:
print("Muito alto! Tente um numero menor.")
else:
acertou = True
print(f"Parabens! Voce acertou em {tentativas} tentativa(s)!")
Vamos entender cada parte:
tentativasconta quantas vezes o jogador tentouacertoucomeça comoFalsee viraTruequando o jogador acertacontinuepula para a próxima iteração quando o input é inválido- O loop roda enquanto
acertouforFalse
Adicionando limites de tentativas
Para deixar o jogo mais desafiador, podemos limitar o número de tentativas:
import random
numero_secreto = random.randint(1, 100)
max_tentativas = 7
tentativas = 0
print("=== Jogo de Adivinhacao ===")
print(f"Pensei em um numero entre 1 e 100. Voce tem {max_tentativas} tentativas.")
print()
while tentativas < max_tentativas:
try:
palpite = int(input(f"Tentativa {tentativas + 1}/{max_tentativas}: "))
except ValueError:
print("Digite apenas numeros!")
continue
tentativas += 1
if palpite < numero_secreto:
print("Muito baixo!")
elif palpite > numero_secreto:
print("Muito alto!")
else:
print(f"Parabens! Voce acertou em {tentativas} tentativa(s)!")
break
else:
print(f"Suas tentativas acabaram! O numero era {numero_secreto}.")
A novidade aqui é o else do while: ele executa quando o loop termina normalmente (sem break). Ou seja, se o jogador não acertou em nenhuma tentativa.
Dicas para ir além
Agora que você tem o jogo funcionando, tente melhorar por conta própria:
- Níveis de dificuldade: fácil (1-50, 10 tentativas), médio (1-100, 7 tentativas), difícil (1-200, 7 tentativas)
- Jogar novamente: perguntar "Quer jogar de novo?" ao final
- Placar: salvar a melhor pontuação em um arquivo
Conclusão
Com menos de 30 linhas de código, você criou um jogo completo e funcional. Esse projeto usou variáveis, input, condicionais, loops e tratamento de erros — tudo junto. No próximo artigo, vamos criar um quiz interativo onde você pode criar suas próprias perguntas.