Exemple #1
0
        public ReturnStatus MoveCardToDefenseField(int cardId)
        {
            Carta card = this.AtackField.FirstOrDefault(c => c.Id == cardId);

            if (card == null)
            {
                return(new ReturnStatus(EnumResult.Error, "Invalid card"));
            }

            if (!card.CanBeMoved)
            {
                return(new ReturnStatus(EnumResult.Error, "Card can't be moved"));
            }

            this.DefenseField.Add(card);
            this.AtackField.Remove(card);

            card.CanBeMoved = false;

            return(new ReturnStatus(EnumResult.Ok));
        }
Exemple #2
0
        public ReturnStatus PutCardInField(int cardId)
        {
            Carta card = this.Hands.FirstOrDefault(c => c.Id == cardId);

            if (card == null)
            {
                return(new ReturnStatus(EnumResult.Error, "Invalid Card"));
            }

            if (this.ManaCurrent < card.Custo)
            {
                return(new ReturnStatus(EnumResult.Error, "Insuficcient Mana"));
            }

            this.DefenseField.Add(card);
            this.Hands.Remove(card);

            this.ManaCurrent = this.ManaCurrent - card.Custo;

            card.CanBeMoved = false;

            return(new ReturnStatus(EnumResult.Ok));
        }
Exemple #3
0
 public BattleFightResult(Carta Atacker, List <Carta> Defenders, int PlayerLifeDamage)
 {
     this.Atacker          = Atacker;
     this.Defender         = Defenders;
     this.PlayerLifeDamage = PlayerLifeDamage;
 }
Exemple #4
0
 public BattleFight(Carta AttackerCard, List <Carta> DefenderCards)
 {
     this.Attacker  = AttackerCard;
     this.Defenders = DefenderCards;
 }
Exemple #5
0
 public BattleFightResult(Carta Atacker, List<Carta> Defenders, int PlayerLifeDamage)
 {
     this.Atacker = Atacker;
     this.Defender = Defenders;
     this.PlayerLifeDamage = PlayerLifeDamage;
 }
Exemple #6
0
 public BattleFight(Carta AttackerCard, List<Carta> DefenderCards)
 {
     this.Attacker = AttackerCard;
     this.Defenders = DefenderCards;
 }
Exemple #7
0
        public List <Carta> PrepareAttack()
        {
            List <Carta> Attackers  = new List <Carta>();
            var          AllMyCards = this.Player.AtackField;

            AllMyCards.AddRange(this.Player.DefenseField);
            var minimunSafeLife = 0;

            try
            {
                this.Opponent.DefenseField.Max(x => x.Ataque);
            }
            catch
            {
                minimunSafeLife = 0;
            }
            if (HasLessCardsThanOpponentInField())
            {
                AllMyCards.ForEach(c =>
                {
                    if (c.CanBeMoved && c.Defesa >= minimunSafeLife)
                    {
                        Attackers.Add(c);
                    }
                });
                //Attackers.AddRange(this.Player.AtackField.Where(x => x.Defesa >= minimunSafeLife));
            }
            else
            {
                int neededDPower  = (Opponent.AtackField.Count() > 0)?Opponent.AtackField.Max(x => x.Defesa):0;
                int ExcessOffense = GetMyCardsCount() - GetOpponentCardsCount();

                int oponnentMaxDefense = (Opponent.DefenseField.Count() > 0)?Opponent.DefenseField.Max(x => x.Defesa) : 0;
                if (oponnentMaxDefense > neededDPower)
                {
                    neededDPower = Opponent.DefenseField.Max(x => x.Defesa);
                }

                var   DefenseSafetyGroup = AllMyCards.Where(x => x.Ataque >= neededDPower).ToList();
                Carta StrongDefender     = new Carta();
                if (DefenseSafetyGroup.Count > 0)
                {
                    StrongDefender = DefenseSafetyGroup.OrderBy(x => x.Ataque).First();
                }
                AllMyCards.ForEach(c =>
                {
                    if (c.CanBeMoved && c.Defesa >= minimunSafeLife && !c.Equals(StrongDefender))
                    {
                        Attackers.Add(c);
                    }
                });
                var OrdedByLife = AllMyCards.Where(c => !Attackers.Contains(c) && !c.Equals(StrongDefender)).OrderBy(c => c.Defesa).ToList();
                var count       = 0;
                while (AllMyCards.Count < (ExcessOffense - count))
                {
                    try
                    {
                        Attackers.Add(OrdedByLife[count]);
                        count++;
                    }
                    catch {
                        break;
                    }
                }
            }



            return(Attackers);
        }
Exemple #8
0
        public List<Carta> PrepareAttack()
        {
            List<Carta> Attackers = new List<Carta>();
            var AllMyCards = this.Player.AtackField;
            AllMyCards.AddRange(this.Player.DefenseField);
            var minimunSafeLife = 0;
            try
            {
                this.Opponent.DefenseField.Max(x => x.Ataque);
            }
            catch
            {
                minimunSafeLife = 0;
            }
            if (HasLessCardsThanOpponentInField())
            {
               

                AllMyCards.ForEach(c =>
                {
                    if (c.CanBeMoved && c.Defesa >= minimunSafeLife)
                    {
                        Attackers.Add(c);
                    }
                });
                //Attackers.AddRange(this.Player.AtackField.Where(x => x.Defesa >= minimunSafeLife));
            }
            else
            {
                int neededDPower = (Opponent.AtackField.Count() > 0)?Opponent.AtackField.Max(x => x.Defesa):0;
                int ExcessOffense = GetMyCardsCount() - GetOpponentCardsCount();

                int oponnentMaxDefense = (Opponent.DefenseField.Count() > 0)?Opponent.DefenseField.Max(x => x.Defesa) : 0;
                if (oponnentMaxDefense > neededDPower)
                    neededDPower = Opponent.DefenseField.Max(x => x.Defesa);

                var DefenseSafetyGroup = AllMyCards.Where(x => x.Ataque >= neededDPower).ToList();
                Carta StrongDefender = new Carta();
                if (DefenseSafetyGroup.Count > 0)
                {
                    StrongDefender = DefenseSafetyGroup.OrderBy(x => x.Ataque).First();
                }
                AllMyCards.ForEach(c =>
                {
                    if (c.CanBeMoved && c.Defesa >= minimunSafeLife && !c.Equals(StrongDefender))
                    {
                        Attackers.Add(c);
                    }
                });
                var OrdedByLife = AllMyCards.Where(c => !Attackers.Contains(c) && !c.Equals(StrongDefender)).OrderBy(c => c.Defesa).ToList();
                var count = 0;
                while (AllMyCards.Count < (ExcessOffense-count))
                {
                    try
                    {
                        Attackers.Add(OrdedByLife[count]);
                        count++;
                    }
                    catch {
                        break;
                    }
                }
                    
            }




            return Attackers;
        }