示例#1
0
        public void GuanyaCarta(int costMaxim, bool vaADescartadas = true, Type tipusCarta = null)
        {
            //demana al jugador actual que trii una carta del pilo de subministraments amb un cost maxim
            List <CartaDominion>       cartesQuePotAgafar = new List <CartaDominion>();
            KeyValuePair <string, int> aux;
            CartaDominion carta;

            for (int i = 0; i < subministraments.Count; i++)
            {
                aux = subministraments[i];
                if (aux.Value > 0)
                {
                    carta = CartaDominion.DonamCarta(aux.Key);
                    if (tipusCarta == null || tipusCarta.IsAssignableFrom(carta.GetType()))
                    {
                        if (carta.Cost <= costMaxim)
                        {
                            cartesQuePotAgafar.Add(carta);
                        }
                    }
                }
            }
            carta = TriaCartes(JugadorActual, "Has guanyat una carta tria una", 1, 1, cartesQuePotAgafar)[0];
            subministraments[carta.NomCarta]--;
            if (vaADescartadas)
            {
                JugadorActual.Descartades.Push(carta);
            }
            else
            {
                JugadorActual.Ma.Add(carta);
            }
        }
示例#2
0
        public override void ExecutaAccio(Partida partida)
        {
            CartaDominion[]       cartes = new CartaDominion[2];
            IList <CartaDominion> cartesTresor;
            List <CartaDominion>  cartesTriades = new List <CartaDominion>();
            CartaDominion         cartaTriada;
            IList <CartaDominion> cartesEliminades;

            for (int i = 0; i < partida.Jugadors.Length; i++)
            {
                if (partida.Jugadors[i].Posicio != partida.JugadorActual.Posicio && !partida.Jugadors[i].Protegit(partida))
                {
                    cartaTriada = null;
                    cartes[0]   = partida.Jugadors[i].DonamCartaMazo();
                    if (cartes[0] != null)
                    {
                        cartes[1] = partida.Jugadors[i].DonamCartaMazo();
                        partida.Jugadors[i].CartesMostrades.Add(cartes[0]);
                        if (cartes[1] != null)
                        {
                            partida.Jugadors[i].CartesMostrades.Add(cartes[1]);
                        }
                    }
                    cartesTresor = cartes.Filtra((c) => c is CartaTresor);
                    if (cartesTresor.Count > 1)
                    {
                        cartaTriada = partida.TriaCartes(partida.JugadorActual, "Tria una carta per quedartela o eliminarla", 1, 1, cartesTresor)[0];
                    }
                    else if (cartesTresor.Count == 1)
                    {
                        cartaTriada = cartesTresor[0];
                    }



                    if (cartaTriada != null)
                    {
                        partida.Jugadors[i].CartesMostrades.Remove(cartaTriada);
                        cartesTriades.Add(cartaTriada);
                    }

                    if (partida.Jugadors[i].CartesMostrades.Count > 0)
                    {
                        partida.Jugadors[i].Descartades.Add(partida.Jugadors[i].CartesMostrades[0]);
                        partida.Jugadors[i].CartesMostrades.Clear();
                    }
                }
            }

            cartesEliminades = partida.TriaCartes(partida.JugadorActual, "Elimina les cartes que no vulguis", 0, cartesTriades.Count);
            cartesTriades.RemoveRange(cartesEliminades);
            partida.JugadorActual.Ma.AddRange(cartesTriades);
            partida.EliminaCarta(cartesEliminades);
        }
示例#3
0
        public bool Roba()
        {
            CartaDominion carta = DonamCartaMazo();

            if (carta != null)
            {
                Ma.Add(carta);
            }

            return(carta != null);
        }
示例#4
0
        public override void ExecutaAccio(Partida partida)
        {
            IList <CartaDominion> cartes = new CartaDominion[5];
            CartaDominion         cartaDescartada;

            for (int i = 0; i < cartes.Count; i++)
            {
                cartes[i] = partida.JugadorActual.DonamCartaMazo();
            }
            cartes          = cartes.Filtra((c) => c != null);
            cartaDescartada = partida.TriaCartes(partida.JugadorEsquerra, string.Format("Tria una carta de {0} per descartarla, les altres aniran a la seva má", partida.JugadorActual.Nom), 1, 1, cartes)[0];
            partida.JugadorActual.Ma.AddRange(cartes.Filtra((c) => c != cartaDescartada));
            partida.JugadorActual.Descartades.Add(cartaDescartada);
        }
示例#5
0
        public CartaDominion DonamCartaMazo()
        {
            CartaDominion carta = null;

            if (Mazo.Count == 0)
            {
                PosaCartesDescartadesAlMazo();
            }

            if (Mazo.Count > 0)
            {
                carta = Mazo.Pop();
            }

            return(carta);
        }
示例#6
0
 public void EliminaCarta(CartaDominion carta)
 {
     //posa la carta al pilo de eliminades
     Eliminades.Push(carta);
 }