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

Aula 05 - Vídeo 01

Segui o exemplo do Guilherme, e quando rodo no terminal o programa, ao tentar colocar um número qualquer, ele está mostrando:

Será que você acertou? Você chutou 100 maior_ou_menor.rb:55:in block in <main>': undefined method-' for "100":String (NoMethodError) from maior_ou_menor.rb:50:in each' from maior_ou_menor.rb:50:in'

Tentei colocar o to_s ou alterar tipo para float mas não rolou.

Meu código:

da_boas_vindas
numero_secreto = sorteia_numero_secreto

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

    pontos_a_perder = (chute - numero_secreto) / 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."
4 respostas

Marcelo, o código parece ok, mas veja se os métodos já estão declarados quando você realiza a chamada. (A ordem do métodos no arquivo).

Fala Felipe, tudo bem cara?

Vou postar todo o código (eu sinceramente não sei qq ta rolando)..

def da_boas_vindas
    puts "Seja bem vindo ao jogo da adivinhação!"
    puts "Qual é o seu nome?"
    nome = gets.strip
    puts "\n\n\n"
    puts "Começaremos o jogo para você #{nome}"
end

def sorteia_numero_secreto
    puts "Escolhendo um número secreto entre 0 e 200..."
    sorteado = 175 
    puts "Escolhido... que tal adivinhar hoje nosso número secreto?"
    puts"\n\n\n\n"
    sorteado 
end

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

def verifica_se_acertou(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 "Número secreto é maior!"
    else
        puts "Número secreto é menor!"
    end
    false
end

da_boas_vindas
numero_secreto = sorteia_numero_secreto

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

    pontos_a_perder = (chute - numero_secreto) / 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."
solução!

Marcelo, no método pede_um_numero na ultima linha converta a variável chute para para inteiro chute.to_i

Abraços

Agora rolou Felipe, show mano!!

O que achei estranho é que ele apontava para a linha 50.. não entendi.

O bom é que agora ele corrigiu até o array que trazia a informação dos números entre "" (aspas)

Obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software