public void PlayerPlay(Card c, Suit selectedUserSuit) { if (GameIsPlaying) { ResetMessage(); Card topCardOnTable = HandTable[HandTable.CountCardsInHand - 1]; Card selectedUserCard = c; if (IsRegularCard(selectedUserCard, topCardOnTable)) { HandTable.AddCard(c); HandPlayer.RemoveCard(c); PlayerActive = false; IsWinner(); } else if (IsWildCard(selectedUserCard)) { selectedUserCard.Suit = selectedUserSuit; HandTable.AddCard(selectedUserCard); HandPlayer.RemoveCard(HandPlayer.GetCardIndex(selectedUserCard)); PlayerActive = false; IsWinner(); } else { Messages = $"You cannot play the {selectedUserCard.FaceValue} of {selectedUserCard.Suit} now"; PlayerActive = true; } } }
private void RedealFromPile() { Deck.ReuseDeckFromTablePile(HandTable); Deck.Shuffle(); for (int i = 0; i < HandTable.CountCardsInHand - 1; i++) { HandTable.RemoveCard(i); } }
public void ComputerPlay() { if (!PlayerActive && GameIsPlaying) { ResetMessage(); Card topCardOnTable = HandTable[HandTable.CountCardsInHand - 1]; Card c; for (int i = 0; i < HandComputer.CountCardsInHand; i++) { c = HandComputer[i]; if (IsRegularCard(c, topCardOnTable)) { HandTable.AddCard(c); HandComputer.RemoveCard(c); IsWinner(); PlayerActive = true; return; } } for (int i = 0; i < HandComputer.CountCardsInHand; i++) { c = HandComputer[i]; if (IsWildCard(c)) { int cardIndex = HandComputer.GetCardIndex(HandComputer[i]); Random rnd = new Random(); Suit suit = (Suit)rnd.Next(0, Enum.GetValues(typeof(Suit)).Length); c.Suit = suit; HandTable.AddCard(c); HandComputer.RemoveCard(cardIndex); IsWinner(); PlayerActive = true; return; } } //IF NO CARD MATCHES TAKE A CARD if (Deck.DeckCount > 0) { if (HandComputer.CountCardsInHand <= 11) { Card topCard = Deck.DrawOneCard(); HandComputer.AddCard(topCard); //Recursion => Repeat all code above when draw new card ComputerPlay(); IsWinner(); } else { PlayerActive = true; Messages = "Computer does not have any matching card. \n Your turn"; } } else { RedealFromPile(); ComputerPlay(); } } }