animId = requestAnimationFrame(render); } else { ctx.clearRect(0, 0, canvas.width, canvas.height); cancelAnimationFrame(animId); } } render(); } window.addEventListener("keydown", (e) => { if (e.key === "Enter") { tratarEntrada("ENTER"); } else if (e.key === "Backspace") { tratarEntrada("BACKSPACE"); } else if (e.key === "ArrowLeft") { tratarEntrada("ARROWLEFT"); } else if (e.key === "ArrowRight") { tratarEntrada("ARROWRIGHT"); } else if (/^[a-zA-ZçÇ]$/.test(e.key)) { tratarEntrada(e.key.toUpperCase()); } }); // Impede rolagem indesejada ou zoom por gesto em smartphones document.addEventListener("gesturestart", (e) => e.preventDefault()); document.addEventListener("touchmove", (e) => { if (e.scale !== 1) e.preventDefault(); }, { passive: false }); // Inicia o carregamento assíncrono do arquivo de palavras carregarBancoDePalavras();