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

O que estou fazendo de errado em Ruby?

Eu escrevi corretamente o código inteliganto os parametros com as variaveis? Se não como eu ligo cada variavel que retorna de cada função?

def player_welcome
    puts "Seja bem vindo ao Jogo de Adivinhação !!"
    puts "Criado por Thiago De Bonis Carvalho Saad Saud"
end

def generate_number_raffled
    number_raffled = 100
    number_raffled.to_i
end

def player_choice_name
    puts "Qual seu nome jogador?"
    player_name = gets
    player_name.to_s
end

def player_choice_attempts(player_name)
    puts "Quantas tentativas gostaria de ter " + player_name + "?" 
    number_attempts = gets
    number_attempts.to_i
end

def play_the_game(player_name,number_attempts)
    puts " " + player_name + "você tem " + number_attempts + "."
    for player_attempts in 1..number_attempts
        puts "Adivinhe um número entre 0 e 200..."
        player_kick = gets
        if check_number_raffled(player_kick,number_raffled)
            break
        end
    end
    player_kick.to_i
end

def check_number_raffled(player_kick,number_raffled)
    if player_kick == number_raffled
        puts "Você Acertou !!"
        return true
    end
    if player_kick > number_raffled
        puts "Você errou!!"
        puts "Você digitou um número maior que o do Sorteado, tente novamente.."
    else
        puts "Você errou!!"
        puts "Você digitou um número menor que o do Sorteado, tente novamente.."
        end
end






player_welcome
player_choice_name
player_choice_attempts(player_name)
play_the_game(player_name,number_attempts)
4 respostas

Oi Thiago,

Faltou armazenar o valor retornado pelos métodos. Por exemplo, o método player_choice_name retorna o nome do player então você precisa atribuir o retorno para uma variável:

player_name = player_choice_name

A mesma ideia precisa ser aplicada ao método player_choice_attempts(player_name).

Abraço!

Oi Joviane, esta aplicação eu faço dentro da função player_choice_name e ele faz este retorno ou eu faço pro fora das funções?

Caso for por fora, isto não viraria um atributo "tradicional" ?

Eu refiz o código do jeito que falou e ficou assim: Porém ele fica reiniciando a função como se ela tivesse sendo chamada toda hora.

def player_welcome
    puts "Seja bem vindo ao Jogo de Adivinhação !!"
    puts "Criado por Thiago De Bonis Carvalho Saad Saud"
end

def generate_number_raffled
    number_raffled = 100
    number_raffled = generate_number_raffled #LINHA ADICIONADA
    number_raffled.to_i
end

def player_choice_name
    puts "\nQual seu nome jogador?"
    player_name = gets
    player_name = player_choice_name #LINHA ADICIONADA
    player_name.to_s
end

def player_choice_attempts(player_choice_name)
    puts "Quantas tentativas gostaria de ter " + player_name + "?" 
    number_attempts = gets
    number_attempts = player_choice_attempts #LINHA ADICIONADA
    number_attempts.to_i
end

def play_the_game(player_name,number_attempts)
    puts " " + player_name + "você tem " + number_attempts + "."
    for player_attempts in 1..number_attempts
        puts "Adivinhe um número entre 0 e 200..."
        player_kick = gets
        if check_number_raffled(player_kick,number_raffled)
            break
        end
    end
    player_kick.to_i
end

def check_number_raffled(player_kick,number_raffled)
    acertou = player_kick == number_raffled
    if acertou
        puts "Você Acertou !!"
        return true
    end
    if player_kick > number_raffled
        puts "Você errou!!"
        puts "Você digitou um número maior que o do Sorteado, tente novamente.."
    else
        puts "Você errou!!"
        puts "Você digitou um número menor que o do Sorteado, tente novamente.."
        end
end


player_welcome
player_choice_attempts(player_choice_name)
player_choice_attempts(player_choice_name)
play_the_game(player_name,number_attempts)
solução!

Oi Thiago,

Você faz fora mesmo, na hora de chamar as funções... A variável que você criar é o que servirá de parâmetro para as demais funções, você só mudará as 4 últimas linhas. Exemplo:

player_welcome

# Aqui você cria a variável player_name
player_name = player_choice_name 

# Aqui você cria a variável number_attempts
number_attempts = player_choice_attempts(player_name) 

# Aqui você passa o valor das duas variáveis criadas anteriormente
play_the_game(player_name, number_attempts)

Ficou um pouco mais claro?

Abraço!

Fiz oque você mandou Joviane. O código rodou, porém apareceram dois bugs que de acordo com o vídeo não era para aparecer, pois o código está estruturado para corrigir esses bugs. O primeiro bug é que o break de parada no if quando acerta não para, e caso eu escreva igual ao vídeo assim: break if... ele dá erro no END o segundo bug é na escolha de número de tentativas, se eu escolher 2 por exemplo ele deveria ir de 1 até 2, porém ele está rodando mais de 2 vezes.

def player_welcome
    puts "Seja bem vindo ao Jogo de Adivinhação !!"
    puts "Criado por Thiago De Bonis Carvalho Saad Saud"
end

def generate_number_raffled
    number_raffled = 100
    number_raffled.to_i
end

def player_choice_name
    puts "\nQual seu nome jogador?"
    player_name = gets
    player_name.to_s
end

def player_choice_attempts(player_name)
    puts "\nQuantas tentativas gostaria de ter " + player_name + "?" 
    number_attempts = gets
    number_attempts.to_i
end

def play_the_game(player_name,number_attempts,player_kick,number_raffled)
    puts "\n " + player_name + "você tem " + number_attempts.to_s + " tentativas."
    for player_attempts in 1..number_attempts
        puts "\nAdivinhe um número entre 0 e 200..."
        player_kick = gets
        if check_number_raffled(player_kick,number_raffled)
            break
        end
    end
    player_kick.to_i
end

def check_number_raffled(player_kick,number_raffled)
    acertou = player_kick.to_i == number_raffled.to_i
    if acertou
        puts "Você Acertou !!"
        return true
    end
    maior = player_kick.to_i >= number_raffled.to_i
    if maior
        puts "\nVocê errou!!"
        puts "Você digitou um número maior que o do Sorteado, tente novamente.."
        return false
    else
        puts "\nVocê errou!!"
        puts "Você digitou um número menor que o do Sorteado, tente novamente.."
        return false
        end
end


player_welcome

number_raffled = generate_number_raffled
player_name = player_choice_name
number_attempts = player_choice_attempts(player_name)
player_kick = play_the_game(player_name,number_attempts,player_kick,number_raffled)
check_number_raffled = check_number_raffled(player_kick,number_raffled)

play_the_game(player_name,number_attempts,player_kick,number_raffled)

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