No curso de introdução à lógica de programação em Ruby, o jogo às vezes retorna um acerto e em outros casos não, tudo isso com o mesmo código. Alguém saberia explicar o por quê?
Exemplos: Mostra https://drive.google.com/file/d/1p1b1EP7d45xvB2Velo9SUoHEX6IuOxyK/view?usp=sharing
Não mostra https://drive.google.com/file/d/1sJc8RDpiwd7fUuM9L_F7oIC-y1rLokr_/view?usp=sharing
def da_boas_vindas
puts "Bem-vindo ao jogo da advinhação"
puts "Qual é o seu nome?"
nome = gets.strip
puts "\n\n\n\n"
puts "Vamos começar o jogo para você, #{nome} "
end
def pede_dificuldade
puts "Qual o nível de dificuldade que deseja? (1 fácil, 5 difícil)"
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 entre 0 e #{maximo - 1}"
sorteado = rand(200)
puts "Escolhido! Que tal adivinhar hoje o nosso número secreto?"
sorteado
end
def pede_um_numero(chutes, tentativa, limite_tentativas)
puts "\n\n\n\n"
puts "Tentativa #{tentativa} de #{limite_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_acerto(numero_secreto, chute)
acertou = numero_secreto == chute.to_i
if acertou
puts "Acertou!"
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
da_boas_vindas
dificuldade = pede_dificuldade
numero_secreto = sorteia_numero_secreto dificuldade
pontos_ate_agora = 1000
limite_tentativas = 5
chutes = []
total_de_chutes = 0
for tentativa in 1..limite_tentativas
chute = pede_um_numero chutes, tentativa, limite_tentativas
chutes << chute
total_de_chutes = total_de_chutes + 1
pontos_a_perder = (chute - numero_secreto).abs / 2.0
pontos_ate_agora -= pontos_a_perder
if verifica_acerto numero_secreto, chute
break
end
end
puts "Você ganhou #{pontos_ate_agora} pontos!"