コード例 #1
0
        private PlayerAction GetAnnounces(DecisionMakingContext context)
        {
            var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards);
            if (context.TurnContext.IsFirstPlayerTurn &&
                context.TurnContext.CardsLeftInDeck != 12)
            {
                var announceCards = availableCardsFromHand
                                        .Where(c => c.Type == CardType.King || c.Type == CardType.Queen)
                                        .GroupBy(c => c.Suit)
                                        .Where(g => g.Count() > 1)
                                        .ToList();

                var fortyAnnounce = announceCards
                    .Where(g => g.FirstOrDefault().Suit == context.TurnContext.TrumpCard.Suit)
                    .Select(suit => suit.First(card => card.Type == CardType.Queen))
                    .FirstOrDefault();

                if (fortyAnnounce != null)
                {
                    // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Forty]++;
                    return PlayerAction.PlayCard(fortyAnnounce);
                }
                else if (announceCards.Count > 0)
                {
                    // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Twenty]++;
                    return PlayerAction.PlayCard(announceCards.FirstOrDefault().FirstOrDefault(x => x.Type == CardType.Queen));
                }
            }

            return null;
        }
コード例 #2
0
        private PlayerAction GetAnnounces(DecisionMakingContext context)
        {
            var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards);

            if (context.TurnContext.IsFirstPlayerTurn &&
                context.TurnContext.CardsLeftInDeck != 12)
            {
                var announceCards = availableCardsFromHand
                                    .Where(c => c.Type == CardType.King || c.Type == CardType.Queen)
                                    .GroupBy(c => c.Suit)
                                    .Where(g => g.Count() > 1)
                                    .ToList();

                var fortyAnnounce = announceCards
                                    .Where(g => g.FirstOrDefault().Suit == context.TurnContext.TrumpCard.Suit)
                                    .Select(suit => suit.First(card => card.Type == CardType.Queen))
                                    .FirstOrDefault();

                if (fortyAnnounce != null)
                {
                    // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Forty]++;
                    return(PlayerAction.PlayCard(fortyAnnounce));
                }
                else if (announceCards.Count > 0)
                {
                    // SummaryReport.AnnounceStatistics[Santase.Logic.Announce.Twenty]++;
                    return(PlayerAction.PlayCard(announceCards.FirstOrDefault().FirstOrDefault(x => x.Type == CardType.Queen)));
                }
            }

            return(null);
        }
コード例 #3
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            if (this.IsMatch(context))
            {
                return this.EndGameTurn(context.TurnContext, context.Tracker, context.MyCards);
            }

            return this.Next.Handle(context);
        }
コード例 #4
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            if (context.Validator.IsValid(PlayerAction.ChangeTrump(), context.TurnContext, context.MyCards))
            {
                return PlayerAction.ChangeTrump();
            }

            return this.Next.Handle(context);
        }
コード例 #5
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            if (context.Validator.IsValid(PlayerAction.ChangeTrump(), context.TurnContext, context.MyCards))
            {
                return(PlayerAction.ChangeTrump());
            }

            return(this.Next.Handle(context));
        }
コード例 #6
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            if (this.IsMatch(context))
            {
                return(this.EndGameTurn(context.TurnContext, context.Tracker, context.MyCards));
            }

            return(this.Next.Handle(context));
        }
コード例 #7
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            this.announce = this.GetAnnounces(context);
            if (this.IsMatch(context))
            {
                return(this.announce);
            }

            return(this.Next.Handle(context));
        }
コード例 #8
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            this.announce = this.GetAnnounces(context);
            if (this.IsMatch(context))
            {
                return this.announce;
            }

            return this.Next.Handle(context);
        }
コード例 #9
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards);

            if (this.IsMatch(context))
            {
                var cardByChoser = context.ActionChoser.CardToPlay(context.TurnContext, availableCardsFromHand);

                return PlayerAction.PlayCard(cardByChoser);
            }

            return this.Next.Handle(context);
        }
コード例 #10
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards);

            if (this.IsMatch(context))
            {
                var cardByChoser = context.ActionChoser.CardToPlay(context.TurnContext, availableCardsFromHand);

                return(PlayerAction.PlayCard(cardByChoser));
            }

            return(this.Next.Handle(context));
        }
コード例 #11
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            if (this.IsMatch(context))
            {
                PlayerAction cardToPlay;

                var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards);

                var condition = context.CardChoser.CardToPlayAndCloseLogic(context.TurnContext, availableCardsFromHand);

                if (context.TurnContext.State.CanClose && context.MyCards.Count(c => c.Suit == context.TurnContext.TrumpCard.Suit) > ShouldCloseTrumpCount)
                {
                    return(PlayerAction.CloseGame());
                }

                cardToPlay = PlayerAction.PlayCard(condition.Value);

                return(cardToPlay);
            }

            return(this.Next.Handle(context));
        }
コード例 #12
0
        public PlayerAction Handle(DecisionMakingContext context)
        {
            if (this.IsMatch(context))
            {
                PlayerAction cardToPlay;

                var availableCardsFromHand = context.Validator.GetPossibleCardsToPlay(context.TurnContext, context.MyCards);

                var condition = context.CardChoser.CardToPlayAndCloseLogic(context.TurnContext, availableCardsFromHand);

                if (context.TurnContext.State.CanClose && context.MyCards.Count(c => c.Suit == context.TurnContext.TrumpCard.Suit) > ShouldCloseTrumpCount)
                {
                    return PlayerAction.CloseGame();
                }

                cardToPlay = PlayerAction.PlayCard(condition.Value);

                return cardToPlay;
            }

            return this.Next.Handle(context);
        }
コード例 #13
0
 public bool IsMatch(DecisionMakingContext ctx)
 {
     return(true);
 }
コード例 #14
0
 public bool IsMatch(DecisionMakingContext ctx)
 {
     return !ctx.TurnContext.IsFirstPlayerTurn;
 }
コード例 #15
0
 public bool IsMatch(DecisionMakingContext ctx)
 {
     return(ctx.TurnContext.CardsLeftInDeck == 0);
 }
コード例 #16
0
 public bool IsMatch(DecisionMakingContext context)
 {
     return(context.TurnContext.CardsLeftInDeck > 2 && context.TurnContext.IsFirstPlayerTurn);
 }
コード例 #17
0
 public bool IsMatch(DecisionMakingContext ctx)
 {
     return(!ctx.TurnContext.IsFirstPlayerTurn);
 }
コード例 #18
0
 public bool IsMatch(DecisionMakingContext context)
 {
     return(this.announce != null);
 }
コード例 #19
0
 public bool IsMatch(DecisionMakingContext ctx)
 {
     return ctx.TurnContext.CardsLeftInDeck == 0;
 }
コード例 #20
0
 public bool IsMatch(DecisionMakingContext ctx)
 {
     return true;
 }
コード例 #21
0
 public bool IsMatch(DecisionMakingContext context)
 {
     return context.TurnContext.CardsLeftInDeck > 2 && context.TurnContext.IsFirstPlayerTurn;
 }
コード例 #22
0
 public bool IsMatch(DecisionMakingContext context)
 {
     return this.announce != null;
 }