1
resposta

Dúvida em relação a Array no jogo da forca

Oi pessoal, Eu fiz o código do jogo da forca seguindo a aula e não consigo entender uma coisa. Tem um momento que a gente atribui a uma variável chamada letra_procurada uma outra variável, porém o código é escrito como se essa variável fosse um array, dessa maneira aqui: letra_procurada = chute [0]

Chute não é um array, não entendi porque colocar chute na posição zero. Ele tem posição zero mesmo não sendo um array?

Muito obrigado!

def da_boas_vindas
    puts "Bem vindo ao jogo da forca"
    puts "Qual é o seu nome?"
    nome = gets.chomp
    puts "\n\n\n\n"
    puts "Começaremos o jogo para você, #{nome}"
    nome
end

def escolhe_palavra_secreta
    puts "Escolhendo uma palavra secreta"
    palavra_secreta = "programador"
    puts "Palavra secreta com #{palavra_secreta.size} letras...boa sorte!"
    return palavra_secreta
end

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

def pede_um_chute(erros, chutes)
    puts "\n\n\n\n"
    puts "Erros até agora: #{erros}"
    puts "Chutes até agora: #{chutes}"
    puts "Entre com uma letra ou com uma palavra"
    chute = gets.chomp
    puts "Será que acertou? Você chutou #{chute}"
    chute
end

def joga(nome)
    palavra_secreta = escolhe_palavra_secreta

    erros = 0
    chutes = []
    pontos_ate_agora = 0

    while erros < 5 
        chute = pede_um_chute(erros, chutes)
        chutes << chute

        chutou_uma_letra = chute.size == 1
        if chutou_uma_letra

            # SE CHUTE NÃO É UM ARRAY, O QUE SIGNIFICA CHUTE NO INDEX 0?

            letra_procurada = chute [0]
            total_encontrado = palavra_secreta.count letra_procurada
            if total_encontrado == 0
                puts "Letra não encontrada."
                erros += 1
            else
                puts "Letra encontrada #{total_encontrado} vezes."
            end
        else
            acertou = chute == palavra_secreta
            if acertou
                puts "Parabéns, você acertou!"
                pontos_ate_agora += 100
                break
            else
                puts "Que pena...errou"
                pontos_ate_agora -= 30
                erros += 1 
            end
        end
    end
    puts "Você ganhou #{pontos_ate_agora} pontos."
end

nome = da_boas_vindas

loop do
    jogo = joga(nome)
    if nao_quer_jogar?
        break
    end
1 resposta

Oi Henrique tudo bem?

Toda string é um array de caracteres. Então se o usuário escrever uma palavra ao invés de uma letra o programa só vai pegar a primeira letra.

Espero ter ajudado!!!