5.1 Exercícios: Jogo Da Forca

Neste exercício, vamos aproveitar nosso novo conhecimento em listas para fazer com que o jogo da forca se lembre das letras acertadas pelo jogador.

  1. Crie um arquivo chamado forca.py na pasta jogos:

|_ home

|_ jogos

|_ adivinhacao.py

|_ forca.py

  1. Primeiro, precisamos mostrar para o jogador a mensagem de abertura, similar ao que foi feito no jogo da adivinhação:
print('\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*') print('\*\*\*Bem vindo ao jogo da Forca!\*\*\*') print('\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*')
  1. Crie a variável palavra_secreta, que será iniciada com o valor ‘banana’, e uma lista para representar as letras acertadas.

palavra_secreta = ‘banana’

letras_acertadas = ['', '', '', '', '', '']

  1. Crie as variáveis booleanas acertou e errou , que vamos utilizar no laço while . Além disso, crie a variável erros , que armazenará o numero de erros do usuário:

acertou = False enforcou = False erros =

while(not acertou and not enforcou): # código

  1. Crie a variável chute , que vai guardar entrada do usuário.

while(not acertou and not enforcou): chute = input(‘Qual letra? ’)

  1. Dentro do while , crie um loop for para checar se a letra existe na palavra secreta. Se o chute for igual a letra digitada pelo jogador, adicione a letra na lista letras_acertadas na posição correta

while(not acertou and not enforcou): chute = input(‘Qual letra? ’)

posicao =

for letra in palavra_secreta: if (chute == letra):

letras_acertadas[posicao] = letra posicao +=

  1. Modifique a condição do if para considerarmos apenas letras maiúsculas utilizando a função

upper de strings. Atualize também a variável chute .

if (chute.upper() == letra.upper()):
  1. Agora precisamos incrementar a variável erros caso o jogador não acerte a letra. Se o chute é uma letra dentro de palavra_secreta, quer dizer que o jogador acertou, e caso contrário, incrementamos a variável erros. Para isso, teremos mais um bloco if/else :

if(chute in palavra_secreta): posicao =

for letra in palavra_secreta: if(chute.upper() == letra.upper()):

letras_acertadas[posicao] = letra posicao +=

else:
 
erros += 1
 
9. Atualize a variável acertou . Se todas as letras ainda não foram acertadas, quer dizer que o usuário ainda não finalizou o jogo, ou seja, letras*acertas ainda contém espaços vazios ('*'). Dentro do *loop* while , após o comando for , vamos atualizar a variável *acertou* e utilizar o operador not in :
 
acertou = '_' not in letras_acertadas.
 

Podemos ler o código acima como ”’_’ não está contido em letras_acertadas”.

  1. Vamos também atualizar a variável enforcou . Vamos considerar que se o jogador errar 7 vezes ele perde o jogo. Como a variável inicia com 0 (zero), quer dizer que quando ela for igual a 6, ele se enforca. Atualize a variável dentro do loop while após a variável acertou :

acertou = ”_” not in letras_acertadas enforcou = erros ==

  1. Para que o jogador acompanhe o resultado a cada chute que ele der, ao final do laço while , imprima também a lista letras_acertadas para que ele veja como ele está indo no jogo:

while(not enforcou and not acertou): código omitido print(letras_acertadas)

  1. E claro, para dar uma dica ao nosso jogador de quantas letras a palavra tem, vamos colocar acima do while um print inicial para que ele veja de início qual o tamanho da palavra:
print(letras_acertadas)

while (not acertou and not enforcou):

  1. Por fim, vamos imprimir uma mensagem de “Você ganhou!” se o usuário adivinhar a letra e “Você perdeu” caso tenha cometido 6 erros. Após o laço while , fora dele, acrescente:

if(acertou):

print('Você ganhou!!') else:
print('Você perdeu!!') print('Fim do jogo')
  1. Faça o teste e veja na resposta se seu código funcionando.

$ python3 jogos/forca.py

No final, seu código deve estar parecido com este:

def jogar():
print('\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*') print('\*\*\*Bem vindo ao jogo da Forca!\*\*\*') print('\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*')

palavra_secreta = ‘banana’

letras_acertadas = ['', '', '', '', '', '']

enforcou = False acertou = False erros =

print(letras_acertadas)

while(not enforcou and not acertou): chute = input(“Qual letra? ”) if(chute in palavra_secreta):

posicao =

for letra in palavra_secreta: if(chute.upper() == letra.upper()):

letras_acertadas[posicao] = letra posicao = posicao +

else:
 
erros += 1
 
enforcou = erros == 6
 
acertou = '_' not in letras_acertadas print(letras_acertadas)
 
if(acertou):
 
print('Você ganhou!!') else:
print('Você perdeu!!') print('Fim do jogo')

⬅️ Capítulo Anterior | Próximo Capítulo ➡️