示例#1
0
        private void DealCards(List <IPlayer> players)
        {
            bool missingTrump = true;

            while (missingTrump)
            {
                IDeck Deck        = new Piquet();
                int   timesAround = Deck.Cards.Count / players.Count;

                for (int i = 0; i < timesAround; ++i)
                {
                    foreach (IPlayer player in players)
                    {
                        player.AddToHand(Deck.GetTopCard());
                    }
                }
                Blind.AddCard(Deck.GetTopCard());
                Blind.AddCard(Deck.GetTopCard());

                players.ForEach(player =>
                {
                    missingTrump &= !player.Hand.Cards.Aggregate(false, (agg, card) => agg || card.IsTrump());
                });
                // If nobody got trump, wipe the hands and blind and start again
                if (missingTrump)
                {
                    players.ForEach(player =>
                    {
                        player.Hand = new Hand.Hand();
                    });
                    Blind = new Blind.Blind();
                }
            }
        }
示例#2
0
        public void GetTopCardTest()
        {
            Card card  = new Card(CardID.Eight, CardPower.JackDiamond, Suit.Hearts);
            Card card2 = new Card(CardID.Jack, CardPower.JackClub, Suit.Clubs);

            deck.Cards.Insert(0, card);
            deck.Cards.Insert(1, card2);
            Assert.AreEqual(card, deck.GetTopCard());
            Assert.AreNotEqual(card, deck.Cards[0]);
            Assert.AreEqual(card2, deck.GetTopCard());
        }