Exemplo n.º 1
0
        private Turn.Turn GetNextTurn()
        {
            if (CurrentTurn == null)
            {
                CurrentTurn = new Turn.Turn(Players.First());
                _setAsideCards.Add(RemoveTopCard());
                foreach (var player in Players)
                {
                    var drawn   = RemoveTopCard();
                    var newHand = new Hand.Hand(drawn);
                    _hands[player.Id] = newHand;
                }
            }
            else
            {
                if (_remainingPlayers.Count <= 1 ||
                    _drawCards.Count <= 0)
                {
                    return(null);
                }
                var nextPlayerIndex = Players.ToList().IndexOf(CurrentTurn.CurrentPlayer) + 1;
                var nextPlayer      = Players.Concat(Players).Skip(nextPlayerIndex).First();
                var drawn           = Draw();
                var newHand         = _hands[nextPlayer.Id].Append(drawn);
                _hands[nextPlayer.Id] = newHand;
                CurrentTurn           = new Turn.Turn(nextPlayer);
            }

            return(CurrentTurn);
        }
Exemplo n.º 2
0
        private void DiscardAndDraw(Guid targetId)
        {
            if (_protectedPlayers.Contains(targetId))
            {
                return;
            }
            var hand = _hands[targetId];

            Discard(hand.Previous);
            var newCard = Draw();
            var newHand = new Hand.Hand(newCard);

            _hands[targetId] = newHand;
        }
Exemplo n.º 3
0
 protected AbstractPlayer(string name)
 {
     Name = name;
     Hand = new Hand.Hand();
 }