public void JogarRodada(LayoutRodadas rodada) { if (rodada.FoiJogada) { return; } foreach (var partidaDb in dBRodadas.Rodadas.Find(r => r.Rodada == rodada.ID).Partidas) { var partida = dBPartidas.Partidas.Find(p => p.ID == partidaDb.ID); partida.GolsTimeA = GetGolsDoTime(true); partida.GolsTimeB = GetGolsDoTime(false); if (partida.GolsTimeA != partida.GolsTimeB) { LayoutTimes timeVencedor; LayoutTimes timePerdedor; int golsVencedor; int golsPerdedor; if (partida.GolsTimeA > partida.GolsTimeB) { timeVencedor = dBTimes.Times.Find(x => x.ID == partida.TimeA.ID); timePerdedor = dBTimes.Times.Find(x => x.ID == partida.TimeB.ID); golsVencedor = partida.GolsTimeA; golsPerdedor = partida.GolsTimeB; } else { timeVencedor = dBTimes.Times.Find(x => x.ID == partida.TimeB.ID); timePerdedor = dBTimes.Times.Find(x => x.ID == partida.TimeA.ID); golsVencedor = partida.GolsTimeB; golsPerdedor = partida.GolsTimeA; } partida.TimeVencedor = timeVencedor; timeVencedor.Vitorias++; timePerdedor.Derrotas++; timeVencedor.Pontos += 3; timeVencedor.GolsFeitos += golsVencedor; timeVencedor.GolsSofridos += golsPerdedor; timeVencedor.SaldoDeGols = timeVencedor.GolsFeitos - timeVencedor.GolsSofridos; timePerdedor.GolsFeitos += golsPerdedor; timePerdedor.GolsSofridos += golsVencedor; timePerdedor.SaldoDeGols = timePerdedor.GolsFeitos - timePerdedor.GolsSofridos; } else { var timeA = dBTimes.Times.Find(x => x.ID == partida.TimeA.ID); var timeB = dBTimes.Times.Find(x => x.ID == partida.TimeB.ID); timeA.Empates++; timeB.Empates++; timeA.Pontos++; timeB.Pontos++; timeA.GolsFeitos += partida.GolsTimeA; timeA.GolsSofridos += partida.GolsTimeB; timeB.GolsFeitos += partida.GolsTimeB; timeB.GolsSofridos += partida.GolsTimeA; } } rodada.FoiJogada = true; DBManager.Serialize(dBTimes); DBManager.Serialize(dBPartidas); DBManager.Serialize(dBRodadas); }
/* TODO: * Inserir de forma aleatória, 4 árbitros por partida; --FEITO * Randomizar quantidade de gols na partida e determinar o time vencedor de acordo com o número de gols feito; * Randomizar 1 jogador do time por cada gol feito; * Preencher o estadio das partidas de acordo com as restrições; --FEITO * */ public void CriarCampeonato() { dBRodadas.Rodadas.Clear(); dBPartidas.Partidas.Clear(); dBRodadas.UltimoID = 0; dBPartidas.UltimoID = 0; var rodadas = new List <LayoutRodadas>(19); var partidas = new List <LayoutPartidas>(190); var times = _inst.dBTimes.Times; var timesA = times.GetRange(0, 10); var timesB = times.GetRange(10, 10); for (int i = 0; i < 19; i++) { EstadiosDisponiveis = new List <LayoutEstadios>(); ArbitrosDisponiveis = new List <LayoutArbitros>(); for (int aux = 0; aux < _inst.dBEstadios.Estadios.Count; aux++) { EstadiosDisponiveis.Add(_inst.dBEstadios.Estadios[aux]); } for (int aux = 0; aux < _inst.dBArbitros.Arbitros.Count; aux++) { ArbitrosDisponiveis.Add(_inst.dBArbitros.Arbitros[aux]); } var rodada = new LayoutRodadas(); for (int j = 0; j < 10; j++) { rodada.Rodada = i + 1; var partida = new LayoutPartidas { ID = ++dBPartidas.UltimoID, TimeA = timesA[j], TimeB = timesB[j], Arbitros = GetArbitros(), Estadio = GetEstadio(timesA[j], timesB[j]) }; dBPartidas.Partidas.Add(partida); rodada.Partidas.Add(partida); } var antigoTimesA = new List <LayoutTimes>(); var antigoTimesB = new List <LayoutTimes>(); for (int j = 0; j < 10; j++) { antigoTimesA.Add(timesA[j]); antigoTimesB.Add(timesB[j]); } timesA[1] = timesB[0]; timesB[9] = timesA[9]; for (int k = 2; k < 10; k++) { timesA[k] = antigoTimesA[k - 1]; } for (int k = 0; k < 9; k++) { timesB[k] = antigoTimesB[k + 1]; } rodada.ID = ++dBRodadas.UltimoID; rodadas.Add(rodada); dBRodadas.Rodadas.Add(rodada); } DBManager.Serialize(dBRodadas); DBManager.Serialize(dBPartidas); }