예제 #1
0
 public override void ExecutaAccio(Partida partida)
 {
     for (int i = 0; i < partida.Jugadors.Length; i++)
     {
         if (partida.Jugadors[i].Posicio != partida.JugadorActual.Posicio)
         {
             partida.Jugadors[i].Roba();
         }
     }
 }
예제 #2
0
        public bool Protegit(Partida partida)
        {
            Fossat fossat   = Ma.Filtra((c) => c is Fossat).FirstOrDefault() as Fossat;
            bool   protegit = fossat != null;

            if (protegit)
            {
                protegit = fossat.Reaccio(partida, this);
            }
            return(protegit);
        }
예제 #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)
        {
            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);
        }
예제 #5
0
        public override void ExecutaAccio(Partida partida)
        {
            const int SI = 0;

            string[] opcions = { "Si", "No" };
            if (partida.PreguntaAlJugador(partida.JugadorActual, "Vols descartar el mazo?", opcions) == SI)
            {
                partida.JugadorActual.Descartades.AddRange(partida.JugadorActual.Mazo);
                partida.JugadorActual.Mazo.Clear();
                partida.JugadorActual.PosaCartesDescartadesAlMazo();
            }
        }
예제 #6
0
 public override void ExecutaAccio(Partida partida)
 {
     for (int i = 0; i < partida.Jugadors.Length; i++)
     {
         if (partida.Jugadors[i].Posicio != partida.JugadorActual.Posicio && !partida.Jugadors[i].Protegit(partida))
         {
             if (partida.AgafaCarta(typeof(Malediccio)))
             {
                 partida.Jugadors[i].Descartades.Add(new Malediccio());
             }
         }
     }
 }
예제 #7
0
        public bool Reaccio(Partida partida, Jugador jugador)
        {
            bool quiereEnseñarla;

            quiereEnseñarla = partida.PreguntaAlJugador(jugador, "Vols protegirte de l'atac?", "Si", "No") == 0;
            if (quiereEnseñarla)
            {
                jugador.CartesMostrades.Add(partida.JugadorReactiu.Ma.Filtra((c) => c is Fossat)[0]);
                partida.PreguntaAlJugador(partida.JugadorActual, string.Format("{0} s'ha protegit", partida.JugadorReactiu.Nom), "Ok");
                jugador.CartesMostrades.Clear();
            }
            return(quiereEnseñarla);
        }
예제 #8
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);
        }
예제 #9
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;
                }
            }
        }
예제 #10
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));
                }
            }
        }
예제 #11
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]);
            }
        }
예제 #12
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]);
                        }
                    }
                }
            }
        }
예제 #13
0
        public override void ExecutaAccio(Partida partida)
        {
            bool tornarAlMazo;

            for (int i = 0; i < partida.Jugadors.Length; i++)
            {
                if (!partida.Jugadors[i].Protegit(partida))
                {
                    partida.Jugadors[i].EnseñaCartesMazo(1);
                    tornarAlMazo = partida.PreguntaAlJugador(partida.JugadorActual, string.Format("Descartar o volver a su sitio la carta de {0}", partida.Jugadors[i]), "Descartar", "Tornar al Mazo") == 1;
                    if (tornarAlMazo)
                    {
                        partida.Jugadors[i].Mazo.Push(partida.Jugadors[i].CartesMostrades.Pop());
                    }
                    else
                    {
                        partida.Jugadors[i].Descartades.Push(partida.Jugadors[i].CartesMostrades.Pop());
                    }
                }
            }
        }
예제 #14
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);
                    }
                }
            }
        }
예제 #15
0
        public override void ExecutaAccio(Partida partida)
        {
            const int     TOTAL = 2;
            CartaDominion aux;
            int           numCartesTrobades = 0;

            //voy cogiendo cartas del mazo hasta que descubra dos cartas tesoro las demás se van a descartadas.
            //si acabo todas las cartas es que no hay más de tesoro disponibles entonces solo cojo la encontrada o ninguna.
            for (int i = 0, iF = partida.JugadorActual.Mazo.Count + partida.JugadorActual.Descartades.Count; i < iF && numCartesTrobades < TOTAL; i++)
            {
                aux = partida.JugadorActual.DonamCartaMazo();
                if (aux.EsCartaDeTresor)
                {
                    numCartesTrobades++;
                    partida.JugadorActual.Ma.Add(aux);
                }
                else
                {
                    partida.JugadorActual.Descartades.Push(aux);
                }
            }
        }
예제 #16
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);
            }
        }
예제 #17
0
 public virtual void ExecutaAccio(Partida partida)
 {
     /*Roba del piló de cartes per robar tantes cartes como indiqui la i les afegeix
      * a la del jugador actual Després executa l'acció específica de la carta. I finalment executa el final de fase.*/
 }
예제 #18
0
 public override void ExecutaAccio(Partida partida)
 {
     partida.GuanyaCarta(4);
 }
예제 #19
0
 public override void ExecutaAccio(Partida partida)
 {
     partida.EliminaCarta(this);
     partida.GuanyaCarta(5);
 }
예제 #20
0
 public override void ExecutaAccio(Partida partida)
 {
     partida.EliminaCarta(partida.TriaCartes(partida.JugadorActual, "Elimina fins a 4 cartes", 0, 4));
 }