예제 #1
0
 private void addCards(UnoCard card, int times)
 {
     for (int i = 0; i < times; i++)
     {
         cards.Add(card);
     }
 }
예제 #2
0
 public bool CanMatch(UnoCard card)
 {
     if (Hand.Where(x => x.Color.Equals(UnoCardColor.Wild)).ToList().Count > 0)
     {
         return(true);
     }
     return(Hand.Where(x => (x.Type.Equals(card.Type) || x.Color.Equals(card.Color))).ToList().Count > 0);
 }
예제 #3
0
        private void shuffle()
        {
            Random         r         = new Random(unchecked (Environment.TickCount * 31 + Thread.CurrentThread.ManagedThreadId));
            List <UnoCard> toShuffle = cards;

            for (int n = toShuffle.Count - 1; n > 0; --n)
            {
                int     k    = r.Next(n + 1);
                UnoCard temp = toShuffle[k];
                toShuffle[k] = toShuffle[n];
                toShuffle[n] = temp;
            }
        }
예제 #4
0
        public string GetAcceptableMatchesAsString(UnoCard toMatch)
        {
            string         s = "";
            List <UnoCard> acceptableCards = Hand.Where(x => (x.Type.Equals(toMatch.Type) || x.Color.Equals(toMatch.Color)) || x.Color.Equals(UnoCardColor.Wild)).ToList();

            foreach (UnoCard card in acceptableCards)
            {
                if (card.Equals(acceptableCards.First()))
                {
                    s += $"{card.ToString()},";
                }
                else if (card.Equals(Hand.Last()))
                {
                    s += $" and {card.ToString()}";
                }
                else
                {
                    s += $" {card.ToString()},";
                }
            }
            return(s);
        }
예제 #5
0
        public int GetFirstAcceptableMatch(UnoCard card)
        {
            List <UnoCard> playableCards = Hand.Where(x => (x.Type.Equals(card.Type) || x.Color.Equals(card.Color)) || x.Color.Equals(UnoCardColor.Wild)).ToList();

            return(Hand.IndexOf(playableCards.First()));
        }