示例#1
0
        /// <summary>
        /// Prepara la partida per començar
        /// </summary>
        public void PartidaNova()
        {
            int[] aux = null;
            for (int i = 0; i < subministraments.Count; i++)
            {
                if (subministraments.GetKey(i) != nameof(Jardins))
                {
                    subministraments.SetValueAt(i, 10);
                }
                else
                {
                    subministraments[nameof(Jardins)] = Jugadors.Length > 2 ? 12 : 8;
                }
            }

            subministraments[nameof(Malediccio)] = Jugadors.Length == 2 ? 10 : Jugadors.Length == 3 ? 20 : 30;
            subministraments[nameof(Provincia)]  = Jugadors.Length > 2 ? 12 : 8;
            subministraments[nameof(Ducat)]      = Jugadors.Length > 2 ? 12 : 8;
            subministraments[nameof(Finca)]      = Jugadors.Length > 2 ? 12 : 8;

            subministraments[nameof(Or)]    = 30;
            subministraments[nameof(Plata)] = 40;
            subministraments[nameof(Coure)] = 60;

            for (int i = 0; i < Jugadors.Length; i++)
            {
                Jugadors[i].Reset();
                jugadorActual = i;
                for (int j = 0; j < 7; j++)
                {
                    AgafaCarta(typeof(Coure));
                }
                for (int j = 0; j < 3; j++)
                {
                    AgafaCarta(typeof(Finca));
                }
            }
            Eliminades.Clear();
            Jugada.Clear();
            DinersExtra = 0;
            if (guanyadorsPartidaAnterior.Count == 0 || guanyadorsPartidaAnterior.Count == Jugadors.Length)
            {
                jugadorActual = MiRandom.Next(Jugadors.Length);
            }
            else if (guanyadorsPartidaAnterior.Count == 1)
            {
                jugadorActual = guanyadorsPartidaAnterior[0];
                AvançaJugador();
            }
            else if (guanyadorsPartidaAnterior.Count == 3 && Jugadors.Length == 4)
            {
                jugadorActual = QuatreJugadors.Except(guanyadorsPartidaAnterior).First();
            }
            else
            {
                if (Jugadors.Length == 4)
                {
                    aux = QuatreJugadors;
                }
                else if (Jugadors.Length == 3)
                {
                    aux = TresJugadors;
                }

                aux = aux.Except(guanyadorsPartidaAnterior).ToArray();
                aux.Desordena();
                jugadorActual = aux[0];
            }
        }