예제 #1
0
파일: UnoGame.cs 프로젝트: David176/SWT
 public UnoGame(IDeck deck)
 {
     _tableDeck = new TableDeck();
     _deck = deck;
     _cardRules = _deck.GetCardRules();
     _playersInGame = new List<Player>();
     _currentPlayersTurn = 0;
 }
예제 #2
0
파일: Deck.cs 프로젝트: David176/SWT
 public void DealCards(List<Player> players, ITableDeck tableDeck)
 {
     for (var i = 0; i < 7; i++)
     {
         foreach (var player in players)
         {
             if(!DealCard(player))
                 return;
         }
     }
     tableDeck.PutCard(CurrentDeck[0]);
     CurrentDeck.RemoveAt(0);
 }
예제 #3
0
파일: Deck.cs 프로젝트: David176/SWT
 private void Restock(ITableDeck tableDeck)
 {
     while (tableDeck.CardsOnTable.Count > 0)
     {
         CurrentDeck.Add(tableDeck.CardsOnTable[0]);
         tableDeck.CardsOnTable.RemoveAt(0);
     }
 }
예제 #4
0
파일: Deck.cs 프로젝트: David176/SWT
        public void Shuffle(ITableDeck tableDeck)
        {
            Restock(tableDeck);
            int dots;
            int n = CurrentDeck.Count;
            Console.Write("\rShuffling deck");
            while (n > 1)
            {
                dots = Math.Abs(n - CurrentDeck.Count);
                Console.Write("\rShuffling deck");
                do
                {
                    Console.Write(".");
                    dots-= 2;
                } while (dots > 0);
                Thread.Sleep(30);

                n--;
                int k = rng.Next(n + 1);
                var value = CurrentDeck[k];
                CurrentDeck[k] = CurrentDeck[n];
                CurrentDeck[n] = value;

            }
            Console.Write("\n");
        }