Não sei o que pode ter ocorrido durante o encapsulamento das funções, mas o botão reiniciar permaneceu ativo durante o jogo após.
var tempoInicial = $("#tempo-digitacao").text();
var campo = $(".campo-digitacao");
$(function(){
atualizaTamanhoFrase();
inicializaContadores();
inicializaCronometro();
inicializaMarcadores();
$("#botao-reiniciar").click(reiniciaJogo);
});
function atualizaTamanhoFrase(){
var frase = $(".frase").text();
var numPalavras = frase.split(" ").length;
var tamanhoFrase = $("#tamanho-frase");
tamanhoFrase.text(numPalavras);
}
function inicializaContadores() {
campo.on("input",function() {
var conteudo = campo.val();
var qtdPalavras = conteudo.split(" ").length;
$("#contador-palavras").text(qtdPalavras);
var qtdCaracteres = conteudo.length;
$("#contador-caracteres").text(qtdCaracteres);
});
}
function inicializaCronometro() {
var tempoRestante = $("#tempo-digitacao").text();
campo.one("focus", function() {
var cronometroID = setInterval(function() {
tempoRestante--;
$("#tempo-digitacao").text(tempoRestante);
if (tempoRestante < 1) {
clearInterval(cronometroID);
finalizaJogo();
}
}, 1000);
});
}
function finalizaJogo(){
campo.attr("disabled", true);
campo.addClass("campo-desativado");
// campo.toogleClass("campo-desativado");
inserePlacar();
}
function inicializaMarcadores(){
var frase = $(".frase").text();
campo.on("input", function() {
var digitado = campo.val();
var comparavel = frase.substr(0 , digitado.length);
if(digitado == comparavel) {
campo.addClass("borda-verde");
campo.removeClass("borda-vermelha");
} else {
campo.addClass("borda-vermelha");
campo.removeClass("borda-verde");
}
});
}
function inserePlacar(){
var corpoTabela = $(".placar").find("tbody");
var usuario = "Carlos";
var numPalavras = $("#contador-palavras").text();
var linha = "<tr>"+
"<td>"+ usuario + "</td>"+
"<td>"+ numPalavras + "</td>"+
"</tr>";
corpoTabela.prepend(linha);
}
function reiniciaJogo(){
campo.attr("disabled",false);
campo.val("");
$("#contador-palavras").text("0");
$("#contador-caracteres").text("0");
$("#tempo-digitacao").text(tempoInicial);
inicializaCronometro();
campo.removeClass("campo-desativado");
// campo.toogleClass("campo-desativado");
campo.removeClass("borda-vermelha");
campo.removeClass("borda-verde");
}