Oi Davi, vi seu código e pensei em uma solução. Só queria pedir que na próxima vez que disponibilizar o código, joga o link aqui pra gente ser mais direto e também deixar mais fácil pra outras pessoas encontrarem, tá bem?
Bom, a ideia é que a cada letra você verifique se ainda faz sentido pedir mais um chute. Neste caso, se a última letra for chutada e for a certa, não precisamos pedir mais nenhum chute certo? Mas lembrando que precisamos verificar isso em todos os chutes em que a letra for encontrada. Pensando nisso faremos o seguinte...
Dentro do else que avisa que a letra foi encontrada, podemos escrever o seguinte código:
if total_encontrado == 0
avisa_letra_nao_encontrada
erros += 1
else
avisa_letra_encontrada(total_encontrado)
if !mascara.chars.include? "_"
avisa_acertou_palavra
end
end
Mas ai você pode ter um problema, quando a última letra for chutada, ainda teremos caracteres de mascara na palavra mascarada, isso por que a próxima mascara só será feita na próxima rodada.
Então eu consigo pensar agora em duas possiveis soluções. A primeira delas é fazer esse if logo depois de mascarar a palavra ou então fazer o seguinte:
if total_encontrado == 0
avisa_letra_nao_encontrada
erros += 1
else
avisa_letra_encontrada(total_encontrado)
if mascara.chars.count "_" == total_encontrado
avisa_acertou_palavra
end
end
neste caso, quando o chute for feito, eu comparo a quantidade encontrada com o total que falta, se esse número bater, quer dizer que a palavra foi totalmente descoberta.
Testa pra mim? Não cheguei a testar.