using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace __Go_Fish
{
public class Deck
{
private List<Card> cards;
private Random random = new Random();
public Deck()
{
cards = new List<Card>();
for (int suit = 0; suit <= 3; suit++)
for (int value = 1; value <= 13; value++)
cards.Add(new Card((Card.Suits)suit, (Card.Values)value));
}
public Deck(Card[] initialCards)
{
cards = new List<Card>(initialCards);
}
public int Count { get { return cards.Count; } }
public void Add(Card cardToAdd)
{
cards.Add(cardToAdd);
}
public void Shuffle()
{
List<Card> NewCards = new List<Card>();
while (cards.Count > 0)
{
int CardToMove = random.Next(cards.Count);
NewCards.Add(cards[CardToMove]);
cards.RemoveAt(CardToMove);
}
cards = NewCards;
}
public string[] GetCardNames()
{
string[] CardNames = new string[cards.Count];
for (int i = 0; i < cards.Count; i++)
CardNames[i] = cards[i].Name;
return CardNames;
}
public void Sort()
{
cards.Sort(new CardComparer_bySuit());
}
public Card Peek(int cardNumber)
{
return cards[cardNumber];
}
public Card Deal()
{
return Deal(0);
}
public bool ContainsValue(Card.Values value)
{
foreach (Card card in cards)
if (card.Value == value)
return true;
return false;
}
public Deck PullOutValues(Card.Values value)
{
Deck deckToReturn = new Deck(new Card[] { });
for (int i = cards.Count - 1; i >= 0; i--)
if (cards[i].Value == value)
deckToReturn.Add(Deal(i));
return deckToReturn;
}
public bool HasBook(Card.Values value)
{
int NumberOfCards = 0;
foreach (Card card in cards)
if (card.Value == value)
NumberOfCards++;
if (NumberOfCards == 4)
return true;
else
return false;
}
public void SortByValue()
{
cards.Sort(new CardComparer_byValue());
}
}
}