示例#1
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);
        }
示例#2
0
        public override void ExecutaAccio(Partida partida)
        {
            IList <CartaDominion> cartes;

            if (partida.AgafaCarta(typeof(Plata)))
            {
                partida.JugadorActual.Mazo.Push(new Plata());
            }
            for (int i = 0; i < partida.Jugadors.Length; i++)
            {
                if (partida.Jugadors[i].Posicio != partida.JugadorActual.Posicio && !partida.Jugadors[i].Protegit(partida))
                {
                    cartes = partida.Jugadors[i].Ma.Filtra((carta) => carta.EsCartaDeVictoria);
                    if (cartes.Count > 0)
                    {
                        //si te una carta victoria demano que trii quina enseña
                        cartes = partida.TriaCartes(partida.Jugadors[i], "Tria una carta per mostrar", 1, 1, cartes);
                        partida.Jugadors[i].CartesMostrades.Add(cartes[0]);
                        partida.Jugadors[i].Ma.Remove(cartes[0]);
                    }
                    else
                    {
                        //si no en te enseña totes
                        partida.Jugadors[i].CartesMostrades.AddRange(partida.Jugadors[i].Ma);
                        partida.Jugadors[i].Ma.Clear();
                    }
                }
            }
            partida.PreguntaAlJugador(partida.JugadorActual, "Mira les cartes.", "Ja está");
            for (int i = 0; i < partida.Jugadors.Length; i++)
            {
                partida.Jugadors[i].Ma.AddRange(partida.Jugadors[i].CartesMostrades);
                partida.Jugadors[i].CartesMostrades.Clear();
            }
        }
示例#3
0
        public override void ExecutaAccio(Partida partida)
        {
            IList <CartaDominion> cartesDescartades = partida.TriaCartes(partida.JugadorActual, "Descarta totes les cartes que vulguis i roba el mateix nombre", 0, partida.JugadorActual.Ma.Count);

            partida.JugadorActual.Descartades.AddRange(cartesDescartades);
            for (int i = 0; i < cartesDescartades.Count; i++)
            {
                partida.JugadorActual.Ma.Remove(cartesDescartades[i]);
                partida.JugadorActual.Roba();
            }
        }
示例#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 override void ExecutaAccio(Partida partida)
        {
            IList <CartaDominion> cartesTresor = partida.JugadorActual.Ma.Filtra((c) => c is Coure);

            if (cartesTresor.Count > 0)
            {
                cartesTresor = partida.TriaCartes(partida.JugadorActual, "Elimina una carta si ho fas tindràs 3 monedes extra", 0, 1);
                if (cartesTresor.Count > 0)
                {
                    partida.JugadorActual.Ma.RemoveRange(cartesTresor);
                    partida.EliminaCarta(cartesTresor);
                    partida.DinersExtra += 3;
                }
            }
        }
示例#6
0
        public override void ExecutaAccio(Partida partida)
        {
            IList <CartaDominion> cartesTresor = partida.JugadorActual.Ma.Filtra((c) => c is CartaTresor);

            if (cartesTresor.Count > 0)
            {
                cartesTresor = partida.TriaCartes(partida.JugadorActual, "Tria una carta per eliminar, a canvi guanyaràs una que costi 3 més", 0, 1);
                if (cartesTresor.Count > 0)
                {
                    partida.EliminaCarta(cartesTresor);
                    partida.JugadorActual.Ma.RemoveRange(cartesTresor);
                    partida.GuanyaCarta(cartesTresor[0].Cost + 3, false, typeof(CartaTresor));
                }
            }
        }
示例#7
0
        public override void ExecutaAccio(Partida partida)
        {
            IList <CartaDominion> cartaARemodelar = null;

            if (partida.JugadorActual.Ma.Count > 1)
            {
                cartaARemodelar = partida.TriaCartes(partida.JugadorActual, "Elimina una carta i guanya una que costi 2 més que la eliminada.", 1, 1);
            }
            else if (partida.JugadorActual.Ma.Count == 1)
            {
                cartaARemodelar = partida.JugadorActual.Ma;
            }

            if (partida.JugadorActual.Ma.Count > 0)
            {
                partida.GuanyaCarta(cartaARemodelar[0].Cost + 2);
                partida.EliminaCarta(cartaARemodelar);
                partida.JugadorActual.Ma.Remove(cartaARemodelar[0]);
            }
        }
示例#8
0
        public override void ExecutaAccio(Partida partida)
        {
            IList <CartaDominion> descartades;

            for (int i = 0; i < partida.Jugadors.Length; i++)
            {
                if (partida.Jugadors[i].Posicio != partida.JugadorActual.Posicio)
                {
                    if (!partida.Jugadors[i].Protegit(partida))
                    {
                        descartades = partida.TriaCartes(partida.Jugadors[i], "Tria les cartes a descartar", partida.Jugadors[i].Ma.Count - 3, partida.Jugadors[i].Ma.Count - 3);
                        partida.Jugadors[i].Descartades.AddRange(descartades);
                        for (int j = 0; j < descartades.Count; j++)
                        {
                            partida.Jugadors[i].Ma.Remove(descartades[j]);
                        }
                    }
                }
            }
        }
示例#9
0
        public override void ExecutaAccio(Partida partida)
        {
            CartaDominion carta;

            for (int i = 0, iF = partida.JugadorActual.Mazo.Count + partida.JugadorActual.Descartades.Count; i < iF && partida.JugadorActual.Ma.Count < 7; i++)
            {
                //si es accion pregunto si la quiere sino la descarto
                carta = partida.JugadorActual.DonamCartaMazo();
                if (carta != null)
                {
                    if (!carta.EsCartaDeAccio || partida.TriaCartes(partida.JugadorActual, "La vols?", 1, 1, new CartaDominion[] { carta }).Length > 0)
                    {
                        partida.JugadorActual.Ma.Add(carta);
                    }
                    else if (carta.EsCartaDeAccio)
                    {
                        partida.JugadorActual.Descartades.Push(carta);
                    }
                }
            }
        }
示例#10
0
        public override void ExecutaAccio(Partida partida)
        {
            CartaAccio            carta;
            IList <CartaDominion> cartesAccio = partida.JugadorActual.Ma.Filtra((c) => c is CartaAccio);

            if (cartesAccio.Count > 0)
            {
                if (cartesAccio.Count > 1)
                {
                    carta = (CartaAccio)partida.TriaCartes(partida.JugadorActual, "Tria la carta a repetir la acció", 1, 1, cartesAccio)[0];
                }
                else
                {
                    carta = cartesAccio[0] as CartaAccio;
                }
                //La carta triada ha d'anar amb les cartes que juga la partida perque sino podria utilitzar la sala del tro moltes vegades tenint només dues cartes
                //s'ha de mirar que faci l'acció correctament...
                partida.JugadorActual.Ma.Remove(carta);
                partida.Jugada.Add(carta);
                carta.ExecutaAccio(partida);
                carta.ExecutaAccio(partida);
            }
        }
示例#11
0
 public override void ExecutaAccio(Partida partida)
 {
     partida.EliminaCarta(partida.TriaCartes(partida.JugadorActual, "Elimina fins a 4 cartes", 0, 4));
 }