public void ResetDeck() { _LastDrawnCard = null; if (UseDiscardStack) { DrawStack.AddCards(true, DiscardStack.RemoveAllCards()); } else { DrawStack.AddCards(true); } }
public void Enqueue(PlayingCard card) { if (BottomCard != null) { BottomCard.Next = card; } else { TopCard = card; } BottomCard = card; TotalCards++; }
public string DrawString() { _LastDrawnCard = DrawStack.Dequeue(!UseDiscardStack); if (_LastDrawnCard != null) { if (UseDiscardStack) { DiscardStack.Enqueue(_LastDrawnCard); } return(_LastDrawnCard.Value.ToString() + "_" + _LastDrawnCard.Suit.ToString()); } return(null); }
public PlayingCard Draw() { lock (this) { _LastDrawnCard = DrawStack.Dequeue(!UseDiscardStack); if (_LastDrawnCard != null) { if (UseDiscardStack) { DiscardStack.Enqueue(_LastDrawnCard); } return(_LastDrawnCard); } return(null); } }
public PlayingCard Dequeue(bool enqueueImmediately) { if (TopCard != null) { PlayingCard card = new PlayingCard(TopCard); TopCard = TopCard.Next; TotalCards--; if (enqueueImmediately) { Enqueue(card); } return(card); } else { BottomCard = null; } return(null); }
/* Richard Durstenfeld version of Fisher–Yates shuffle * -- To shuffle an array a of n elements (indices 0..n-1): * for i from n−1 downto 1 do * j ← random integer such that 0 ≤ j ≤ i * exchange a[j] and a[i] */ void Shuffle() { if (TotalCards > 1) { var cardsArray = RemoveAllCards(); PlayingCard tempCard = null; for (int index = cardsArray.Length - 1; index > 0; index--) { int random = Random.Next(0, index + 1); if (index != random) { tempCard = cardsArray[index]; cardsArray[index] = cardsArray[random]; cardsArray[random] = tempCard; } } foreach (var card in cardsArray) { Enqueue(card); } } }
public string[] DrawStrings(int consecutiveDraws) { List <string> cardList = new List <string>(); for (int draw = 0; draw < consecutiveDraws; draw++) { _LastDrawnCard = DrawStack.Dequeue(!UseDiscardStack); if (_LastDrawnCard != null) { if (UseDiscardStack) { DiscardStack.Enqueue(_LastDrawnCard); } cardList.Add(_LastDrawnCard.Value.ToString() + "_" + _LastDrawnCard.Suit.ToString()); } } if (cardList.Count > 0) { return(cardList.ToArray()); } return(null); }
public PlayingCard[] Draw(int consecutiveDraws) { List <PlayingCard> cardList = new List <PlayingCard>(); for (int draw = 0; draw < consecutiveDraws; draw++) { _LastDrawnCard = DrawStack.Dequeue(!UseDiscardStack); if (_LastDrawnCard != null) { if (UseDiscardStack) { DiscardStack.Enqueue(_LastDrawnCard); } cardList.Add(_LastDrawnCard); } } if (cardList.Count > 0) { return(cardList.ToArray()); } return(null); }
public PlayingCard(PlayingCard copy) { _Value = copy.Value; _Suit = copy.Suit; }