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

Problema de logíca

O jogo não entra na pontuação e quando eu termino a palavra ele não pontua. Coloquei alguns puts para ver se entrava no laço de pontuação e ele não entra. Aqui está o foca.rb


require_relative 'ui'
require_relative "rank"




def palavra_mascarada(chutes, palavra_secreta)
    mascara = ""
    for letra in palavra_secreta.chars
        if chutes.include? letra
            mascara += letra
        else
            mascara += "_"
        end
    end
    mascara
end


def pede_um_chute_valido(chutes, erros, mascara)
    cabecalho_de_tentativa chutes, erros, mascara
    loop do
        chute = pede_um_chute
        if chutes.include? chute
            avisa_chute_repetido chute
        else
            return chute
        end
    end
end

def joga(nome)
    palavra_secreta = sorteia_palavra_secreta

    erros = 0
    chutes = []
    pontos_ate_agora = 0

    while erros < 5
        mascara = palavra_mascarada chutes, palavra_secreta
        puts mascara
        chute = pede_um_chute 
        chutes << chute

        chutou_uma_unica_letra = chute.size == 1
        if chutou_uma_unica_letra
            total_encontrado = palavra_secreta.count(chute[0])

            if total_encontrado == 0
                avisa_letra_nao_encontrada
                erros += 1
            else
                avisa_letra_encontrada total_encontrado
            end  
        else
            acertou = chute == palavra_secreta
            if acertou
                avisa_acertou_palavra
                pontos_ate_agora +=100
                puts "Entrou nesse laço"
                break
            else
                avisa_errou_palavra
                pontos_ate_agora -=30
                erros += 1
                puts "Entrou aqui"
            end
        end
    end
    avisa_pontos pontos_ate_agora
end



def jogo_da_forca
    nome= da_boas_vindas
    pontos_totais= 0

    avisa_campeao_atual le_rank


    loop do 
        pontos_totais += joga nome
        avisa_pontos_totais pontos_totais
        salva_rank nome, pontos_totais
            if le_rank[1].to_i< pontos_totais
                salva_rank nome,pontos_totais
            end
        break if não_quer_jogar?
    end
end

e aqui o ui.rb

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

def pede_um_chute
   puts "Entre com a letra ou palavra"
   chute= gets.strip.downcase
   puts "Será que acertou? Você chutou #{chute}"
   chute
end

def não_quer_jogar?
    puts "Deseja jogar novamente? (S/N)"
    quero_jogar = gets.strip
    não_quer_jogar = quero_jogar.upcase == "N"
end


def sorteia_palavra_secreta
    avisa_escolhendo_palavra
    texto = File.read("dicionario.txt")
    todas_as_palavras = texto.split("\n")
    numero_aleatorio = rand(todas_as_palavras.size)
    palavra_secreta = todas_as_palavras[numero_aleatorio].downcase
    avisa_palavra_escolhida palavra_secreta
end

def cabecalho_de_tentativa (chutes,erros,mascara)
    puts "\n\n\n\n"
    puts"Palavra secreta #{mascara}"
    puts "Erros até agora #{erros}"
    puts "Chutes até agora #{chutes}"
end



def avisa_chute_repetido (chute)
    puts "Este chute já foi dado!"
end

def avisa_letra_nao_encontrada
    puts "Letra não encontrada"
end

def avisa_letra_encontrada(total_encontrado)
    puts "Letra encontrada #{total_encontrado} vezes!"
end

def avisa_acertou_palavra
    puts "PArabéns!Acertou"
end

def avisa_errou_palavra
    puts "Que pena... você errou!"
end

def avisa_pontos (pontos_ate_agora)
    puts "Você ganhou #{pontos_ate_agora} pontos"
end

def avisa_escolhendo_palavra
    puts "Escolhendo uma palavra"
end

def avisa_palavra_escolhida (palavra_secreta)
    puts"Escolhida uma palavra secreta com #{palavra_secreta.size} letras... Boa sorte!"
    palavra_secreta
end

def avisa_campeao_atual (dados)
    puts "Nosso campeao atual é #{dados[0]} com #{dados[1]} pontos"
end

Mas o jogo roda normalmente, sem erros.

1 resposta
solução!

Oi Thiago, tudo bem? A pontuação pelo jeito que seu código está só será contada se chutar a palavra completa. Acho que talvez você possa ter se enganado de onde colocar a pontuação?

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