Ir para conteúdo
Fórum Script Brasil
  • 0

Jogo da Forca (Seguindo regras) [Salvem meu semestre]


Gabriel Fróes

Pergunta

Boa tarde,

Ficou faltando 2 pts para eu conseguir fechar meu semestre, então meu professor me mandou um trabalho ontem (sexta-feira) e disse que era para a entrega na data de hoje (sábado).
Ele pediu para que eu fizesse um jogo da forca no python, seguindo algumas regras; mas eu estou perdido, totalmente perdido, parece que eu esqueci tudo de python que eu aprendi nesse semestre.
Preciso de ajuda, alguma boa alma pode me ensinar? Estou tentando fazer, mas está dando errado.
E se por acaso, alguém fizer por completo, eu agradeço, que pelo menos tento aprender sozinho se baseando em algo que de fato está certo.
Desde já, agradeço.

 

Segue código abaixo:

 

# Trabalho Prático I: Implementar o jogo da forca
  # Completar a seguinte informação:
  # Nome: <Inserir nome>
  # Matrícula: <Matrícula>
  # jogoforca.py
   
  # tomadas de https://duvidas.dicio.com.br/as-15-palavras-mais-engracadas-da-lingua-portuguesa/
  # você pode incluir mais palavras na lista.
  LISTA_PALAVRAS = ('Mequetrefe' , 'Salamaleque', 'Piripaque', 'Serelepe',
  'Siricutico', 'Bugiganga', 'Borogodó', 'Quinquilharia',
  'Beleléu', 'Balacobaco', 'Faniquito', 'Quiproquó', 'Pebolim',
  'Ziquizira', 'Zunzunzum', 'Ziguezague')
   
  # Número máximo de tentativas.
  MAX_TENTATIVAS = 6
   
  def obter_palavra():
  '''
  Retorna uma palavra aleatória da lista de palavras LISTA_PALAVRAS.
  '''
  # Eliminar esta linha uma vez que a função esteja implementada.
  raise NotImplementedError('Função obter_palavra() não implementada!')
   
  # seu código deve retornar um elemento de LISTA_PALAVRAS
  # palavra_secreta = ...
  # return palavra_secreta
   
   
  def palavra_adivinhada(palavra_secreta, letras_usuario😞
  '''
  Retorna True se os caracteres presentes na lista letras_usuario são
  suficentes para adivinhar a palavra palavra_secreta. Retorna False em outro caso.
   
  Parâmetros:
  * palavra_secreta: palavra a ser adivinhada.
  * letras_usuario: lista das letras que o usuário entrou até agora.
  '''
   
  raise NotImplementedError('Função palavra_adivinhada() não implementada!')
   
  def tentativas_erradas(palavra_secreta, letras_usuario😞
  '''
  Retorna a quantidade de letras em letras_usuario que não aparecem em
  palavra_secreta.
   
  Parâmetros:
  * palavra_secreta: palavra a ser adivinhada.
  * letras_usuario: lista das letras que o usuário entrou até agora.
  '''
  raise NotImplementedError('Função tentativas_erradas() não implementada!')
   
  def mostra_adivinhadas(palavra_secreta, letras_usuario😞
  '''
  Mostra que letras de palavra_secreta tem sido adivinhadas até agora e
  todas as letras entradas pelo usuário.
   
  Por exemplo, a saída para a palavra secreta "batatinha" e as entradas do
  usuário b, c e t deve ser do tipo:
   
  Palavra secreta: B _ T _ T _ _ _ _
  Letras tentadas até agora: B, C, T
   
  Parâmetros:
  * palavra_secreta: palavra a ser adivinhada.
  * letras_usuario: lista das letras que o usuário entrou até agora.
  '''
   
  raise NotImplementedError('Função mostra_adivinhadas() não implementada!')
   
  def entra_tentativa():
  '''
  Permite ao usuário entrar uma letra. Deve garantir que a entrada não seja
  um caracter inválido (números, varias letras, signos de pontuação, etc.)
  '''
   
  raise NotImplementedError('Função entra_tentativa() não implementada!')
   
  # Perguntar ao usuário por uma letra e, se a entrada não é correta, insistir.
  # letra = ...
  # return letra
   
   
  def jogo_da_forca():
  '''
  Função principal do jogo.
  '''
   
  print('Bem vindo ao jogo da forca.')
   
  while True:
  palavra_secreta = obter_palavra()
   
  letras_usuario = []
   
  while not palavra_adivinhada(palavra_secreta, letras_usuario) and \
  tentativas_erradas(palavra_secreta, letras_usuario) < MAX_TENTATIVAS:
   
  mostra_adivinhadas(palavra_secreta, letras_usuario)
   
  restantes = MAX_TENTATIVAS - tentativas_erradas(palavra_secreta, letras_usuario)
  print('Tentativas restantes:', restantes)
  letra = entra_tentativa()
  letras_usuario.append(letra)
   
  mostra_adivinhadas(palavra_secreta, letras_usuario)
   
  if palavra_adivinhada(palavra_secreta, letras_usuario):
  print('Parabéns, você adivinhou a palavra!')
  else:
  print('¯\\_(ツ)_/¯ você perdeu.')
   
  cont = input('Entre C se deseja continuar jogando.')
   
  if not (cont == 'C' or cont =='c'😞
  break
   
  print('Game over.')
   
  # chamada a função principal para executar o jogo.
  jogo_da_forca()
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

O máximo que cheguei foi isso:

 

# Trabalho Prático I: Implementar o jogo da forca
# Completar a seguinte informação:
# Nome: <Inserir nome>
# Matrícula: <Matrícula>
# jogoforca.py
 
# você pode incluir mais palavras na lista.
LISTA_PALAVRAS = ('Mequetrefe' , 'Salamaleque', 'Piripaque', 'Serelepe',
'Siricutico', 'Bugiganga', 'Borogodó', 'Quinquilharia',
'Beleléu', 'Balacobaco', 'Faniquito', 'Quiproquó', 'Pebolim',
'Ziquizira', 'Zunzunzum', 'Ziguezague')
 
# Número máximo de tentativas.
MAX_TENTATIVAS = 6
 
def obter_palavra():
 
 
return random.choice(LISTA_PALAVRAS)
 
# seu código deve retornar um elemento de LISTA_PALAVRAS
# palavra_secreta = ...
# return palavra_secreta
 
def palavra_adivinhada(palavra_secreta, letras_usuario):
 
cont = 0
for i, c in enumerate(palavra_secreta):
if c in letras_usuario:
cont += 1
if cont == len(palavra_secreta):
return True
else:
return False
 
def tentativas_erradas(palavra_secreta, letras_usuario):
cont = 0
blank = ['_ '] * len(palavra_secreta)
 
for i, c in enumerate(palavra_secreta):
if c in letras_usuario:
cont += 1
blank.insert(cont - 1, c)
blank.pop(cont)
if cont == len(palavra_secreta):
return ''.join(str(e) for e in blank)
else:
cont += 1
blank.insert(cont - 1, '_')
blank.pop(cont)
if cont == len(palavra_se):
return ''.join(str(e) for e in blank)
 
def mostra_adivinhadas(palavra_secreta, letras_usuario):
'''
Mostra que letras de palavra_secreta tem sido adivinhadas até agora e
todas as letras entradas pelo usuário.
Por exemplo, a saída para a palavra secreta "batatinha" e as entradas do
usuário b, c e t deve ser do tipo:
Palavra secreta: B _ T _ T _ _ _ _
Letras tentadas até agora: B, C, T
Parâmetros:
* palavra_secreta: palavra a ser adivinhada.
* letras_usuario: lista das letras que o usuário entrou até agora.
'''
 
def entra_tentativa():
alfabeto = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z']
alfabeto2 = alfabeto[:]
 
def removeDupsBetter(L1, L2):
L1Start = L1[:]
for e in L1:
if e in L1Start:
L2.remove(e)
return ''.join(str(e) for e in L2)
 
return removeDupsBetter(letras_usuario, alfabeto2)
# Perguntar ao usuário por uma letra e, se a entrada não é correta, insistir.
# letra = ...
# return letra
 
def jogo_da_forca():
'''
Função principal do jogo.
'''
 
print('Bem vindo ao jogo da forca.')
 
while True:
palavra_secreta = obter_palavra()
 
letras_usuario = []
 
while not palavra_adivinhada(palavra_secreta, letras_usuario) and \
tentativas_erradas(palavra_secreta, letras_usuario) < MAX_TENTATIVAS:
 
mostra_adivinhadas(palavra_secreta, letras_usuario)
 
restantes = MAX_TENTATIVAS - tentativas_erradas(palavra_secreta, letras_usuario)
print('Tentativas restantes:', restantes)
letra = entra_tentativa()
letras_usuario.append(letra)
 
mostra_adivinhadas(palavra_secreta, letras_usuario)
 
if palavra_adivinhada(palavra_secreta, letras_usuario):
print('Parabéns, você adivinhou a palavra!')
else:
print('¯\\_(ツ)_/¯ você perdeu.')
 
cont = input('Entre C se deseja continuar jogando.')
 
if not (cont == 'C' or cont =='c'😞
break
 
print('Game over.')
 
# chamada a função principal para executar o jogo.
jogo_da_forca()
Link para o comentário
Compartilhar em outros sites

  • 0
DONE!


LISTA_PALAVRAS = ('Mequetrefe', 'Salamaleque', 'Piripaque', 'Serelepe',
                  'Siricutico', 'Bugiganga', 'Borogodó', 'Quinquilharia',
                  'Beleléu', 'Balacobaco', 'Faniquito', 'Quiproquó', 'Pebolim',
                  'Ziquizira', 'Zunzunzum', 'Ziguezague')
MAX_TENTATIVAS = 6
def obter_palavra():
    import random
    palavra_secreta = random.choice(LISTA_PALAVRAS).upper().replace('É', 'E').replace('Ó', 'O')
    return palavra_secreta
def palavra_adivinhada(palavra_secreta, letras_usuario):
    ganhou = True
    for letra in palavra_secreta:
        if letra not in letras_usuario:
            ganhou = False
    return ganhou

def tentativas_erradas(palavra_secreta, letras_usuario):
    contadorador = 0
    for i in range(len(letras_usuario)):
        if letras_usuario[i] not in palavra_secreta:
            contadorador += 1
    return contadorador
def mostra_adivinhadas(palavra_secreta, letras_usuario):
    vazio = '_'*len(palavra_secreta)
    for i in range(len(palavra_secreta)):
        if palavra_secreta[i] in letras_usuario:
            vazio = vazio[:i] + palavra_secreta[i] + vazio[i+1:]
    print('Palavra secreta: ', vazio)
    print('Letras tentadas ate agora: ', letras_usuario)

def entra_tentativa():
    while True:
        letra = str(input('Entre com uma letra: ')).upper()
        print()
        if len(letra) != 1:
            print('Digite apenas uma letra!')
        elif not 'A' <= letra <= 'Z':
            print('Este não é um valor válido.')
        else:
            return letra

def jogo_da_forca():
    print('Bem vindo ao jogo da forca!')
    while True:
        palavra_secreta = obter_palavra()
        letras_usuario = []
        while not palavra_adivinhada(palavra_secreta, letras_usuario) and tentativas_erradas(palavra_secreta, letras_usuario) < MAX_TENTATIVAS:
            mostra_adivinhadas(palavra_secreta, letras_usuario)
            restantes = MAX_TENTATIVAS - tentativas_erradas(palavra_secreta, letras_usuario)
            print('Tentativas restantes:', restantes)
            letra = entra_tentativa()
            letras_usuario.append(letra)
        mostra_adivinhadas(palavra_secreta, letras_usuario)
        if palavra_adivinhada(palavra_secreta, letras_usuario):
            print('Parabéns, você adivinhou a palavra!')
        else:
            print(\\_(ツ)_/¯ você perdeu.')
        contadorador = input('Entre C se deseja contadoradorinuar jogando.')
        if not (contadorador == 'C' or contadorador == 'c'):
            break
    print('GAME OVER!')

jogo_da_forca()
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...