Exemple #1
0
        /// <summary>
        /// Configures the specified IoC container with the type resolutions from this library.
        /// </summary>
        public void Configure(IServiceLocator container)
        {
            var cardComparer = new CardComparer();
            container.RegisterInstance<IComparer<Card>>(cardComparer);

            var highCardComparer = new HighCardComparer(cardComparer);
            var handComparer = new HandComparer(
                highCardComparer,
                new PairComparer(highCardComparer),
                new TwoPairComparer(),
                new ThreeOfAKindComparer(highCardComparer),
                new StraightComparer(),
                new FlushComparer(highCardComparer),
                new FullHouseComparer(highCardComparer),
                new FourOfAKindComparer(highCardComparer),
                new StraightFlushComparer());
            container.RegisterInstance<IHandComparer>(handComparer);

            container.RegisterInstance<Func<List<Card>, IHand>>(
                cards => new Hand(
                    cards,
                    cardComparer,
                    handComparer));

            container.RegisterInstance<Func<ICollection<IPlayer>, IGame>>(
                players => new Game(
                    container.ResolveType<IDeckFactory>().CreateStandardDeck(),
                    players,
                    container.ResolveType<IComparer<IPlayer>>(),
                    container.ResolveType<Func<List<Card>, IHand>>()));
        }
Exemple #2
0
        static void MainXXX()
        {
            //TESTING ZONE
            Console.WriteLine("=== TEST ZONE ===");
            string path = Environment.CurrentDirectory + @"..\..\..\..\Resorces\waste.csv";

            Console.WriteLine(path);

            Deck Talia = new Deck(new CardDAO(path));

            Talia.Shuffle();
            IComparer <Card> comparer = new CardComparer();
            int result = comparer.Compare(Talia.CardDeck[0], Talia.CardDeck[1]);

            Console.WriteLine($"{Talia.CardDeck[0].Degradability} : {Talia.CardDeck[1].Degradability} --> {result}");
            Talia.CardDeck.Sort(comparer);
            foreach (var card in Talia.CardDeck)
            {
                Console.WriteLine($"{card.CardName}, {card.Degradability}");
            }
            Talia.CardDeck.Sort();
            foreach (var card in Talia.CardDeck)
            {
                Console.WriteLine($"{card.CardName}, {card.TotalStatSum}");
            }

            Deck allCadrds = new Deck(new CardDAO(Environment.CurrentDirectory + @"..\..\..\..\Resorces\waste.csv"));

            SerializeToXml(allCadrds.CardDeck, Environment.CurrentDirectory + @"..\..\..\..\Resorces\waste.xml");

            List <Card> deserializedCards = DeserializeFromXml(Environment.CurrentDirectory + @"..\..\..\..\Resorces\waste.xml");

            Console.WriteLine(deserializedCards[0]);
            //TESTING ZONE END
        }
Exemple #3
0
        private bool IsCurrentMaxCardInPlayingColor(Card targetCard)
        {
            CardComparer comparer    = new CardComparer(_playingManager.CurrentAnnouncement.Type);
            bool         foundBigger = false;

            foreach (Card remCard in _playingManager.RemainingCards)
            {
                if (targetCard.CardColor == remCard.CardColor)
                {
                    if (comparer.Compare(targetCard, remCard) < 0)
                    {
                        foundBigger = true;
                        break;
                    }
                }
            }

            if (!foundBigger)
            {
                foreach (Card remCard in _playingManager.CurrentHand)
                {
                    if (targetCard.CardColor == remCard.CardColor)
                    {
                        if (comparer.Compare(targetCard, remCard) < 0)
                        {
                            foundBigger = true;
                            break;
                        }
                    }
                }
            }

            return(!foundBigger);
        }
