public void Shuffle() {//http://rosettacode.org/wiki/Knuth_shuffle Random r = new Random(); for (int i = 0; i < deck.Length; i++) { int j = r.Next(i, deck.Length); PlayingCard temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } }
public void Shuffle() {//http://rosettacode.org/wiki/Knuth_shuffle Random r = new Random(); for (int i = 0; i < topIndex; i++) { int j = r.Next(i, topIndex + 1); PlayingCard temp = hand[i]; hand[i] = hand[j]; hand[j] = temp; } }
public CardDeck() {//Constructs a deck. topIndex = deck.Length - 1; int count = 0; for (int i = 1; i < 5; i++) { for (int j = 1; j < 14; j++) { deck[count] = new PlayingCard(j, i, false); count++; } } deck[count] = new PlayingCard(0, 5, false); }
public PlayingCard PickCardAt(int i) {//Picks a card from the player's hand and returns the card picked. if (i >= 0 && i <= topIndex) { PlayingCard temp = hand[i]; hand[i] = hand[topIndex]; hand[topIndex] = null; topIndex--; return(temp); } else { throw new IndexOutOfRangeException("Your choice is not in the range of valid numbers"); } }
public void AddCard(PlayingCard card) {//Adds a card to the player's hand after selecting it from another player. bool duplicate = false; for (int i = 0; i <= topIndex; i++) { if (hand[i] != null && card != null) { if (hand[i].Rank == card.Rank) { if (topIndex == i) {//If duplicate is final card in hand. CardDeck.ReturnCard(hand[topIndex]); CardDeck.ReturnCard(card); hand[topIndex] = null; topIndex--; } else {//If dupicate is not final card in hand. CardDeck.ReturnCard(hand[i]); CardDeck.ReturnCard(card); hand[i] = hand[topIndex]; hand[topIndex] = null; topIndex--; } duplicate = true; break; } } } if (!duplicate) {//Adds the card if a duplicate is not found. topIndex++; hand[topIndex] = card; } }
public override void Deal(PlayingCard card) { card.FaceUp = true; topIndex++; Hand[topIndex] = card; }
public static void ReturnCard(PlayingCard card) {//Returns the card to the deck. topIndex++; deck[topIndex] = card; }
public virtual void Deal(PlayingCard card) { }