Jogo da Forca em Python (Terminal)

jogo da forca é um dos clássicos passatempos que muita gente já jogou na infância.

Além de divertido, ele é um excelente projeto para iniciantes em Python, pois envolve:

Neste artigo, você vai aprender passo a passo a criar um jogo da forca no terminal usando Python, desde a lógica até um projeto completo.


🔹 1. Como funciona o jogo da forca?

O jogo é bem simples:

  1. Um jogador (ou o computador) escolhe uma palavra secreta.

  2. O outro jogador tenta adivinhar a palavra, letra por letra.

  3. A cada erro, uma parte do bonequinho da forca é desenhada.

  4. O jogo termina quando o jogador:

    • Descobre todas as letras da palavra. ✅

    • Ou quando o bonequinho é enforcado (número máximo de erros). ❌


🔹 2. Estrutura básica do jogo

Para criar nosso jogo, precisamos:

  • Um banco de palavras (lista de strings).

  • Uma forma de escolher aleatoriamente a palavra secreta.

  • Um loop de tentativas, onde o jogador fornece uma letra.

  • Contagem de acertos e erros.

  • Exibição da palavra sendo formada e do estado da forca.


🔹 3. Criando o banco de palavras

Podemos começar com uma lista simples:

import random

palavras = ["python", "programacao", "jogo", "desafio", "computador"]

# Escolher palavra secreta
palavra_secreta = random.choice(palavras)

🔹 4. Representando a palavra oculta

No início, o jogador não sabe a palavra. Vamos mostrar apenas traços _ no lugar das letras.

letras_certas = []
letras_erradas = []

# Mostrar palavra com espaços
def mostrar_palavra(palavra, letras_certas):
    return " ".join([letra if letra in letras_certas else "_" for letra in palavra])

print(mostrar_palavra(palavra_secreta, letras_certas))

Se a palavra for "python" e o jogador já descobriu "p" e "o", a saída será:

p _ _ _ o _

🔹 5. Desenhando a forca

Podemos criar estágios do bonequinho com base nos erros.

estagios_forca = [
    """
     -----
     |   |
         |
         |
         |
         |
    =========
    """,
    """
     -----
     |   |
     O   |
         |
         |
         |
    =========
    """,
    """
     -----
     |   |
     O   |
     |   |
         |
         |
    =========
    """,
    """
     -----
     |   |
     O   |
    /|   |
         |
         |
    =========
    """,
    """
     -----
     |   |
     O   |
    /|\\  |
         |
         |
    =========
    """,
    """
     -----
     |   |
     O   |
    /|\\  |
    /    |
         |
    =========
    """,
    """
     -----
     |   |
     O   |
    /|\\  |
    / \\  |
         |
    =========
    """
]

Cada vez que o jogador erra, aumentamos o estágio da forca.


🔹 6. Estrutura principal do jogo

Agora juntamos tudo dentro de um loop while.

import random

def jogo_da_forca():
    palavras = ["python", "programacao", "jogo", "desafio", "computador"]
    palavra = random.choice(palavras)
    
    letras_certas = []
    letras_erradas = []
    tentativas = len(estagios_forca) - 1
    
    print("🎮 Bem-vindo ao Jogo da Forca!")
    
    while True:
        print(estagios_forca[len(letras_erradas)])
        print("Palavra: ", mostrar_palavra(palavra, letras_certas))
        print("Letras erradas: ", " ".join(letras_erradas))
        
        # Entrada do jogador
        tentativa = input("Digite uma letra: ").lower()
        
        if not tentativa.isalpha() or len(tentativa) != 1:
            print("⚠️ Digite apenas UMA letra!")
            continue
        
        if tentativa in letras_certas or tentativa in letras_erradas:
            print("⚠️ Você já tentou essa letra!")
            continue
        
        if tentativa in palavra:
            letras_certas.append(tentativa)
            print("✅ Boa! A letra está na palavra.")
        else:
            letras_erradas.append(tentativa)
            print("❌ Errou! Essa letra não existe na palavra.")
        
        # Verifica vitória
        if all(letra in letras_certas for letra in palavra):
            print("🎉 Parabéns! Você venceu!")
            print("A palavra era:", palavra)
            break
        
        # Verifica derrota
        if len(letras_erradas) >= tentativas:
            print(estagios_forca[-1])
            print("☠️ Você perdeu! A palavra era:", palavra)
            break

# Funções auxiliares
def mostrar_palavra(palavra, letras_certas):
    return " ".join([letra if letra in letras_certas else "_" for letra in palavra])

# Executar o jogo
if __name__ == "__main__":
    jogo_da_forca()

🔹 7. Melhorias possíveis

Esse jogo já funciona, mas podemos deixá-lo mais interessante:

✅ Banco de palavras externo – ler palavras de um arquivo .txt.
✅ Sistema de pontuação – pontos para cada vitória, descontos por erros.
✅ Dificuldade ajustável – limitar tentativas ou escolher palavras maiores.
✅ Interface gráfica (GUI) – transformar em um joguinho visual com Tkinter ou Pygame.


🔹 8. Conclusão

Neste artigo, você aprendeu a:

  • Usar listas e strings para manipular palavras.

  • Criar loops de tentativas com condicionais.

  • Exibir um bonequinho da forca evoluindo a cada erro.

  • Montar um jogo completo no terminal em Python.

O jogo da forca é um ótimo projeto para praticar lógica de programação, além de ser divertido e expansível.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Laços de Repetição em Python: Conceitos e Exemplos Práticos