Exemple #4
0
 void Start()
 {
     comparer = new CardComparer(CardComparerCallback);
     InitCards();
     remainingPairs.Value = cards.Length / 2;
     pairCounter          = new PairCounter(remainingPairs, OnGameOver);
 }
        public List <Card> CompareListTest(List <Card> CardsToFind, Dictionary <string, int> Collection)
        {
            List <Card> result = CardComparer.CompareList(CardsToFind, Collection);

            return(result);
            // TODO: add assertions to method CardComparerTest.CompareListTest(List`1<Card>, Dictionary`2<String,Int32>)
        }
        public void DistinctOnTwoCardsReturnsLenghtOf1()
        {
            var cards = new List<Card>() { new Card(CardSuit.Diamond, CardType.King), new Card(CardSuit.Diamond, CardType.King) };
            var comparer = new CardComparer();
            cards = cards.Distinct(comparer).ToList();

            Assert.AreEqual(1, cards.Count);
        }
 public void Setup()
 {
     gamePhaseMock = new Mock <IGamePhase>();
     gamePhaseMock.Setup(e => e.GetRequiredColor()).Returns('D');
     cardComparer = new CardComparer("C")
     {
         requiredColor = 'D'
     };
 }
Exemple #8
0
        public void SortCards(IPlayer myself, Func <Card, int> sortingFunc)
        {
            IComparer <Card> comparer    = new CardComparer(this, myself.HandCards, sortingFunc);
            List <Card>      sortedCards = new List <Card>(myself.HandCards.OrderByDescending(x => x, comparer));
            FieldInfo        field       = myself.GetType().GetField("_handCards", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
            List <Card>      playerHand  = (List <Card>)field.GetValue(myself);

            playerHand.Clear();
            playerHand.AddRange(sortedCards);
        }
Exemple #9
0
        private CardComparer GetCardComparer()
        {
            if (!StickSuit.HasValue)
            {
                var msg = "Can't compare cards without a StickSuit!";
                Log.Error(msg);
                throw new InvalidOperationException(msg);
            }
            var cardComparer = new CardComparer(PlayType, StickSuit.Value);

            return(cardComparer);
        }
Exemple #10
0
 public GameController()
 {
     GameDeck = new Deck(new CardDAO(Environment.CurrentDirectory + @"..\..\..\..\Resorces\waste.csv"));
     GameDeck.Shuffle();
     TemporaryHand = new Hand();
     Player1       = new Player("Player1", true);
     Player1.Hand.GetHand(GameDeck);
     Player2 = new Player("Player2");
     Player2.Hand.GetHand(GameDeck);
     Comparer = new CardComparer();
     View     = new ViewGarbage();
 }
        public void Should_Find_Hit()
        {
            var cardsToFind = new List <Card> {
                new Card {
                    Name = "a", Quantity = 1
                }
            };
            var collection = new Dictionary <string, int> {
                { "a", 1 }
            };

            var hits = CardComparer.CompareList(cardsToFind, collection);

            hits.ShouldNotBeEmpty();
        }
Exemple #12
0
        private void btnNewCard_Click(object sender, EventArgs e)
        {
            List<Card> cards = new List<Card>();

            for (int i = 0; i < 5; i++)
            {
                cards.Add(new Card((Card.Suits)_random.Next(0, 3), (Card.Values)_random.Next(1, 13)));
            }
            
            txtCardsUnsorted.Text = WriteResult(cards);

            CardComparer cardComparer = new CardComparer();
            cards.Sort(cardComparer);
            txtCardsSorted.Text = WriteResult(cards);
        }
        public void ExpectedDeckToReturnNDifferentCards(int count)
        {
            var deck = new Deck();
            var cards = new List<Card>();

            for (int card = 0; card < count; card++)
            {
                cards.Add(deck.GetNextCard());
            }

            var comparer = new CardComparer();
            cards = cards.Distinct(comparer).ToList();

            Assert.AreEqual(count, cards.Count);
        }
        public void WhenTwoCardsThenHigherIsBetter()
        {
            var cardComparer = new CardComparer();
            int result       = cardComparer.Compare("2C", "1C");

            Assert.AreEqual(1, result);

            result = cardComparer.Compare("TC", "1C");
            Assert.AreEqual(1, result);

            result = cardComparer.Compare("JC", "QC");
            Assert.AreEqual(-1, result);

            result = cardComparer.Compare("KC", "AH");
            Assert.AreEqual(-1, result);
        }
        public static ISheet AddReports(this ISheet builder, List<Card> cards, List<List> lists, List<string> users)
        {
            var comparer = new CardComparer();
            var groupped = cards.GroupBy(c => c.Labels, comparer);
            //var rowNumber = 1;

            foreach (var group in groupped)
            {
                // write project name
                var name = "Egyéb";
                var key = group.Key.FirstOrDefault();
                if (key != null)
                {
                    name = key.Name;
                }

                var tempCards = group.ToList();
                foreach (var grouppedCard in tempCards)
                {
                    var actual = grouppedCard.RemoveUnusedMembers(users);
                    if (actual.Members.Count > 1)
                    {
                        foreach (var member in actual.Members)
                        {
                            builder.AddCard(name, actual, member);
                            builder.AddSubtasks(actual);
                            //rowNumber = rowNumber + 1;
                        }
                    }
                    else
                    {
                        builder.AddCard(name, actual, actual.Members.FirstOrDefault());
                        builder.AddSubtasks(actual);
                        //rowNumber = rowNumber + 1;
                    }
                }
            }

            return builder;
        }
Exemple #16
0
        private Card GetCurrentMaxCardInColor(CardColor color)
        {
            Card         maxCard  = null;
            CardComparer comparer = new CardComparer(_playingManager.CurrentAnnouncement.Type);

            foreach (Card card in _playingManager.RemainingCards)
            {
                if (card.CardColor == color)
                {
                    if (maxCard == null)
                    {
                        maxCard = card;
                    }

                    if (comparer.Compare(maxCard, card) < 0)
                    {
                        maxCard = card;
                    }
                }
            }

            foreach (Card card in _playingManager.CurrentHand)
            {
                if (card.CardColor == color)
                {
                    if (maxCard == null)
                    {
                        maxCard = card;
                    }

                    if (comparer.Compare(maxCard, card) < 0)
                    {
                        maxCard = card;
                    }
                }
            }

            return(maxCard);
        }
        public static IDocument AddReports(this IDocument builder, List<Card> cards, List<List> lists)
        {
            var comparer = new CardComparer();
            var groupped = cards.GroupBy(c => c.Labels, comparer);

            foreach (var group in groupped)
            {
                // write project name
                var name = "Egyéb";
                var key = group.Key.FirstOrDefault();
                if (key != null)
                {
                    name = key.Name;
                }

                builder.AddEle(new BreakLine(1));
                builder.AddEle(Heading2.With(string.Format("{0}:", name)).WithStyle().Bold().Create());
                builder.AddLists(group.ToList(), lists);
            }

            return builder;
        }
        public static IDocumentTagContextBuilder AddReports(this IDocumentTagContextBuilder builder, List<Card> cards, List<List> lists)
        {
            var comparer = new CardComparer();
            var groupped = cards.GroupBy(c => c.Labels, comparer);

            foreach (var group in groupped)
            {
                // write project name
                var name = "Egyéb";
                var key = group.Key.FirstOrDefault();
                if (key != null)
                {
                    name = key.Name;
                }

                builder.Paragraph(z => z.Bold.Text(String.Format("{0}:", name)))
                    .AddLists(group.ToList(), lists)
                    .EmptyLine();

            }

            return builder;
        }
Exemple #19
0
 public void TestCleanup()
 {
     _target = null;
 }
Exemple #20
0
 public Board()
 {
     this._byName       = new Dictionary <string, Card>();
     this._cardComparer = new CardComparer();
 }
 /// <summary>
 /// Order cards by labels->list->position
 /// </summary>
 /// <param name="cards">Unordered cards</param>
 /// <returns>Ordered cards</returns>
 public static IEnumerable<Card> OrderCards(IEnumerable<Card> cards)
 {
     var comparer = new CardComparer();
     var ordered = cards.OrderBy(c => c.Labels, comparer)
                         .ThenBy(c => c.IdList)
                         .ThenBy(c => c.Pos)
                         .ToList();
     return ordered;
 }
Exemple #22
0
 public void Sort()
 {
     CardComparer cardComparer = new CardComparer();
     _cards.Sort(cardComparer);
 }
        private void OrderCardsAndCalculateLowForPlayers(List <Player> players, List <Card>[] lowCardListForEachPlayer, List <Card> lowCardListForBoard)
        {
            SortedSet <Card> bestLowHandSoFar          = new SortedSet <Card> (new CardComparer());
            BitArray         winningPlayers            = new BitArray(players.Count(), false);
            bool             doesPlayerTieOtherPlayers = false;

            for (int i = 0; i < lowCardListForEachPlayer.Count(); i++)
            {
                SortedSet <Card> lowCardsForCurrentPlayer = new SortedSet <Card>(new CardComparer());
                foreach (Card lowCard in lowCardListForEachPlayer[i])
                {
                    if (!lowCardsForCurrentPlayer.Contains(lowCard))
                    {
                        lowCardsForCurrentPlayer.Add(lowCard);
                    }
                }
                foreach (Card lowCard in lowCardListForBoard)
                {
                    if (!lowCardsForCurrentPlayer.Contains(lowCard))
                    {
                        lowCardsForCurrentPlayer.Add(lowCard);
                    }
                }
                if (lowCardsForCurrentPlayer.Count() >= 5)
                {
                    if (bestLowHandSoFar.Count() > 0)
                    {
                        Card[] otherPlayersLowCards = new Card[bestLowHandSoFar.Count];
                        bestLowHandSoFar.CopyTo(otherPlayersLowCards);
                        Card[] currentPlayersLowCards = new Card[lowCardsForCurrentPlayer.Count];
                        lowCardsForCurrentPlayer.CopyTo(currentPlayersLowCards);
                        CardComparer crdCompare          = new CardComparer();
                        bool         isCurrentPlayerBest = false;

                        //start comparing the fifth card in both the arrays, thats what we care about.
                        for (int j = 4; j >= 0; j--)
                        {
                            int compareValue = crdCompare.Compare(otherPlayersLowCards[j], currentPlayersLowCards[j]);
                            if (compareValue > 0)
                            {
                                //Current players low cards are better(lesser rank). So it becomes the best hand.
                                isCurrentPlayerBest = true;
                                break;
                            }
                            else if (compareValue < 0)
                            {
                                break;
                            }
                            //continue if 0
                            if (j == 0)
                            {
                                doesPlayerTieOtherPlayers = true;
                            }
                        }
                        if (doesPlayerTieOtherPlayers)
                        {
                            winningPlayers.Set(i, true);
                        }
                        else if (isCurrentPlayerBest)
                        {
                            winningPlayers.SetAll(false);
                            winningPlayers.Set(i, true);
                            doesPlayerTieOtherPlayers = false;
                        }
                    }
                    else
                    {
                        bestLowHandSoFar = lowCardsForCurrentPlayer;
                        winningPlayers.Set(i, true);
                        doesPlayerTieOtherPlayers = false;
                    }
                }
            }
            int k = 0;

            if (doesPlayerTieOtherPlayers)
            {
                foreach (bool winning in winningPlayers)
                {
                    if (winning)
                    {
                        players[k].NumberOfLowTieingHands++;
                    }
                    k++;
                }
            }
            else
            {
                foreach (bool winning in winningPlayers)
                {
                    if (winning)
                    {
                        players[k].NumberOfLowWinningHands++;
                    }
                    k++;
                }
            }
        }
Exemple #24
0
 /// <summary>
 /// Inits this instance.
 /// </summary>
 private void Init()
 {
     this.cards    = new List <Card>();
     this.comparer = new CardComparer();
 }