Estou construindo o jogo juntamente com as aulas, porem o meu deu erro, e nao estou conseguindo localizar o motivo:
main.rb
require_relative 'forca'
jogo_da_forca
forca.rb
require_relative 'ui'
def pede_um_chute_valido(chutes, erros)
loop do
chute = pede_um_chute(chutes, erros)
if chutes.include? chute
avisa_chute_efetuado(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
chute = pede_um_chute_valido(chutes, erros)
chutes << chute
chutou_uma_letra = chute.size == 1
if chutou_uma_letra
total_encontrado = conta(palavra_secreta,chute)
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
break
else
avisa_errou_palavra()
pontos_ate_agora -=30
erros +=1
end
end
end
avisa_pontos(pontos_ate_agora)
end
def jogo_da_forca
nome = da_boas_vindas
loop do
joga(nome)
break if nao_quer_jogar?
end
end
ui.rb
def avisa_chute_efetuado(chute)
puts "Você já chutou #{chute}"
end
def avisa_letra_nao_encontrada
puts "Letra nao encontrada"
end
def avisa_letra_encontrada(total_encontrado)
puts "Letra encontrada #{total_encontrado} vezes"
end
def avisa_acertou_palavra()
puts "Parabens! Acertou!"
end
def avisa_errou_palavra()
puts "Que pena errou!"
end
def avisa_pontos(pontos_ate_agora)
puts "Voce ganhou #{pontos_ate_agora} pontos"
end
def da_boas_vindas
puts "Bem vindo ao jogo da forca"
puts "Qual o seu nome"
nome = gets.strip
puts "\n\n\n\n\n\n"
puts "Comecaremos o jogo para voce, #{nome}"
nome
end
def sorteia_palavra_secreta
puts "Escolhendo palavra secreta"
palavra_secreta = "programador"
puts "Escolhida uma palavra secreta com #{palavra_secreta.size} letras... Boa sorte!"
palavra_secreta
end
def nao_quer_jogar?
puts "Deseja jogar novamente? (S/N)"
quero_jogar = gets.strip
nao_quero_jogar = quero_jogar.upcase == "N"
end
def pede_um_chute(chutes, erros)
puts "\n\n\n\n\n\n"
puts "Erros ate agora #{erros}"
puts "Chutes ate agora #{chutes}"
puts "Entre com a letra ou palvra"
chute = gets.strip
puts "Será que acertou ? Você chutou #{chute}"
chute
end
def conta(texto, caracater)
total_encontrado = 0
for letra in texto.chars
mascara = if letra.eql?(caracater)
total_encontrado += 1
letra
else
"_"
end
#if letra == caracater
# total_encontrado += 1
# mascara = letra
#else
# mascara = "_"
#end
print "#{mascara}"
end
total_encontrado
end