
Atual campeão, o Flamengo encabeça o Grupo A da Libertadores 2026, e já está classificado para as oitavas de final, mesmo enfrentando adversários tradicionais como o Estudiantes (ARG), o desafio da altitude peruana contra o Cusco e a força do Independiente Medellín (COL).
Como funciona o Simulador do Grupo A da Libertadores?
Você ainda pode projetar a rodada final no Simulador Interativo do Grupo A. A ferramenta permite que você assuma o controle e brinque de adivinhar o futuro: basta preencher os seus palpites e ver a tabela de classificação se atualizar em tempo real.
O jogo entre Independiente Medellín e Flamengo, pela quarta rodada, foi cancelado e está travado no Simulador. A Conmebol ainda não tomou uma decisão, mas a tendência é que o Rubro-Negro ganhe os pontos por W.O.
Os dois primeiros colocados avançam para as oitavas de final da Libertadores, enquanto o terceiro ganha uma sobrevida nos playoffs da Copa Sul-Americana.
Simule os resultados de Flamengo, Estudiantes, Cusco e Independiente Medellín
CLASSIFICAÇÃO
Oitavas da Libertadores
Playoffs da Sul-Americana
`;
}
const home = teamsConfigA[match.home];
const away = teamsConfigA[match.away];
const homeScore = matchResultsA[index] && matchResultsA[index].homeGoals !== undefined ? matchResultsA[index].homeGoals : ”;
const awayScore = matchResultsA[index] && matchResultsA[index].awayGoals !== undefined ? matchResultsA[index].awayGoals : ”;
const disabledAttr = (matchResultsA[index] && matchResultsA[index].locked) ? ‘disabled=”disabled”‘ : ”;
html += `
`;
});
container.innerHTML = html;
const inputs = document.querySelectorAll(‘#lib-group-a-wrapper .lib-input-score:not([disabled])’);
inputs.forEach(input => {
input.addEventListener(‘input’, handleScoreChangeA);
});
}
function handleScoreChangeA(e) {
const matchIndex = e.target.getAttribute(‘data-match’);
if (matchResultsA[matchIndex] && matchResultsA[matchIndex].locked) return;
const row = e.target.closest(‘.lib-match-row’);
const homeInput = row.querySelector(‘.home-score’).value;
const awayInput = row.querySelector(‘.away-score’).value;
if (homeInput !== “” && awayInput !== “”) {
matchResultsA[matchIndex] = {
homeGoals: parseInt(homeInput, 10),
awayGoals: parseInt(awayInput, 10)
};
} else {
delete matchResultsA[matchIndex];
}
calculateStandingsA();
}
function calculateStandingsA() {
let tableData = {};
// Loop protegido com Object.keys()
Object.keys(teamsConfigA).forEach(key => {
tableData[key] = { id: key, pts: 0, j: 0, v: 0, e: 0, d: 0, gp: 0, gc: 0 };
});
Object.keys(matchResultsA).forEach(key => {
let match = matchesScheduleA[key];
let res = matchResultsA[key];
if (!match) return;
// Ignora o jogo cancelado para cálculos
if (res.homeGoals === “” || res.awayGoals === “”) return;
let hTeam = tableData[match.home];
let aTeam = tableData[match.away];
if (!hTeam || !aTeam) return;
hTeam.j++; aTeam.j++;
hTeam.gp += res.homeGoals; hTeam.gc += res.awayGoals;
aTeam.gp += res.awayGoals; aTeam.gc += res.homeGoals;
if (res.homeGoals > res.awayGoals) {
hTeam.pts += 3; hTeam.v++; aTeam.d++;
} else if (res.homeGoals < res.awayGoals) {
aTeam.pts += 3; aTeam.v++; hTeam.d++;
} else {
hTeam.pts += 1; aTeam.pts += 1;
hTeam.e++; aTeam.e++;
}
});
let teamsArr = Object.values(tableData);
// Lógica: Confronto Direto
let groupsByPts = {};
teamsArr.forEach(t => {
if (!groupsByPts[t.pts]) groupsByPts[t.pts] = [];
groupsByPts[t.pts].push(t);
});
Object.keys(groupsByPts).forEach(pts => {
let tiedTeams = groupsByPts[pts];
if (tiedTeams.length > 1) {
let tiedIds = tiedTeams.map(t => t.id);
tiedTeams.forEach(t => { t.h2hPts = 0; t.h2hGD = 0; t.h2hGF = 0; });
Object.keys(matchResultsA).forEach(key => {
let match = matchesScheduleA[key];
let res = matchResultsA[key];
if (!match || res.homeGoals === “” || res.awayGoals === “”) return;
if (tiedIds.includes(match.home) && tiedIds.includes(match.away)) {
let hTeam = tiedTeams.find(t => t.id === match.home);
let aTeam = tiedTeams.find(t => t.id === match.away);
hTeam.h2hGF += res.homeGoals;
aTeam.h2hGF += res.awayGoals;
hTeam.h2hGD += (res.homeGoals – res.awayGoals);
aTeam.h2hGD += (res.awayGoals – res.homeGoals);
if (res.homeGoals > res.awayGoals) {
hTeam.h2hPts += 3;
} else if (res.homeGoals < res.awayGoals) {
aTeam.h2hPts += 3;
} else {
hTeam.h2hPts += 1; aTeam.h2hPts += 1;
}
}
});
}
});
teamsArr.sort((a, b) => {
if (b.pts !== a.pts) return b.pts – a.pts;
if (a.h2hPts !== undefined && b.h2hPts !== undefined) {
if (b.h2hPts !== a.h2hPts) return b.h2hPts – a.h2hPts;
if (b.h2hGD !== a.h2hGD) return b.h2hGD – a.h2hGD;
if (b.h2hGF !== a.h2hGF) return b.h2hGF – a.h2hGF;
}
let sgA = a.gp – a.gc;
let sgB = b.gp – b.gc;
if (sgB !== sgA) return sgB – sgA;
if (b.gp !== a.gp) return b.gp – a.gp;
return teamsConfigA[a.id].name.localeCompare(teamsConfigA[b.id].name);
});
renderTableA(teamsArr);
}
function renderTableA(sortedTeams) {
const tbody = document.getElementById(‘lib-table-body-a’);
if(!tbody) return;
let html=””;
sortedTeams.forEach((team, index) => {
const posClass = `lib-pos-${index + 1}`;
const sg = team.gp – team.gc;
const sgDisplay = sg > 0 ? `+${sg}` : sg;
html += `
${teamsConfigA[team.id].name}
`;
});
tbody.innerHTML = html;
}
// Script protegido para carregar com segurança
if (document.readyState === ‘complete’ || document.readyState === ‘interactive’) {
initSimulatorA();
} else {
document.addEventListener(‘DOMContentLoaded’, initSimulatorA);
}
})();
/* ]]> */
➡️ Simulador do Corinthians: como irá o Timão na Fase de Grupos da Libertadores?
➡️ Simulador do Fluminense: Tricolor passa sufoco ou avança? Teste aqui!
E aí, como ficou a sua simulação? O Flamengo passou em primeiro? Tire um print e compartilhe nos grupos!