internal void AddCard(CardInstance value, int qty) { if (value == null) { return; } foreach (var ci in CardsCollection.Where(ci => ci.BorderBrush != null)) { ci.BorderBrush = null; } var card = CardsCollection.Where(ci => ci.CardId == value.CardId).FirstOrDefault(); if (card != null) { card.Quantity += qty; //if already in deck, inc qty card.BorderBrush = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 100, 15)); } else { card = value; card.BorderBrush = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 100, 15)); card.Quantity = qty; CardsCollection.Add(card); } if (LimitCardCount) { trackerFactory.GetService <IDeckService>().EnforceCardLimit(card); } NewCard = null; }
public void TestDeck_SortCards_ShouldPass() { var shufledCards = new Queue <SimpleCard>(fullDeck); shufledCards.Shuffle(); var deck = new CardsCollection(); foreach (var card in shufledCards) { deck.Add(card); } System.Console.WriteLine(); var sortedDeck = deck.OrderBy(x => x); SimpleCard checkCard = null; foreach (var item in sortedDeck) { checkCard = item as SimpleCard; break; } SimpleCard firstCard = new SimpleCard(CardType.Two, Suit.Clubs); bool areSame = checkCard.Equals(firstCard); Assert.IsTrue(areSame); }
public void CardsCollection_ToString() { var cards = new CardsCollection() { new Card("Ah"), new Card("2s"), new Card("7d"), new Card("Ts"), new Card("Jc") }; Assert.Equal("Ah 2s 7d Ts Jc", cards.ToString()); cards.Add(new Card("Ac")); Assert.Equal("Ah 2s 7d Ts Jc Ac", cards.ToString()); }
public int PlayGame() { //only play if players exist. if (players == null) { return(-1); } //Deal initinal hands DealHands(); bool GameWon = false; int currentPlayer; Card playCard = playDeck.GetCard(currentCard++); discardedCards.Add(playCard); do { for (currentPlayer = 0; currentPlayer < players.Length; currentPlayer++) { WriteLine($"{players[currentPlayer].Name}'s turn."); WriteLine("Current hand:"); foreach (Card card in players[currentPlayer].PlayHand) { WriteLine(card); } WriteLine($"Card in play:{playCard}"); bool inputOK = false; do { WriteLine("Press T to take card in play or D to draw:"); string input = ReadLine(); if (input.ToLower() == "t") { WriteLine($"Drawn:{playCard}"); if (discardedCards.Contains(playCard)) { discardedCards.Remove(playCard); } players[currentPlayer].PlayHand.Add(playCard); inputOK = true; } if (input.ToLower() == "d") { Card newCard; bool cardIsAvailable; do { newCard = playDeck.GetCard(currentCard++); cardIsAvailable = !discardedCards.Contains(newCard); if (cardIsAvailable) { foreach (Player testPlayer in players) { if (testPlayer.PlayHand.Contains(newCard)) { cardIsAvailable = false; break; } } } } while (!cardIsAvailable); WriteLine($"Drawn:{newCard}"); players[currentPlayer].PlayHand.Add(newCard); inputOK = true; } } while (inputOK == false); WriteLine("New hand:"); for (int i = 0; i < players[currentPlayer].PlayHand.Count; i++) { WriteLine($"{i + 1} : " + $"{players[currentPlayer].PlayHand[i]}"); } inputOK = false; int choice = -1; do { WriteLine("Choose card to discard:"); string input = ReadLine(); try { choice = Convert.ToInt32(input); if ((choice > 0) && (choice <= 8)) { inputOK = true; } } catch { //... } } while (inputOK == false); playCard = players[currentPlayer].PlayHand[choice - 1]; players[currentPlayer].PlayHand.RemoveAt(choice - 1); discardedCards.Add(playCard); WriteLine($"Discarding:{playCard}"); WriteLine(); GameWon = players[currentPlayer].HasWon(); if (GameWon == true) { break; } } } while (GameWon == false); return(currentPlayer); }
/// <summary> /// Returns a CardsCollection collection for cards for view of name /// </summary> /// <param name="name"></param> /// <returns></returns> public CardsCollection GetView(string name) { var cards = new CardsCollection(MingleProject, _model); MingleProject.GetView(name).ToList().ForEach(c => cards.Add(new Card(c, _model))); return cards; }
/// <summary> /// Returns a CardsCollection collection of cards of type /// </summary> /// <param name="cardTypeName"></param> /// <returns></returns> public CardsCollection GetCardsOfType(string cardTypeName) { var cards = new CardsCollection(MingleProject, _model); MingleProject.GetCardsOfType(cardTypeName).ToList().ForEach(c => cards.Add(new Card(c, _model))); return cards; }
/// <summary> /// Wraps MingleProject.GetCards(filters) /// </summary> /// <param name="filters"></param> /// <returns></returns> public CardsCollection GetCards(Collection<string> filters) { var cards = new CardsCollection(_project, _model); _project.GetCards(filters).ToList().ForEach(c => cards.Add(new Card(c, _model))); return cards; }
public void TestDeck_SortCards_ShouldPass() { var shufledCards = new Queue<SimpleCard>(fullDeck); shufledCards.Shuffle(); var deck = new CardsCollection(); foreach (var card in shufledCards) { deck.Add(card); } System.Console.WriteLine(); var sortedDeck = deck.OrderBy(x => x); SimpleCard checkCard = null; foreach (var item in sortedDeck) { checkCard = item as SimpleCard; break; } SimpleCard firstCard = new SimpleCard(CardType.Two, Suit.Clubs); bool areSame = checkCard.Equals(firstCard); Assert.IsTrue(areSame); }