{"id":5506,"date":"2025-08-29T20:42:42","date_gmt":"2025-08-29T23:42:42","guid":{"rendered":"https:\/\/matematicasaomiguel.com.br\/?page_id=5506"},"modified":"2026-02-21T21:26:58","modified_gmt":"2026-02-22T00:26:58","slug":"gerar-tabela-de-jogos","status":"publish","type":"page","link":"https:\/\/matematicasaomiguel.com.br\/?page_id=5506","title":{"rendered":"GERAR TABELA DE JOGOS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5506\" class=\"elementor elementor-5506\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fab4c22 e-flex e-con-boxed e-con e-parent\" data-id=\"fab4c22\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-08e81f3 e-transform elementor-widget elementor-widget-html\" data-id=\"08e81f3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scale_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_widescreen&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_mobile_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"pt-BR\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <title>Tabela de Jogos<\/title>\r\n  <style>\r\n    body { font-family: Arial, sans-serif; padding: 20px; }\r\n    input, select, button { margin: 5px; padding: 5px; }\r\n    table, th, td { border: 1px solid black; border-collapse: collapse; padding: 5px; text-align: center; }\r\n    table { margin-bottom: 20px; width: 80%; }\r\n    .hidden { display: none; }\r\n    .fase-titulo { font-weight: bold; margin-top: 30px; font-size: 18px; }\r\n    h3 { margin-top: 15px; }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <h1>Gerador de Tabela de Jogos<\/h1>\r\n\r\n  <label for=\"tipo\">Tipo de campeonato:<\/label>\r\n  <select id=\"tipo\">\r\n    <option value=\"turno\">Apenas Turno<\/option>\r\n    <option value=\"turno_returno\">Turno e Returno<\/option>\r\n  <\/select>\r\n\r\n  <label for=\"numTeams\">N\u00famero de equipes:<\/label>\r\n  <input type=\"number\" id=\"numTeams\" min=\"2\" max=\"20\" \/>\r\n  <button onclick=\"gerarCamposEquipes()\">Continuar<\/button>\r\n\r\n  <div id=\"nomesEquipesDiv\" class=\"hidden\">\r\n    <h3>Insira os nomes das equipes:<\/h3>\r\n    <div id=\"inputsNomes\"><\/div>\r\n    <button onclick=\"gerarTabelaJogos()\">Gerar Tabela de Jogos<\/button>\r\n  <\/div>\r\n\r\n  <div id=\"tabelaJogosDiv\"><\/div>\r\n\r\n  <button onclick=\"gerarPDF()\">Exportar como PDF<\/button>\r\n\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js\"><\/script>\r\n<script>\r\n\r\n    let nomesEquipes = [];\r\n    let jogos = [];\r\n    let tipo = 'turno';\r\n    let classificacao = {};\r\n\r\n    function gerarCamposEquipes() {\r\n      const num = parseInt(document.getElementById('numTeams').value);\r\n      if (isNaN(num) || num < 2) return alert(\"Insira um n\u00famero v\u00e1lido de equipes.\");\r\n      document.getElementById(\"inputsNomes\").innerHTML = \"\";\r\n      for (let i = 0; i < num; i++) {\r\n        document.getElementById(\"inputsNomes\").innerHTML +=\r\n          `Equipe ${i + 1}: <input type='text' id='equipe${i}' required \/><br>`;\r\n      }\r\n      document.getElementById(\"nomesEquipesDiv\").classList.remove(\"hidden\");\r\n    }\r\n\r\n    function gerarTabelaJogos() {\r\n      tipo = document.getElementById('tipo').value;\r\n      const num = parseInt(document.getElementById('numTeams').value);\r\n      nomesEquipes = [];\r\n      classificacao = {};\r\n      for (let i = 0; i < num; i++) {\r\n        const nome = document.getElementById(`equipe${i}`).value.trim();\r\n        if (!nome) return alert(\"Preencha todos os nomes das equipes.\");\r\n        nomesEquipes.push(nome);\r\n        classificacao[nome] = { pontos: 0, v: 0, e: 0, d: 0, sg: 0 };\r\n      }\r\n\r\n      jogos = gerarRodadas(nomesEquipes, tipo === \"turno_returno\");\r\n      renderizarTabelaJogos();\r\n    }\r\n\r\n    \/\/ Algoritmo round-robin\r\n    function gerarRodadas(equipes, returno) {\r\n      let teams = [...equipes];\r\n      if (teams.length % 2 !== 0) teams.push(\"Folga\");\r\n      const n = teams.length;\r\n      const rodadas = [];\r\n\r\n      for (let r = 0; r < n - 1; r++) {\r\n        const rodada = [];\r\n        for (let i = 0; i < n \/ 2; i++) {\r\n          const t1 = teams[i];\r\n          const t2 = teams[n - 1 - i];\r\n          if (t1 !== \"Folga\" && t2 !== \"Folga\") {\r\n            rodada.push({ rodada: r + 1, equipe1: t1, equipe2: t2, placar1: '', placar2: '' });\r\n          }\r\n        }\r\n        rodadas.push(rodada);\r\n        teams.splice(1, 0, teams.pop());\r\n      }\r\n\r\n      let jogos = rodadas.flat();\r\n      if (returno) {\r\n        const returnoJogos = jogos.map(j => ({\r\n          rodada: j.rodada + rodadas.length,\r\n          equipe1: j.equipe2,\r\n          equipe2: j.equipe1,\r\n          placar1: '',\r\n          placar2: ''\r\n        }));\r\n        jogos = jogos.concat(returnoJogos);\r\n      }\r\n      return jogos;\r\n    }\r\n\r\n    function renderizarTabelaJogos() {\r\n      const div = document.getElementById(\"tabelaJogosDiv\");\r\n      div.innerHTML = \"<h2>Rodadas<\/h2>\";\r\n      let rodadaAtual = 0;\r\n\r\n      jogos.forEach((jogo, idx) => {\r\n        if (jogo.rodada !== rodadaAtual) {\r\n          rodadaAtual = jogo.rodada;\r\n          div.innerHTML += `<h3>Rodada ${rodadaAtual}<\/h3>\r\n            <table id=\"rodada${rodadaAtual}\">\r\n              <tr><th>Equipe 1<\/th><th>Placar<\/th><th>x<\/th><th>Placar<\/th><th>Equipe 2<\/th><\/tr>\r\n            <\/table>`;\r\n        }\r\n        const tabela = document.getElementById(`rodada${rodadaAtual}`);\r\n        const row = tabela.insertRow();\r\n        row.innerHTML = `\r\n          <td>${jogo.equipe1}<\/td>\r\n          <td><input type=\"number\" min=\"0\" data-idx=\"${idx}\" data-time=\"1\" onchange=\"atualizarPlacar(this)\" value=\"${jogo.placar1}\" \/><\/td>\r\n          <td>X<\/td>\r\n          <td><input type=\"number\" min=\"0\" data-idx=\"${idx}\" data-time=\"2\" onchange=\"atualizarPlacar(this)\" value=\"${jogo.placar2}\" \/><\/td>\r\n          <td>${jogo.equipe2}<\/td>`;\r\n      });\r\n    }\r\n\r\n    function atualizarPlacar(input) {\r\n      const idx = parseInt(input.dataset.idx);\r\n      const time = parseInt(input.dataset.time);\r\n      if (time === 1) jogos[idx].placar1 = parseInt(input.value);\r\n      else jogos[idx].placar2 = parseInt(input.value);\r\n\r\n      if (jogos.every(j => j.placar1 !== '' && j.placar2 !== '')) {\r\n        calcularClassificacao();\r\n      }\r\n    }\r\n\r\n    function calcularClassificacao() {\r\n      \/\/ Reset\r\n      for (let equipe in classificacao) {\r\n        classificacao[equipe] = { pontos: 0, v: 0, e: 0, d: 0, sg: 0 };\r\n      }\r\n\r\n      jogos.forEach(j => {\r\n        const p1 = parseInt(j.placar1);\r\n        const p2 = parseInt(j.placar2);\r\n        if (isNaN(p1) || isNaN(p2)) return;\r\n\r\n        if (p1 > p2) {\r\n          classificacao[j.equipe1].pontos += 3;\r\n          classificacao[j.equipe1].v++;\r\n          classificacao[j.equipe2].d++;\r\n        } else if (p1 < p2) {\r\n          classificacao[j.equipe2].pontos += 3;\r\n          classificacao[j.equipe2].v++;\r\n          classificacao[j.equipe1].d++;\r\n        } else {\r\n          classificacao[j.equipe1].pontos += 1;\r\n          classificacao[j.equipe2].pontos += 1;\r\n          classificacao[j.equipe1].e++;\r\n          classificacao[j.equipe2].e++;\r\n        }\r\n\r\n        classificacao[j.equipe1].sg += p1 - p2;\r\n        classificacao[j.equipe2].sg += p2 - p1;\r\n      });\r\n\r\n      exibirClassificacao();\r\n    }\r\n\r\n    function exibirClassificacao() {\r\n  const div = document.getElementById(\"tabelaJogosDiv\");\r\n  if (document.getElementById(\"classificacaoTabela\")) {\r\n    document.getElementById(\"classificacaoTabela\").remove();\r\n  }\r\n\r\n  const times = Object.keys(classificacao).sort((a, b) => {\r\n    const ca = classificacao[a], cb = classificacao[b];\r\n    return cb.pontos - ca.pontos || cb.sg - ca.sg || cb.v - ca.v;\r\n  });\r\n\r\n  let html = `<div id=\"classificacaoTabela\"><h2>Classifica\u00e7\u00e3o<\/h2>\r\n  <table><tr><th>Equipe<\/th><th>Pts<\/th><th>V<\/th><th>E<\/th><th>D<\/th><th>SG<\/th><\/tr>`;\r\n  times.forEach(t => {\r\n    const c = classificacao[t];\r\n    html += `<tr><td>${t}<\/td><td>${c.pontos}<\/td><td>${c.v}<\/td><td>${c.e}<\/td><td>${c.d}<\/td><td>${c.sg}<\/td><\/tr>`;\r\n  });\r\n  html += \"<\/table><\/div>\";\r\n  \r\n  div.insertAdjacentHTML(\"beforeend\", html);\r\n\r\n    }\r\n    async function gerarPDF() {\r\n    const { jsPDF } = window.jspdf;\r\n    const doc = new jsPDF('p', 'pt', 'a4');\r\n    const source = document.getElementById(\"tabelaJogosDiv\");\r\n\r\n    \/\/ Usa html2canvas para renderizar a div em um canvas\r\n    const canvas = await html2canvas(source, { scale: 1.5 });\r\n    const imgData = canvas.toDataURL('image\/png');\r\n\r\n    \/\/ Calcula a dimens\u00e3o da imagem em rela\u00e7\u00e3o ao tamanho da p\u00e1gina do PDF\r\n    const imgWidth = 595.28; \/\/ A4 largura em pontos (210mm)\r\n    const pageHeight = 841.89; \/\/ A4 altura em pontos (297mm)\r\n    const imgHeight = (canvas.height * imgWidth) \/ canvas.width;\r\n    let heightLeft = imgHeight;\r\n    let position = 0;\r\n\r\n    \/\/ Adiciona a primeira imagem ao PDF\r\n    doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);\r\n    heightLeft -= pageHeight;\r\n\r\n    \/\/ Se a imagem for maior que uma p\u00e1gina, adicione novas p\u00e1ginas e o restante da imagem\r\n    while (heightLeft > 0) {\r\n        position = heightLeft - imgHeight;\r\n        doc.addPage();\r\n        doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);\r\n        heightLeft -= pageHeight;\r\n    }\r\n\r\n    doc.save('tabela_campeonato.pdf');\r\n}\r\n  <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tabela de Jogos Gerador de Tabela de Jogos Tipo de campeonato: Apenas TurnoTurno e Returno N\u00famero de equipes: Continuar Insira [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5506","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=\/wp\/v2\/pages\/5506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5506"}],"version-history":[{"count":22,"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=\/wp\/v2\/pages\/5506\/revisions"}],"predecessor-version":[{"id":5942,"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=\/wp\/v2\/pages\/5506\/revisions\/5942"}],"wp:attachment":[{"href":"https:\/\/matematicasaomiguel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}