public override int Rate()
        {
            // Final actions
            if (OpHeroHp < 1)
            {
                return(Int32.MaxValue);
            }
            if (HeroHp < 1)
            {
                return(Int32.MinValue);
            }
            int result = 0;

            result += HeroHp * Values[0];
            result -= OpHeroHp * Values[1];
            result += BoardZone.Count() * Values[2];
            result -= OpBoardZone.Count() * Values[3];
            result += MinionTotAtk * Values[4];
            result -= OpMinionTotAtk * Values[5];
            result += MinionTotHealth * Values[6];
            result -= OpMinionTotHealth * Values[7];
            result += MinionTotHealthTaunt * Values[8];
            result -= OpMinionTotHealthTaunt * Values[9];

            return(result);
        }
        public override int Rate()
        {
            if (OpHeroHp < 1)
            {
                return(int.MaxValue);
            }
            if (HeroHp < 1)
            {
                return(int.MinValue);
            }

            float score = 0;

            score += HeroHp - OpHeroHp;
            score += BoardZone.Count() - OpBoardZone.Count();
            score += HeroAtk - OpHeroAtk;

            foreach (Minion Minion in BoardZone)
            {
                score += MinionScore(Minion, true);
            }

            foreach (Minion Minion in OpBoardZone)
            {
                score -= MinionScore(Minion, false);
            }

            return((int)Math.Round(score));
        }