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(); } }
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); }
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); }
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); }
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(); }
public void NotifyDumpingValidationResult(ShowingCardsValidationResult result) { if (result.ResultType == ShowingCardsValidationResultType.DumpingFail) { if (DumpingFail != null) { DumpingFail(result); } } }
public void NotifyTryToDumpResult(ShowingCardsValidationResult result) { if (result.ResultType != ShowingCardsValidationResultType.DumpingSuccess) { _tractorHost.RefreshPlayersCurrentHandState(this.MyOwnId); } if (NotifyTryToDumpResultEvent != null) { NotifyTryToDumpResultEvent(result); } }
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); }