示例#1
0
        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);
        }
示例#2
0
        /* 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);
        }