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); } }
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); }
public bool Roba() { CartaDominion carta = DonamCartaMazo(); if (carta != null) { Ma.Add(carta); } return(carta != null); }
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); }
public CartaDominion DonamCartaMazo() { CartaDominion carta = null; if (Mazo.Count == 0) { PosaCartesDescartadesAlMazo(); } if (Mazo.Count > 0) { carta = Mazo.Pop(); } return(carta); }
public void EliminaCarta(CartaDominion carta) { //posa la carta al pilo de eliminades Eliminades.Push(carta); }