Esempio n. 1
0
        public virtual void Play(Board board)
        {
            bool hasPlayedCard;
            hasPlayedCard = PlayReserveCardToBuild(board) ||
                PlayCardFromHandToBuild(board) ||
                PlayFromDiscardPileToBuild(board);

            if (!hasPlayedCard && board.GetHand(this).Count != 0 && board.Winner == null)
                Discard(board);
        }
Esempio n. 2
0
        public virtual void Play(Board board)
        {
            bool hasPlayedCard;

            hasPlayedCard = PlayReserveCardToBuild(board) ||
                            PlayCardFromHandToBuild(board) ||
                            PlayFromDiscardPileToBuild(board);

            if (!hasPlayedCard && board.GetHand(this).Count != 0 && board.Winner == null)
            {
                Discard(board);
            }
        }
Esempio n. 3
0
 private bool PlayCardFromHandToBuild(Board board)
 {
     foreach (Pile pile in board.BuildPiles)
     {
         Pile hand = board.GetHand(this);
         foreach (Card card in hand)
         {
             int playedValue;
             if (pile.IsLegalPlay(card, pile, out playedValue))
             {
                 card.PlayedValue = playedValue;
                 board.DoPlay(new Play(hand, card, pile));
                 return true;
             }
         }
     }
     return false;
 }
Esempio n. 4
0
 private bool PlayCardFromHandToBuild(Board board)
 {
     foreach (Pile pile in board.BuildPiles)
     {
         Pile hand = board.GetHand(this);
         foreach (Card card in hand)
         {
             int playedValue;
             if (pile.IsLegalPlay(card, pile, out playedValue))
             {
                 card.PlayedValue = playedValue;
                 board.DoPlay(new Play(hand, card, pile));
                 return(true);
             }
         }
     }
     return(false);
 }
Esempio n. 5
0
        private static void AssertFullDeck(Board board)
        {
            Histogram histogram = new Histogram();

            histogram.AddPile(board.DrawPile);

            foreach (IPlayer player in board.Players)
            {
                histogram.AddPile(board.GetReservePile(player));
                histogram.AddPile(board.GetHand(player));
                foreach (Pile pile in board.GetDiscardPiles(player))
                    histogram.AddPile(pile);
            }

            foreach (Pile pile in board.BuildPiles)
                histogram.AddPile(pile);

            histogram.AssertFullDeck();
        }
Esempio n. 6
0
 protected void Discard(Board board)
 {
     // Select first card in hand and discard to random pile
     board.DoPlay(new Play(board.GetHand(this), board.GetDiscardPiles(this)[Utility.Random().Next(Board.NumDiscardPiles)]));
 }
Esempio n. 7
0
 protected void Discard(Board board)
 {
     // Select first card in hand and discard to random pile
     board.DoPlay(new Play(board.GetHand(this), board.GetDiscardPiles(this)[Utility.Random().Next(Board.NumDiscardPiles)]));
 }