Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Feito implementação para reinicar o jogo

Acabei de terminar o jogo e fiz algo que o professor não fez e achei que ajudou muito na interação do usuário. Adicionei a possibilidade de reiniciar o jogo, gostaria de saber o que acharam e se tem alguma forma mais simples de fazer o código

import random

def play():
    print("*****************************")
    print("Welcome to the guessing game!")
    print("*****************************")

    secret_number = random.randrange(1,101)
    total_attempts = 0
    points = 1000

    print("Wich difficulty level do you prefer?")
    print("(1) Easy (2) Medium (3) Hard")

    level = int(input("Choose your difficulty level: "))

    if (level == 1):
        total_attempts = 20
    elif (level == 2):
        total_attempts = 10
    else:
        total_attempts = 5
    if (level < 1 or level > 3):
        print("The number that you typed is not in the difficulties. Choosing the hard difficulty.")

    for attempt in range (1, total_attempts + 1):
        print(f"attempt {attempt} of {total_attempts}")
        guess_str = input("type a number between 1 and 100: ")
        print("You typed", guess_str)
        guess = int(guess_str)

        if (guess < 1 or guess > 100):
            print("You must type a number between 1 and 100")
            continue

        right  = guess == secret_number
        bigger = guess > secret_number
        less   = guess < secret_number

        if (right):
            print("You guessed right and did {} points!".format(points))
            break
        else:
            if (bigger):
                print("You guessed wrong! Your guess was bigger than the secret number!") 
                if (attempt == total_attempts):
                    print("The secret number was {}. You did {} points.".format(secret_number, points))
            elif (less):
                print("You guessed wrong! Your guess was less than the secret number!")
                if (attempt == total_attempts):
                    print("The secret number was {}. You did {} points.".format(secret_number, points))
            lost_points = abs(secret_number - guess) * 2
            points = points - lost_points    

    print("Do you want to play again?")
    print("(1) Yes (2) No ")
    answer = int(input(""))

    if (answer == 1):
        play()
    else:
        print('Game over')
if (__name__ == "__main__"):
    play()

Fiz tudo em inglês por boa prática

2 respostas
solução!

Olá Jhonathan, tudo bem com você?

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado com a comunidade do fórum Alura. O uso da recursividade, onde uma função chama ela mesmo foi uma forma simples e elegante de se chegar ao resultado de reinício do jogo.

Aproveitando a oportunidade, quero deixar uma dica de implementação para o código, podemos implementar no cabeçalho com o uso da multiplicação de strings; quando queremos que uma determinada string seja repetida basta multiplicarmos ela, sabendo disso podemos implementar no cabeçalho do seu código, como abaixo.

print(29 * "*")
print("Welcome to the guessing game!")
print(29 * "*")

No código acima, a string "*" será repetida 29 vezes.

Caso queira explorar mais funções sobre o uso do asterisco em python, além de duplicar caracteres, recomendo o seguinte artigo:

O artigo acima está em inglês, caso tenha dificuldades com o idioma recomendo o uso do tradutor do navegador.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Não sabia dessa funcionalidade do Python de implementar repetir as str!

Obrigado pela dica, professor! Vou ler os artigos e me aprofundar mais!