String[] SUITS = new String[] { "Spades" , "Clubs" , "Hearts", "Diamonds"};
String[] NUMBER = new String[] { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
private Card Next = null;
private Card Prev = null;
public Card(int cardSuit, int cardNumber)
if(cardSuit > 3 || cardSuit < 0 || cardNumber > 13 || cardNumber < 1)
Console.WriteLine("Invalid card created!");
public void SetNext(Card nextCard)
public void SetPrev(Card prevCard)
public string GetCardInfo()
return " This card is Number " + getNumber() + " of Suit " + getSuit();
public void ChangeCardNmber(int newCardNumber)
if(newCardNumber > 13 || newCardNumber < 1)
Console.WriteLine("Invalid card created");
public string getSuit() {
public string getNumber() {
return NUMBER[Number - 1];
public int getNumberAsInt() {
public String getNumberAsFace() {
public String getSuitAsColor() {
private Card[] cards = new Card[52];
for(int i = 0; i < 4; i++) {
for(int j = 1; j < 14; j++) {
cards[cardIndex] = new Card(i,j);
Console.WriteLine(cards[cardIndex].GetCardInfo());
cards[cardIndex].SetPrev(cards[cardIndex - 1]);
cards[cardIndex - 1].SetNext(cards[cardIndex]);
Card currentCard = GetBottomCard();
while(currentCard != null)
Console.WriteLine(currentCard.GetCardInfo());
currentCard = currentCard.GetNext();
public void ShuffleDeck()
int numUnshuffled = CardCount;
Random rng = new Random();
Rand = rng.Next(0,numUnshuffled-1);
for(int i = 1; i < Rand; i++)
currCard = currCard.GetNext();
currCard = CardDraw(currCard);
InsertOnBottom(currCard);
public Card GetBottomCard()
public Card CardDraw(Card CardToDraw)
if(CardToDraw == TopCard && CardToDraw == BottomCard)
} else if(CardToDraw == TopCard)
TopCard = CardToDraw.GetNext();
} else if (CardToDraw == BottomCard)
BottomCard = CardToDraw.GetPrev();
CardToDraw.GetPrev().SetNext(CardToDraw.GetNext());
CardToDraw.GetNext().SetPrev(CardToDraw.GetPrev());
public void InsertOnTop(Card CardToInsert)
CardToInsert = CardDraw(CardToInsert);
CardToInsert.SetNext(TopCard);
public void InsertOnBottom(Card CardToInsert)
CardToInsert = CardDraw(CardToInsert);
CardToInsert.SetPrev(BottomCard);
BottomCard = CardToInsert;
public void InsertCardAfter(Card CardToInsert, Card CardToInsertAfter)
CardToInsert = CardDraw(CardToInsert);
CardToInsertAfter.SetPrev(CardToInsert);
CardToInsert.SetNext(CardToInsertAfter.GetNext());
CardToInsertAfter.SetNext(CardToInsert);
CardToInsert.SetPrev(CardToInsertAfter);
public static void Main(string[] args)
Deck myDeck = new Deck();
Console.WriteLine("Debug: Attempting to remove TopCard");
myDeck.CardDraw(myDeck.GetTopCard());
Console.WriteLine("Debug: Attempting to remove 4th card in");
myDeck.CardDraw(myDeck.GetTopCard().GetNext().GetNext().GetNext());
Console.WriteLine("Debug: Attempting to remove last card");
myDeck.CardDraw(myDeck.GetBottomCard());