Example #1
0
        public static List <Card> BubbleSort(Player player)
        {
            var listTrump = new List <Card>();

            for (int i = 0; i < player.Hand.Count; i++)
            {
                for (int j = 0; j < player.Hand.Count - 1; j++)
                {
                    var card = player.Hand[j + 1];
                    if (CardsComparerHelper.IsTrump(card))
                    {
                        listTrump.Add(card);
                        player.Hand.Remove(card);
                        j--;
                        continue;
                    }
                    else if (player.Hand[j].Value > player.Hand[j + 1].Value)
                    {
                        player.Hand[j + 1] = player.Hand[j];
                        player.Hand[j]     = card;
                    }
                }
            }

            return(listTrump);
        }
Example #2
0
        public static bool operator <=(Card card1, Card card2)
        {
            switch (CardsComparerHelper.Compare(card1, card2))
            {
            case 0:
            case -1:
                return(true);

            case 1:
            default:
                return(false);
            }
        }
Example #3
0
        //общеизвестные методы, такие как buubleSort лучше держать вне рабочего кода
        public static void BubbleSort(Player player, List <Card> list)
        {
            var listTrump = new List <Card>();

            for (int i = 0; i < list.Count; i++)
            {
                for (int j = 0; j < list.Count - 1; j++)
                {
                    var card = list[j + 1];
                    // и соотвественно он не должен зависеть от counter
                    // где-то тут прячеться изначально неверная логика
                    if (CardsComparerHelper.IsTrump(card) && counter != 1)
                    {
                        listTrump.Add(card);
                        list.Remove(card);
                        j--;
                        continue;
                    }
                    else if (list[j].Value > list[j + 1].Value)
                    {
                        list[j + 1] = list[j];
                        list[j]     = card;
                    }
                }
            }

            counter++;
            if (counter == 1)
            {
                BubbleSort(player, listTrump);
            }
            if (counter != 3)
            {
                player.Hand.AddRange(list); counter++;
            }
        }
Example #4
0
 public int Compare(Card card1, Card card2)
 {
     // воспользуемся хелпером
     return(CardsComparerHelper.Compare(card1, card2));
 }
Example #5
0
        public int WriteNumber(Player player)
        {
            var listTrump       = Utils.BubbleSort(player);
            var listTrumpSorted = Utils.BubbleSort(listTrump);

            player.Hand.AddRange(listTrump);

            if (player.Attacker)
            {
                return(0);
            }

            if (player.Defender)
            {
                var enemyCard = Game.CardsPairsOnTable.Last();
                var index     = 0;

                foreach (var myCard in player.Hand)
                {
                    if (myCard.Suit == enemyCard.LessCard?.Suit && myCard.Value > enemyCard.LessCard?.Value)
                    {
                        return(index);
                    }

                    if (CardsComparerHelper.IsTrump(myCard) && !(CardsComparerHelper.IsTrump(enemyCard.LessCard)))
                    {
                        return(index);
                    }

                    index++;
                }
                return(player.Hand.Count + 1);
            }

            var cardsOnTable = new List <Card>();

            foreach (var card in Game.CardsPairsOnTable)
            {
                if (!(card.LessCard is null))
                {
                    cardsOnTable.Add(card.LessCard);
                }
                if (!(card.LargerCard is null))
                {
                    cardsOnTable.Add(card.LargerCard);
                }
            }

            foreach (var card in cardsOnTable)
            {
                var index = 0;
                foreach (var card1 in player.Hand)
                {
                    if (CardsComparerHelper.IsTrump(card1))
                    {
                        break;
                    }
                    if (card1.Value == card.Value)
                    {
                        return(index);
                    }
                    index++;
                }
            }

            if (Game.IsTaker == true)
            {
                Thread.Sleep(11000);
            }
            return(player.Hand.Count + 2);
        }