/// <summary> /// constructor of spades card /// </summary> /// <param name="i">Card Index</param> public SpadesCard(int i) : base() { if (i < 0 || i > 52) { throw new ApplicationException("Wrong value for card initilization."); } _cardindex = i; Suit = Card.SuitFromCardIndex(i); Rank = Card.RankFromCardIndex(i); }
/// <summary> /// Sorts the card by their suit /// </summary> /// <param name="pile"></param> /// <returns></returns> public static Pile SortBySuit(Pile pile) { System.Collections.ArrayList newHand = new System.Collections.ArrayList(); System.Collections.ArrayList CardPile = (System.Collections.ArrayList)pile.CardPile; while (CardPile.Count > 0) { int pos = 0; // Position of minimal card. SpadesCard minSpadescard = (SpadesCard)CardPile[0]; // Minimal card. int mincard = (int)minSpadescard.CardIndex; for (int i = 1; i < CardPile.Count; i++) { SpadesCard nextSpadescard = (SpadesCard)CardPile[i]; int nextcard = nextSpadescard.CardIndex; if (Card.SuitFromCardIndex(nextcard) < Card.SuitFromCardIndex(mincard) || (Card.SuitFromCardIndex(nextcard) == Card.SuitFromCardIndex(mincard) && Card.RankFromCardIndex(nextcard) < Card.RankFromCardIndex(mincard)) ) { pos = i; mincard = nextcard; minSpadescard = nextSpadescard; } } CardPile.RemoveAt(pos); newHand.Add(minSpadescard); } CardPile = newHand; pile.CardPile = CardPile; return(pile); }