Olá, Calebe.
Eu não coloquei o seu código para funcionar, mas uma das primeiras coisas que eu vejo que poderiam estar causando esse erro, seria o fato de você ter feito o input que, por padrão, retorna uma string e na hora de validar nas condicionais, você utiliza uma comparação com um valor inteiro. Nessa situação você teria duas formas de resolver isso:
dificuldade = input("Escolha a dificuldade: 1 - Fácil 2 - Médio 3 - Difícil 4 - Impossível: ")
if dificuldade == "1":
Nessa primeira situação, conserva-se o tipo da variável dificuldade como string e depois compara-se a variável dificuldade com uma string numérica "1", "2", "3" e "4"
ou
dificuldade = int(input("Escolha a dificuldade: 1 - Fácil 2 - Médio 3 - Difícil 4 - Impossível: "))
if dificuldade == 1:
Nessa segunda situação, faz-se a conversão do input que, por padrão, é uma string em um inteiro usando o método int e depois, ao fazer a comparação na condicional com os números inteiros 1, 2, 3 e 4.
E, baseado no seu código, deveria cair na última condição que seria:
print("Opção inválida, escolha um número de 1 a 4")
O que, na verdade, é o que está acontecendo, pois ao tentar comparar uma string numérica que é atribuída a variável dificuldade com um número inteiro nas estruturas condicionais. logicamente, sempre vai ser diferente e o programa vai voltar para o início.
Uma outra situação que eu imagino que não seja o esperado do jogo é quando o jogador escolhe o valor que vai ser atribuído a variável chute e quando o jogador acerta. Pois apresenta o mesmo problema no que diz respeito a comparar uma string com um número inteiro e os comandos nas condicionais não vão funcionar como deveria. As duas formas de resolver esse problema seriam essa:
jogar_novamente = input("Você acertou, parabéns!! Quer jogar novamente? 1 - Sim 2 - Não: ")
if jogar_novamente == "1":
continue
elif jogar_novamente == "2":
sair = input("Até a próxima! \n\nPressione ENTER para encerrar o jogo.")
break
ou essa:
jogar_novamente = int(input("Você acertou, parabéns!! Quer jogar novamente? 1 - Sim 2 - Não: "))
if jogar_novamente == 1:
continue
elif jogar_novamente == 2:
sair = input("Até a próxima! \n\nPressione ENTER para encerrar o jogo.")
break
Esse input atribuído a variável sair serve apenas para dar tempo da mensagem aparecer na tela, pois se fosse o print somente, ele apareceria na tela muito rápido e logo em seguida o programa fecharia. É apenas uma dica.
Espero que tenha lhe ajudado.