How do I show the already used and wrong letters in the hangman game? and leave the word on the bar in maiscula?

Asked

Viewed 63 times

-2

print("#######################")
print("#    Jogo da forca    #")
print("#######################")
def forca(x=0):
  if x==0:
    print("    _________")
    print("   |          |")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("__/|\__")
  elif x==1:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("__/|\__")
  elif x==2:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |          | ")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("__/|\__")
  elif x==3:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /| ")
    print("   |          |")
    print("   |          ")
    print("   |          ")
    print("__/|\__")
  elif x==4:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /|\ ")
    print("   |          |")
    print("   |          ")
    print("   |          ")
    print("__/|\__")
  elif x==5:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /|\ ")
    print("   |          |")
    print("   |         / ")
    print("   |           ")
    print("__/|\__")
  elif x==6:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /|\ ")
    print("   |          |")
    print("   |         /")
    print("   |          ")
    print("__/|\__")
  elif x==7:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /|\ ")
    print("   |          |")
    print("   |         /")
    print("   |          ")
    print("__/|\__")
#VARIAVEIS GLOBAIS
erros=0
#CAPTURA PALAVRA INICIAL
word=input('Digite uma palavra: ');
temp=[]
for letra in word:
  temp.append('_')

while True:
  print('\n'*20) # limpa a tela
  forca(erros) # imprime desenho da forca
  #imprime a adivinhacao
  palavra = ("A palavra é: ")
  palavra = str.upper()
  print(palavra, end='')
  for let in temp:
    print(let, end=' ')
  print('\n'*2)
  #Verifica se perdeu
  if erros==6: 
    break #sai do jogo (sai do while)
  #Verificar se o jogador ganhou
  ganhouJogo=True
  for let in temp:
    if let=='_':
      ganhouJogo=False
  if ganhouJogo:
    print('\nPARABÉNS VENCEDOR!!!')


  #captura a letra do usuario
  letraDig=input("Informe uma letra: ")
  #verifica se acertou alguma letra
  errouLetra=True
  for i, let in enumerate(word):
    if word[i]==letraDig:
      temp[i]=word[i]
      errouLetra=False
  if errouLetra:
    erros=erros+1
  • Make a list and give .append(letra) at each insertion.

  • You could give an example?

2 answers

0

I don’t know this language, but you could make a variable string that would add the values and display on the screen, like the example:

if word==""
listadeletras += word
if word!=""
listadeletras += (",")+word

0


I made a code that seems to work. I commented on the parts that answer your question.
Follows the code:

#! python3


print("""
#######################
#    Jogo da forca    #
#######################
""")


def forca(x=0):
  if x==0:
    print("    _________")
    print("   |          |")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("   |          ")

  elif x==1:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |          ")
    print("   |          ")
    print("   |          ")
    print("   |          ")

  elif x==2:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |          | ")
    print("   |          ")
    print("   |          ")
    print("   |          ")

  elif x==3:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /| ")
    print("   |          |")

  elif x==4:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /|\\")
    print("   |          |")

  elif x==5:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /|\\")
    print("   |          |")
    print("   |         /")

  elif x==6:
    print("    __________")
    print("   |          |")
    print("   |          0")
    print("   |         /|\\")
    print("   |          |")
    print("   |         / \\")


palavra = 'StackOverflow'  # Aqui você põe qualquer palavra.
mostra_palavra = ['-'] * len(palavra)
print('-' * len(palavra))
x = 0
vitoria = 0  # contador que determina se o usuario venceu
lista_letras = []

while True:
    tentativas = str(input('Digite uma letra: ')).upper()  # Deixa a letra em maiúscula
    if len(tentativas) > 1:
        print('Apenas uma letra por vez')
        tentativas = str(input('Digite uma letra: ')).upper()
    else:
        lista_letras.append(tentativas)  # Adiciona as letras usadas numa lista
        print(f'Palavras usadas: {lista_letras}')
        for i, letra in enumerate(palavra.upper()):
            if tentativas == letra:
                mostra_palavra[i] = letra
                vitoria += 1
                for i in mostra_palavra:
                    print(i, end=' ')
                print()
        if vitoria == len(palavra):
            print('Você venceu, parabéns!')
            break
        if tentativas not in palavra.upper():
            x += 1
            print('Você errou!')
            forca(x)
            if x == 6:
                print('Você perdeu!')
                break

The output without any error is this:

#######################
#    Jogo da forca    #
#######################

-------------
Digite uma letra: s
Palavras usadas: ['S']
S - - - - - - - - - - - - 
Digite uma letra: t
Palavras usadas: ['S', 'T']
S T - - - - - - - - - - - 
Digite uma letra: a
Palavras usadas: ['S', 'T', 'A']
S T A - - - - - - - - - - 
Digite uma letra: c
Palavras usadas: ['S', 'T', 'A', 'C']
S T A C - - - - - - - - - 
Digite uma letra: k
Palavras usadas: ['S', 'T', 'A', 'C', 'K']
S T A C K - - - - - - - - 
Digite uma letra: o
Palavras usadas: ['S', 'T', 'A', 'C', 'K', 'O']
S T A C K O - - - - - - - 
S T A C K O - - - - - O - 
Digite uma letra: v
Palavras usadas: ['S', 'T', 'A', 'C', 'K', 'O', 'V']
S T A C K O V - - - - O - 
Digite uma letra: e
Palavras usadas: ['S', 'T', 'A', 'C', 'K', 'O', 'V', 'E']
S T A C K O V E - - - O - 
Digite uma letra: f
Palavras usadas: ['S', 'T', 'A', 'C', 'K', 'O', 'V', 'E', 'F']
S T A C K O V E - F - O - 
Digite uma letra: r
Palavras usadas: ['S', 'T', 'A', 'C', 'K', 'O', 'V', 'E', 'F', 'R']
S T A C K O V E R F - O - 
Digite uma letra: l
Palavras usadas: ['S', 'T', 'A', 'C', 'K', 'O', 'V', 'E', 'F', 'R', 'L']
S T A C K O V E R F L O - 
Digite uma letra: w
Palavras usadas: ['S', 'T', 'A', 'C', 'K', 'O', 'V', 'E', 'F', 'R', 'L', 'W']
S T A C K O V E R F L O W 
Você venceu, parabéns!

I hope I’ve helped :)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.