예제 #1
0
 private void CheckForPlayerEndOfTurn()
 {
     if (Hands.All(h => h.Status != HandStatusTypes.InProgress))
     {
         Status = PlayerStatusTypes.Complete;
     }
 }
예제 #2
0
        public BlackJackPlayer(AvitarDto avitar, IHandIdentifierProvider handIdProvider, int handCount)
        {
            Name                = avitar.UserName ?? throw new ArgumentNullException(nameof(avitar.UserName));
            Identifier          = avitar.Id;
            this.handIdProvider = handIdProvider ?? throw new ArgumentNullException(nameof(handIdProvider));
            if (handCount < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(handCount));
            }

            AddHands(handCount);
            Status = PlayerStatusTypes.Waiting;
        }
예제 #3
0
        public void DealHands(IEnumerable <ICard> cards)
        {
            if (Status != PlayerStatusTypes.Ready)
            {
                throw new InvalidOperationException("Player Status Must be Waiting to Deal Hands.");
            }
            if (cards.Count() != hands.Count * 2)
            {
                throw new ArgumentOutOfRangeException("Card Count must equal TWO Per Hand.");
            }

            hands.ForEach(h => h.AddCardRange(cards.Take(2)));
            Status = PlayerStatusTypes.InProgress;
        }