Пример #1
0
        private void ThisPlayer_DumpingFail(ShowingCardsValidationResult result)
        {
            //擦掉上一把
            if (ThisPlayer.CurrentTrickState.AllPlayedShowedCards() || ThisPlayer.CurrentTrickState.IsStarted() == false)
            {
                drawingFormHelper.DrawCenterImage();
                drawingFormHelper.DrawScoreImage();
            }
            ThisPlayer.CurrentTrickState.ShowedCards[result.PlayerId] = result.CardsToShow;

            string latestPlayer = result.PlayerId;
            int    position     = PlayerPosition[latestPlayer];

            if (latestPlayer == ThisPlayer.PlayerId)
            {
                drawingFormHelper.DrawMyShowedCards();
            }
            if (position == 2)
            {
                drawingFormHelper.DrawNextUserSendedCards();
            }
            if (position == 3)
            {
                drawingFormHelper.DrawFriendUserSendedCards();
            }
            if (position == 4)
            {
                drawingFormHelper.DrawPreviousUserSendedCards();
            }
        }
Пример #2
0
        public void IsLeadingCardsValidTestTractor2()
        {
            Dictionary <string, CurrentPoker> playerHoldingCards = new Dictionary <string, CurrentPoker>();

            playerHoldingCards["p2"] = new CurrentPoker(new List <int>()
            {
                8, 8, 7, 7
            }, Suit.Spade, 0);
            List <int> selectedCards = new List <int> {
                3, 3, 4, 4, 5, 5, 12
            };
            string player = "p1";

            ShowingCardsValidationResult result = TractorRules.IsLeadingCardsValid(playerHoldingCards, selectedCards, player);

            Assert.AreEqual(ShowingCardsValidationResultType.DumpingSuccess, result.ResultType);

            selectedCards = new List <int> {
                3, 3, 4, 4, 5, 5
            };
            player = "p1";

            result = TractorRules.IsLeadingCardsValid(playerHoldingCards, selectedCards, player);
            Assert.AreEqual(ShowingCardsValidationResultType.Valid, result.ResultType);
        }
Пример #3
0
        public void IsLeadingCardsValidTestTractor()
        {
            Dictionary <string, CurrentPoker> playerHoldingCards = new Dictionary <string, CurrentPoker>();

            playerHoldingCards["p2"] = new CurrentPoker(new List <int>()
            {
                8, 8, 7, 7
            }, Suit.Spade, 0);
            List <int> selectedCards = new List <int> {
                4, 4, 5, 5, 12
            };
            string player = "p1";

            ShowingCardsValidationResult result = TractorRules.IsLeadingCardsValid(playerHoldingCards, selectedCards, player);

            Assert.AreEqual(ShowingCardsValidationResultType.DumpingFail, result.ResultType);
            Assert.AreEqual(4, result.MustShowCardsForDumpingFail.Count);
            Assert.IsTrue(result.MustShowCardsForDumpingFail.Contains(4));
            Assert.IsTrue(result.MustShowCardsForDumpingFail.Contains(5));

            selectedCards = new List <int> {
                12, 10, 10, 9, 9
            };
            result = TractorRules.IsLeadingCardsValid(playerHoldingCards, selectedCards, player);
            Assert.AreEqual(ShowingCardsValidationResultType.DumpingSuccess, result.ResultType);
        }
Пример #4
0
        public void IsLeadingCardsValidDumpSingles()
        {
            Dictionary <string, CurrentPoker> playerHoldingCards = new Dictionary <string, CurrentPoker>();

            playerHoldingCards["p2"] = new CurrentPoker(new List <int>()
            {
                35, 7, 9, 22, 52
            }, Suit.Spade, 0);
            playerHoldingCards["p3"] = new CurrentPoker(new List <int>()
            {
                30, 35, 36, 9, 10
            }, Suit.Spade, 0);
            playerHoldingCards["p4"] = new CurrentPoker(new List <int>()
            {
                27, 31, 37, 36, 16
            }, Suit.Spade, 0);
            List <int> selectedCards = new List <int> {
                42, 45, 47, 48, 49
            };
            string player = "p1";

            ShowingCardsValidationResult result = TractorRules.IsLeadingCardsValid(playerHoldingCards, selectedCards, player);

            Assert.AreEqual(ShowingCardsValidationResultType.DumpingSuccess, result.ResultType);
        }
