Beispiel #1
0
        public SuitedStatus <BoardRangeGridStatusEnum> TestSuitedGrid(RangeGrid grid)
        {
            if (grid.Category != GridCategoryEnum.Suited)
            {
                throw new InvalidOperationException($"{grid.Category}");
            }
            var result = new SuitedStatus <BoardRangeGridStatusEnum>();
            var suits  = new SuitEnum[] { SuitEnum.Heart, SuitEnum.Spade, SuitEnum.Diamond, SuitEnum.Club };

            foreach (var suit in suits)
            {
                if (!(grid.Card1AvaliableSuits.Contains(suit) && grid.Card2AvaliableSuits.Contains(suit)))
                {
                    switch (suit)
                    {
                    case SuitEnum.Heart:
                        result.HeartStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;

                    case SuitEnum.Spade:
                        result.SpadeStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;

                    case SuitEnum.Diamond:
                        result.DiamondStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;

                    case SuitEnum.Club:
                        result.ClubStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;
                    }
                    continue;
                }

                var hole1 = new Card(suit, grid.HighRank);
                var hole2 = new Card(suit, grid.LowRank);

                var outcome = TestGridAgainstBoard(hole1, hole2).Item1;
                switch (suit)
                {
                case SuitEnum.Heart:
                    result.HeartStatus = TranslateOutcomeToGridStatus(outcome);
                    break;

                case SuitEnum.Spade:
                    result.SpadeStatus = TranslateOutcomeToGridStatus(outcome);
                    break;

                case SuitEnum.Diamond:
                    result.DiamondStatus = TranslateOutcomeToGridStatus(outcome);
                    break;

                case SuitEnum.Club:
                    result.ClubStatus = TranslateOutcomeToGridStatus(outcome);
                    break;
                }
            }

            return(result);
        }
Beispiel #2
0
        public SuitedStatus <GridHitNewRoundResultEnum> TestSuitedGrid(RangeGrid grid)
        {
            if (grid.Category != GridCategoryEnum.Suited)
            {
                throw new InvalidOperationException($"{grid.Category}");
            }
            var result = new SuitedStatus <GridHitNewRoundResultEnum>();
            var suits  = grid.Card1AvaliableSuits.Intersect(grid.Card2AvaliableSuits);

            foreach (var suit in suits)
            {
                if (!(grid.Card1AvaliableSuits.Contains(suit) && grid.Card2AvaliableSuits.Contains(suit)))
                {
                    switch (suit)
                    {
                    case SuitEnum.Heart:
                        result.HeartStatus = GridHitNewRoundResultEnum.Unavailable;
                        break;

                    case SuitEnum.Spade:
                        result.SpadeStatus = GridHitNewRoundResultEnum.Unavailable;
                        break;

                    case SuitEnum.Diamond:
                        result.DiamondStatus = GridHitNewRoundResultEnum.Unavailable;
                        break;

                    case SuitEnum.Club:
                        result.ClubStatus = GridHitNewRoundResultEnum.Unavailable;
                        break;
                    }
                    continue;
                }

                var hole1 = new Card(suit, grid.HighRank);
                var hole2 = new Card(suit, grid.LowRank);

                var lastRoundTuple    = _previousRoundTest(hole1, hole2);
                var currentRoundTuple = _currentRoundTest(hole1, hole2);

                switch (suit)
                {
                case SuitEnum.Heart:
                    result.HeartStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2);
                    break;

                case SuitEnum.Spade:
                    result.SpadeStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2);
                    break;

                case SuitEnum.Diamond:
                    result.DiamondStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2);
                    break;

                case SuitEnum.Club:
                    result.ClubStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2);
                    break;
                }
            }

            return(result);
        }