Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Meu código termina de rodar, logo após pedir a dificuldade. Como faço pra ele rodar as etapas seguintes?

'''def da_boas_vindas puts puts puts " P /\ P " puts " /\|_|/\ " puts " nn | ||. .|| | n_n Bem vindo ao " puts " ||_|nnnn nnnn||| Jogo de Adivinhação!" puts " |' ' | || |' ' | " puts " || ' _ ' || " puts " \|_|/ " puts puts "Qual é o seu nome?" nome = gets.strip puts "\n\n\n\n\n\n" puts "Começaremos o jogo para você, #{nome}" nome end

def pede_dificuldade puts "Qual é o nível de dificuldade que você deseja?" puts "(1) Muito fácil (2) Fácil (3) Normal (4) Difícil (5) Impossível" puts "Escolha: " dificuldade = gets.to_i end

def sorteio_numero_secreto(dificuldade) case dificuldade when 1 maximo = 30 when 2 maximo = 60 when 3 maximo = 100 when 4 maximo = 150 else maximo = 200 end puts "Escolhendo um número secreto entre 1 e #{maximo}..." numero_secreto = rand(maximo) puts "Escolhido... Que tal adivinhar o nosso número secreto?" numero_secreto end

def pede_um_numero(chutes, tentativa, limite_de_tentativas) puts "\n\n\n\n" puts "Tentativa #{tentativa} de #{limite_de_tentativas}" puts "Chutes até agora: #{chutes}" puts "Entre com o número" chute = gets.strip puts "Será que acertou? Você chutou #{chute}" return chute.to_i end

def verifica_se_acertou(numero_secreto, chute) acertou = numero_secreto == chute.to_i

if acertou
    ganhou
    return true
end

    maior = numero_secreto > chute.to_i
    if maior
        puts "O número secreto é maior!"
    else
         puts "O número secreto é menor!"
    end
    false

end

def ganhou puts puts " OOOOOOOOOOO " puts " OOOOOOOOOOOOOOOOOOO " puts " OOOOOO OOOOOOOOO OOOOOO " puts " OOOOOO OOOOO OOOOOO " puts " OOOOOOOO # OOOOO # OOOOOOOO " puts " OOOOOOOOOO OOOOOOO OOOOOOOOOO " puts "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO " puts "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO " puts "OOOO OOOOOOOOOOOOOOOOOOOOOOOOO OOOO " puts " OOOO OOOOOOOOOOOOOOOOOOOOOOO OOOO " puts " OOOO OOOOOOOOOOOOOOOOOOOO OOOO " puts " OOOOO OOOOOOOOOOOOOOO OOOO " puts " OOOOOO OOOOOOOOO OOOOOO " puts " OOOOOO OOOOOO " puts " OOOOOOOOOOOO " puts puts " Acertou! " puts end

nome = da_boas_vindas dificuldade = pede_dificuldade

def joga(nome, dificuldade) numero_secreto = sorteio_numero_secreto dificuldade

pontos_ate_agora = 1000
limite_de_tentativas = 5
chutes = []

for tentativa in 1..limite_de_tentativas

    chute = pede_um_numero chutes, tentativa, limite_de_tentativas
    chutes << chute

    if nome == "Leticia"
            ganhou
            break 

    pontos_a_perder = (chute - numero_secreto).abs / 2.0
    pontos_ate_agora -= pontos_a_perder

    if verifica_se_acertou numero_secreto, chute
        break
    end    
end

puts "Você ganhou #{pontos_ate_agora} pontos."

end

def nao_quer_jogar? puts "Deseja jogar novamente? (S/N)" quero_jogar = gets.strip nao_quero_jogar = quero_jogar.upcase == "N" end

loop do joga nome, dificuldade if nao_quer_ jogar? break end end

end'''

1 resposta
solução!

Boa tarde Leticia, você deve alterar seu código para o seguinte código abaixo, faça as comparações desse código com o seu para verificar as diferenças, espero ajudar.

def da_boas_vindas puts puts puts " P /\ P " puts " /||/\ " puts "nn | ||. .|| | nn Bem vindo ao" puts " |||nnnn nnnn||| Jogo de Adivinhação!" puts " |' ' | || |' ' | " puts " || ' _ ' || " puts " ||/ " puts puts "Qual é o seu nome?" nome = gets.strip puts "\n\n\n\n\n\n" puts "Começaremos o jogo para você, #{nome}" nome end

def pede_dificuldade puts "Qual é o nível de dificuldade que você deseja?" puts "(1) Muito fácil (2) Fácil (3) Normal (4) Difícil (5) Impossível" puts "Escolha: " dificuldade = gets.to_i end

def sorteia_numero_secreto(dificuldade) case dificuldade when 1 maximo = 30 when 2 maximo = 60 when 3 maximo = 100 when 4 maximo = 150 else maximo = 200 end puts "Escolhendo um número secreto entre 1 e #{maximo}..." numero_secreto = rand(maximo) + 1 puts "Escolhido... que tal adivinhar nosso número secreto?" numero_secreto end

def pede_um_numero(chutes, tentativa, limite_de_tentativas) puts "\n\n\n\n" puts "Tentativa #{tentativa} de #{limite_de_tentativas}" puts "Chutes até agora: #{chutes}" puts "Entre com o número" chute = gets.strip puts "Será que acertou? Você chutou #{chute}" chute.to_i end

def verifica_se_acertou(numero_secreto, chute) acertou = numero_secreto == chute if acertou ganhou return true end maior = numero_secreto > chute if maior puts "O número secreto é maior!" else puts "O número secreto é menor!" end false end

def ganhou puts puts " OOOOOOOOOOO " puts " OOOOOOOOOOOOOOOOOOO " puts " OOOOOO OOOOOOOOO OOOOOO " puts " OOOOOO OOOOO OOOOOO " puts " OOOOOOOO # OOOOO # OOOOOOOO " puts " OOOOOOOOOO OOOOOOO OOOOOOOOOO " puts "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO " puts "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO " puts "OOOO OOOOOOOOOOOOOOOOOOOOOOOOO OOOO " puts " OOOO OOOOOOOOOOOOOOOOOOOOOOO OOOO " puts " OOOO OOOOOOOOOOOOOOOOOOOO OOOO " puts " OOOOO OOOOOOOOOOOOOOO OOOO " puts " OOOOOO OOOOOOOOO OOOOOO " puts " OOOOOO OOOOOO " puts " OOOOOOOOOOOO " puts puts " Acertou! " puts end

def joga(nome, dificuldade) numero_secreto = sorteia_numero_secreto(dificuldade)

limite_de_tentativas = 5
chutes = []
pontos_ate_agora = 1000

for tentativa in 1..limite_de_tentativas
    chute = pede_um_numero chutes, tentativa, limite_de_tentativas
    chutes << chute

    if nome == "Leticia"
        puts "Acertou!"
        break
    end

    pontos_a_perder = (chute - numero_secreto).abs / 2.0
    pontos_ate_agora = pontos_ate_agora - pontos_a_perder
    if verifica_se_acertou numero_secreto, chute
        break
    end
end

puts "Você ganhou #{pontos_ate_agora} pontos."

end

def nao_quer_jogar? puts "Deseja jogar novamente? (S/N)" quero_jogar = gets.strip nao_quero_jogar = quero_jogar.upcase == "N" end

nome = da_boas_vindas dificuldade = pede_dificuldade

loop do joga nome, dificuldade break if nao_quer_jogar? end