Пример #5
0
        private void ToShowCards()
        {
            var      pigRect = new Rectangle(296, 300, 53, 46);
            Graphics g       = Graphics.FromImage(bmp);

            if (ThisPlayer.CurrentHandState.CurrentHandStep == HandStep.Playing &&
                ThisPlayer.CurrentTrickState.NextPlayer() == ThisPlayer.PlayerId)
            {
                ShowingCardsValidationResult showingCardsValidationResult =
                    TractorRules.IsValid(ThisPlayer.CurrentTrickState, SelectedCards, ThisPlayer.CurrentPoker);
                //如果我准备出的牌合法
                if (showingCardsValidationResult.ResultType == ShowingCardsValidationResultType.Valid)
                {
                    //擦去小猪
                    g.DrawImage(image, pigRect, pigRect, GraphicsUnit.Pixel);

                    foreach (int card in SelectedCards)
                    {
                        ThisPlayer.CurrentPoker.RemoveCard(card);
                    }
                    ThisPlayer.ShowCards(SelectedCards);
                    drawingFormHelper.DrawMyShowedCards();
                    SelectedCards.Clear();
                }
                else if (showingCardsValidationResult.ResultType == ShowingCardsValidationResultType.TryToDump)
                {
                    //擦去小猪
                    g.DrawImage(image, pigRect, pigRect, GraphicsUnit.Pixel);

                    ShowingCardsValidationResult result = ThisPlayer.ValidateDumpingCards(SelectedCards);
                    if (result.ResultType == ShowingCardsValidationResultType.DumpingSuccess) //甩牌成功.
                    {
                        foreach (int card in SelectedCards)
                        {
                            ThisPlayer.CurrentPoker.RemoveCard(card);
                        }
                        ThisPlayer.ShowCards(SelectedCards);

                        drawingFormHelper.DrawMyShowedCards();
                        SelectedCards.Clear();
                    }
                    //甩牌失败
                    else
                    {
                        foreach (int card in result.MustShowCardsForDumpingFail)
                        {
                            ThisPlayer.CurrentPoker.RemoveCard(card);
                        }
                        Thread.Sleep(2000);
                        ThisPlayer.ShowCards(result.MustShowCardsForDumpingFail);

                        SelectedCards = result.MustShowCardsForDumpingFail;
                        SelectedCards.Clear();
                    }
                }
            }
            g.Dispose();
        }
Пример #6
0
 public void NotifyDumpingValidationResult(ShowingCardsValidationResult result)
 {
     if (result.ResultType == ShowingCardsValidationResultType.DumpingFail)
     {
         if (DumpingFail != null)
         {
             DumpingFail(result);
         }
     }
 }
Пример #7
0
 public void NotifyTryToDumpResult(ShowingCardsValidationResult result)
 {
     if (result.ResultType != ShowingCardsValidationResultType.DumpingSuccess)
     {
         _tractorHost.RefreshPlayersCurrentHandState(this.MyOwnId);
     }
     if (NotifyTryToDumpResultEvent != null)
     {
         NotifyTryToDumpResultEvent(result);
     }
 }
Пример #8
0
        public void IsLeadingCardsValidDump2Pairs()
        {
            Dictionary <string, CurrentPoker> playerHoldingCards = new Dictionary <string, CurrentPoker>();

            playerHoldingCards["p2"] = new CurrentPoker(new List <int>()
            {
                18, 15, 22, 19, 21
            }, Suit.Spade, 0);
            playerHoldingCards["p3"] = new CurrentPoker(new List <int>()
            {
                25, 25, 24, 24, 22
            }, Suit.Spade, 0);
            List <int> selectedCards = new List <int> {
                10, 10, 6, 6
            };
            string player = "p1";

            ShowingCardsValidationResult result = TractorRules.IsLeadingCardsValid(playerHoldingCards, selectedCards, player);

            Assert.AreEqual(ShowingCardsValidationResultType.DumpingSuccess, result.ResultType);
        }