Blog

Postado em em 18 de maio de 2023

Jogo da Forca em Python – Aula Completa

Você sabe como construir um jogo da forca em Python? Nesta aula vamos aprender a lógica usada e construir o jogo do zero!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala Impressionadores! Você já jogou o jogo da forca? É um jogo muito conhecido, mas você sabia que conseguimos reproduzir esse jogo dentro do Python?

Hoje eu vou te mostrar como isso é possível e você ainda vai aprender algumas estruturas importantes se ainda não souber.

O objetivo desse jogo é descobrir uma palavra escolhida.

Para isso, o usuário precisa escolher uma letra por vez para verificar se essa letra está contida na palavra.

Em caso positivo ela será revelada, caso contrário o usuário perde uma vida.

O jogo acabar quando o usuário perde todas as vidas ou acerta a palavra!

É um jogo bem simples, mas fazer isso no Python é interessante, pois você consegue aplicar a lógica de programação, na prática.

A lógica é simples, mas você tem que pensar em todos os passos para que o seu código funcione corretamente em todas as possibilidades.

Jogo da Forca

Para construir o jogo da forca só precisamos utilizar as ferramentas básicas de Python, não é necessário baixar nenhuma biblioteca.

Todo o jogo essencialmente é um looping infinito, por isso vamos usar a estrutura de repetição While.

Vamos precisar de dois If’s, um If para quando o usuário perder e um If para quando o usuário ganhar, ambos os If’s encerram o jogo.

Exemplo:

while True:

        if ganhou:

                 encerra o jogo

        if perdeu:

                 encerra o jogo

Para conseguir construir essa estrutura vamos ter que pensar efetivamente em como o jogo da forca funciona.

O primeiro parâmetro do jogo da forca é que existe uma palavra para ser adivinhada, então vamos acrescentar essa palavra em uma variável.

O segundo e terceiro passo é que temos que considerar as letras que o usuário já jogou e quantas chances ele tem para jogar.

Vamos criar também uma variável que vai receber verdadeiro ou falso dependendo do resultado do jogo -> ganhou = true -> perdeu = false, vamos iniciar essa variável que vai se chamar -> “ganhou” como false.

Palavra = “python”

Letras_usuario = []

Chances = 7

Ganhou = false

while True:

        if ganhou:

                 encerra o jogo

        if perdeu:

                encerra o jogo

Quando estamos criando um jogo existem duas lógicas que temos que nos preocupar, uma delas é como o jogo vai ser organizado para funcionar como esperamos e a segunda é o que vamos mostrar para o usuário e o que o usuário vai inserir no jogo.

if ganhou:

    print(f"Parabéns, você ganhou. A palavra era: {palavra}")

else:

    print(f"Você perdeu! A palavra era: {palavra}")

Criando a lógica do jogo

Vamos criar um código que crie um espaço para representar cada letra da palavra que estiver na nossa variável “palavra”.

for letra in palavra

Exemplo:

Se a palavra é Python o resultado será 6 espaços.

_ _ _ _ _ _

Por padrão o print vai deixar cada letra uma abaixo da outra na resposta, para corrigir isso acrescentamos nos parênteses do print o end, assim os espaços vão ficar um ao lado do outro.

No momento em que o usuário chutar uma letra correta, vamos substituir o espaço pela letra, caso contrário vamos colocar novamente o espaço.

for letra in palavra

if letra.lower() in letras_usuario:

print(letra, end=” “)

else:

                 print("_", end=” “)

Exemplo:

Se o usuário chutou “t”, então:

_ _ T _ _ _

Feito isso, vamos criar a estrutura que vai pegar a informação do usuário.

tentativa = input("Escolha uma letra para adivinhar: ")

Neste input o usuário consegue colocar uma letra, essa letra temos que adicionar na variável letras_usuario.

tentativa = input("Escolha uma letra para adivinhar: ")

    letras_usuario.append(tentativa.lower())

Obs. Usamos o lower() para que as letras fiquem todas minúsculas.

Agora, se o usuário errar a letra, temos que tirar dele uma chance.

palavra = "python"

letras_usuario = []

chances = 4

ganhou = False

    for letra in palavra:

        if letra.lower() in letras_usuario:

            print(letra, end=" ")

        else:

            print("_", end=" ")

    tentativa = input("Escolha uma letra para adivinhar: ")

    letras_usuario.append(tentativa.lower())

    if tentativa.lower() not in palavra.lower():

        chances -= 1

Se o usuário já gastou todas as chances então temos que parar o jogo, vamos construir essa lógica:

if chances == 0:

        break

Feito isso, temos que analisar a seguinte situação, caso o usuário ganhe o jogo:

A situação em que ele ganha é quando todas as palavras que ele jogou estão contidas na nossa variável letras_usuario, ou seja, todas as letras da palavra Python, sendo a palavra que escolhemos para ser adivinhada, estão contidas na variável letras_usuario.

Como fazer esta verificação?

Aqui vamos aplicar a lógica contrária que já usamos, vamos iniciar dizendo que ele ganhou, ou seja, que a variável ganhou começa verdadeira.

Depois vamos verificar se alguma letra da palavra está faltando na variável letras_usuario então o resultado é falso e se todas estiverem o resultado é verdadeiro e o usuário ganhou o jogo.

ganhou = True

    for letra in palavra:

        if letra.lower() not in letras_usuario:

            ganhou = False

    if chances == 0 or ganhou:

        break

Até aqui ele pode ou ganhar o jogo, ou esgotar suas chances.

Para melhorar o código vamos exibir para o usuário a cada tentativa a quantidade de chances que ele ainda tem:

Resultado do código:

palavra = "python"

letras_usuario = []

chances = 4

ganhou = False

while True:

    # criar a nossa logica

    for letra in palavra:

        if letra.lower() in letras_usuario:

            print(letra, end=" ")

        else:

            print("_", end=" ")

    print(f"Você tem {chances} chances")

    tentativa = input("Escolha uma letra para adivinhar: ")

    letras_usuario.append(tentativa.lower())

    if tentativa.lower() not in palavra.lower():

        chances -= 1

    ganhou = True

    for letra in palavra:

        if letra.lower() not in letras_usuario:

            ganhou = False

    if chances == 0 or ganhou:

        break

if ganhou:

    print(f"Parabéns, você ganhou. A palavra era: {palavra}")

else:

    print(f"Você perdeu! A palavra era: {palavra}")

Você também pode abrir um novo arquivo e colocar a palavra que deve ser adivinhada nele, depois você deve apenas indicar no jogo a variável onde está a palavra.

Assim quem estiver jogando com você não vai ver a palavra no código, exemplo:

Crie um arquivo e escreva a variável:

Palavra = “javascript”

No arquivo do jogo coloque:

From palavraforca import palavra

A partir daqui você ainda pode evoluir mais e usar recursos como o CustomTkinter para fazer uma janela bonita para o usuário jogar ao invés de jogar no seu editor de código.

Conclusão – Jogo da Forca em Python

Nesta aula ensinei como fazer o jogo da forca, este jogo é um jogo simples de se construir no Python, para ele não é necessário importar nenhuma biblioteca.

Porém, a medida que fazemos, conseguimos exercitar bem a lógica que deve ser aplicada para fazer o jogo rodar de forma correta, além de estruturas básicas que temos que treinar como o if, While, input, etc.

Você ainda pode continuar implementando o jogo construindo uma janela para ele.

Espero que tenham gostado! Até mais! Um abraço,

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador