예제 #1
0
        private async void WaitForMessage(NetworkStream stream)
        {
            while (true)
            {
                var message = await NetworkHelper.ReceiveMessage(stream).ConfigureAwait(false);

                message.LastPlayBy = LastPlayerPlayed;
                if (message.MessageType == NetworkHelper.MessageType.Pass)
                {
                    if ((message.Player !.PlayerNumber + 1) % 4 == LastPlayerPlayed)
                    {
                        RuleHandler.FreeTurn();
                    }
                    foreach (var clientStream in ClientStreams)
                    {
                        NetworkHelper.SendMessage(clientStream, message);
                    }
                }
                else
                {
                    var validPlay = RuleHandler.IsValidPlay(message.Hand !, Pile);
                    if (validPlay)
                    {
                        Pile = message.Hand;
                        foreach (var clientStream in ClientStreams)
                        {
                            NetworkHelper.SendMessage(clientStream, message);
                        }
                        LastPlayerPlayed = message.Player !.PlayerNumber;
                    }
                }
            }
        }
예제 #2
0
        public void IsValidPlay_UsingEqualSingleLowerSuit_Fail()
        {
            RuleHandler sut   = new RuleHandler();
            List <Card> cards = new List <Card>();

            sut.FreeTurn();
            cards.Add(new Card("J", 8, "Clubs", 1));
            sut.IsValidPlay(cards, null);
            var cards1 = new List <Card>
            {
                new Card("J", 8, "Spades", 0)
            };

            bool result = sut.IsValidPlay(cards1, cards);

            Assert.IsFalse(result);
        }
예제 #3
0
        public void IsValidPlay_UsingTripleOnSingleAce_Success()
        {
            RuleHandler sut = new RuleHandler();

            sut.FreeTurn();
            List <Card> cards = new List <Card>
            {
                new Card("A", 11, "Spades", 0)
            };

            sut.IsValidPlay(cards, null);
            var cards1 = new List <Card>
            {
                new Card("4", 1, "Clubs", 1),
                new Card("4", 1, "Spades", 0),
                new Card("4", 1, "Diamonds", 2)
            };

            bool result = sut.IsValidPlay(cards1, cards);

            Assert.IsTrue(result);
        }