Esempio n. 1
0
 //возврат: 0 "-", 1 "NS 4o", 2 "NS 5o", 3 "NS 4A", 4 "EW 4o", 5 "EW 5o", 6 "EW 4A"
 public static int CountOners(CardsDistribution cd, CardTrump trump)
 {
     if (trump == CardTrump.NotYetDefined)
     {
         return 0; //-
     }
     // Посчитать, кому приндледат 4 туза
     else if (trump == CardTrump.NT)
     {
         int countN = 0, countS = 0, countE = 0, countW = 0;
         Quarters q;
         for (CardSuit cs = (CardSuit)0; cs < (CardSuit)4; cs++)
         {
             q = cd.Get(CardValue.Ace, cs);
             switch (q)
             {
                 case Quarters.N:
                     countN++;
                     break;
                 case Quarters.S:
                     countS++;
                     break;
                 case Quarters.E:
                     countE++;
                     break;
                 case Quarters.W:
                     countW++;
                     break;
             }
         }
         if (countN == 4 || countS == 4)
             return 3; //NS 4A
         else if (countE == 4 || countW == 4)
             return 6; //EW 4A
         else
             return 0; //-
     }
     // Посчитать, кому принадлежат козырные онеры
     else
     {
         int countN = 0, countS = 0, countE = 0, countW = 0;
         Quarters q;
         for (CardValue cv = CardValue.Ten; cv <= CardValue.Ace; cv++)
         {
             q = cd.Get(cv, SmallHelper.TrumpToSuit(trump));
             switch (q)
             {
                 case Quarters.N:
                     countN++;
                     break;
                 case Quarters.S:
                     countS++;
                     break;
                 case Quarters.E:
                     countE++;
                     break;
                 case Quarters.W:
                     countW++;
                     break;
             }
         }
         if (countN == 5 || countS == 5)
             return 2; //NS 5o
         else if (countE == 5 || countW == 5)
             return 5; //EW 5o
         else if (countN == 4 || countS == 4)
             return 1; //NS 4o
         else if (countE == 4 || countW == 4)
             return 4; //EW 4o
         else
             return 0; //-
     }
 }
Esempio n. 2
0
        public static int CountFits(CardsDistribution cd, Pairs pair, bool TenCardsIsTwoFits)
        {
            int count = 0; //кол-во фитов

            int[] sum = new int[4] { 0, 0, 0, 0 }; //сумма карт каждой масти
            Quarters q;
            for (CardSuit cs = (CardSuit)0; cs < (CardSuit)4; cs++)
            {
                for (CardValue cv = CardValue.Two; cv <= CardValue.Ace; cv++)
                {
                    q = cd.Get(cv, cs);

                    if (pair == Pairs.NS && (q == Quarters.N || q == Quarters.S) || pair == Pairs.EW && (q == Quarters.E || q == Quarters.W))
                        sum[(int)cs]++;
                }
            }

            for (int i = 0; i < 4; i++)
            {
                if (sum[i] >= 10 && TenCardsIsTwoFits)
                    count += 2;
                else if (sum[i] >= 8)
                    count++;
            }

            return count;
        }
Esempio n. 3
0
        //чей 1 фит сильнее?
        public static Pairs Whose1FitStronger(CardsDistribution cd)
        {
            int[] sumNS = new int[4] { 0, 0, 0, 0 }; //сумма карт каждой масти (для NS)
            int[] sumEW = new int[4] { 0, 0, 0, 0 }; //сумма карт каждой масти (для EW)

            Quarters q;
            for (CardSuit cs = (CardSuit)0; cs < (CardSuit)4; cs++)
            {
                for (CardValue cv = CardValue.Two; cv <= CardValue.Ace; cv++)
                {
                    q = cd.Get(cv, cs);

                    if (q == Quarters.N || q == Quarters.S)
                        sumNS[(int)cs]++;
                    else if (q == Quarters.E || q == Quarters.W)
                        sumEW[(int)cs]++;
                }
            }

            CardSuit suitNS = (CardSuit)4, suitEW = (CardSuit)4;
            for (int i = 0; i < 4; i++)
            {
                if (sumNS[i] >= 8)
                    suitNS = (CardSuit)i;
                if (sumEW[i] >= 8)
                    suitEW = (CardSuit)i;
            }

            if (SmallHelper.CompareSuits(suitNS, suitEW) == 1)
                return Pairs.NS;
            else if (SmallHelper.CompareSuits(suitNS, suitEW) == -1)
                return Pairs.EW;
            else
                return Pairs.NotDefinedYet;
        }
Esempio n. 4
0
        /*static public void GetCompensation(SimpleScore out_comp, IntData fig, ZoneSwitcher zone, PairSwitcher pair)
        {
            if (out_comp == null)
                return;

            if (fig == null || !fig.IsDefined() || zone == null || !zone.IsDefined() || pair == null || !pair.IsDefined())
            {
                out_comp.Born = false;
            }
            else
            {
                int NS_figs, EW_figs;
                if (pair.Pair == Pairs.NS)
                {
                    NS_figs = fig.Value;
                    EW_figs = 40 - fig.Value;
                }
                else
                {
                    EW_figs = fig.Value;
                    NS_figs = 40 - fig.Value;
                }
                out_comp.SetScore(Compens(NS_figs, ZoneSwitcher.IsPairInZone(Pairs.NS, zone.Zone)), Compens(EW_figs, ZoneSwitcher.IsPairInZone(Pairs.EW, zone.Zone)));
            }
        }*/
        public static int CountFigurs(CardsDistribution cd, Pairs pair)
        {
            int count = 0;
            Quarters q;
            for (CardValue cv = CardValue.Jack; cv <= CardValue.Ace; cv++)
            {
                for (CardSuit cs = (CardSuit)0; cs < (CardSuit)4; cs++)
                {
                    q = cd.Get(cv, cs);
                    if (pair == Pairs.NS && (q == Quarters.N || q == Quarters.S) || pair == Pairs.EW && (q == Quarters.E || q == Quarters.W))
                        count += (cv - CardValue.Jack + 1);
                }
            }
            return count;
        }
Esempio n. 5
0
        //у кого пиковый фит?
        public static Pairs WhoHasSpadesFit(CardsDistribution cd)
        {
            int sumNS = 0, sumEW = 0; //сумма пиковых карт

            Quarters q;
            for (CardValue cv = CardValue.Two; cv <= CardValue.Ace; cv++)
            {
                q = cd.Get(cv, CardSuit.Spades);

                if (q == Quarters.N || q == Quarters.S)
                    sumNS++;
                else if (q == Quarters.E || q == Quarters.W)
                    sumEW++;
            }

            if (sumNS >= 8)
                return Pairs.NS;
            else if (sumEW >= 8)
                return Pairs.EW;
            else
                return Pairs.NotDefinedYet;
        }