예제 #1
0
 // Удаление бонуса из списка
 public void Delete(Bonus bonus)
 {
     #if DEBUG
     Debug.WriteLine("{0} Удаление бонуса из списка - {1}", DateTime.Now, bonus.ToString());
     #endif
     list.Remove(bonus);
 }
예제 #2
0
 // Проверка бонуса на наличие в списке
 public bool ExistsBonus(Bonus bonus)
 {
     foreach (Bonus b in list)
     {
         if ((b.Type == bonus.Type) && (b.Suit == bonus.Suit) && (b.HighCard == bonus.HighCard))
             return true;
     }
     return false;
 }
예제 #3
0
 // Добавляет бонус в список
 public void AddBonus(Bonus bonus)
 {
     list.Add(bonus);
 }
예제 #4
0
 // Сравнивает два бонуса
 private Bonus CompareBonuses(Bonus Bonus1, Bonus Bonus2)
 {
     if ((Bonus1 == null) && (Bonus2 == null))
         return null;
     if (Bonus1 == null)
         return Bonus2;
     if (Bonus2 == null)
         return Bonus1;
     if (Bonus1.CompareTo(Bonus2) > 0)
     {
         return Bonus1;
     }
     else
     if (Bonus1.CompareTo(Bonus2) < 0)
     {
         return Bonus2;
     }
     else
         return null;
 }
예제 #5
0
        public int CompareTo(Bonus Other)
        {
            // Если текущий бонус старше
            if (((int)this.Type) > ((int)Other.Type))
            {
                return 1;
            }
            else
            // Если текущий бонус младше
            if (((int)this.Type) < ((int)Other.Type))
            {
                return -1;
            }
            // Если тип бонусов равен
            else
            {
                // Если это бонус типа "Последовательность", то определяем старшенство по младшей карте карте
                if ((this.Type == BonusType.BONUS_TERZ) || (this.Type == BonusType.BONUS_50) || (this.Type == BonusType.BONUS_100))
                {
                    // Последовательность старше
                    if (this.HighCard > Other.HighCard)
                    {
                        return 1;
                    }
                    else
                    // Последовательность младше
                    if (this.HighCard < Other.HighCard)
                    {
                        return -1;
                    }
                    // Если старшинство карт в последовательностях одинаково
                    else
                    {
                        // Если текущая последовательность козырная - она старше
                        if (this.IsTrump)
                        {
                            return 1;
                        }
                        else
                        // Если другая последовательность козырная - то старше она
                        if (Other.IsTrump)
                        {
                            return -1;
                        }
                        // Последовательности равны
                        else
                        {
                            return 0;
                        }
                    }
                }
                // Если это последовательность 4X
                else
                {
                    int[] weights = new int[8];
                    weights[(int)CardType.C_Q] = 0;
                    weights[(int)CardType.C_K] = 1;
                    weights[(int)CardType.C_10] = 2;
                    weights[(int)CardType.C_A] = 3;
                    weights[(int)CardType.C_9] = 4;
                    weights[(int)CardType.C_J] = 5;
                    // Если карта старше по весу, то и бонус старше. Равны быть не могут
                    if (weights[(int)this.HighCard] > (weights[(int)Other.HighCard]))
                    {
                        return 1;
                    }
                    else
                    {
                        return -1;
                    }
                }

            }
        }
예제 #6
0
 // Добавление бонуса типа "Последовательность" в список бонусов
 private void AddStreakBonus(CardList cards, int Position, int Streak)
 {
     BonusType bonusType;
     if (Streak == 3)
         bonusType = BonusType.BONUS_TERZ;
     else
     if (Streak == 4)
         bonusType = BonusType.BONUS_50;
     else
     {
         bonusType = BonusType.BONUS_100;
     }
     Bonus bonus = new Bonus(bonusType, cards[Position - Streak].Type, cards[Position - Streak].IsTrump, cards[Position - Streak].Suit);
     // Заполнение списка карт бонуса
     for (var i = Position - Streak; i < Position; i++)
         bonus.Cards.Add(cards[i]);
     AddBonusToList(bonus);
 }
예제 #7
0
 // Добавляет бонус в список, проверяя на старшенство
 private void AddBonusToList(Bonus bonus)
 {
     // Добавляем бонус в список
     list.Add(bonus);
     // Если это первый бонус в списке, то он и становится старшим
     if (SeniorBonus == null)
     {
         SeniorBonus = bonus;
     }
     else
     {
         // Если это не первый бонус, то сравниваем его со страшим, и заменяем, если он старше
         if (SeniorBonus.CompareTo(bonus) < 0)
             SeniorBonus = bonus;
     }
 }