Esempio n. 1
0
        /// <summary>
        /// Проверка корректности хода.
        /// </summary>
        /// <param name="card">первая помещаемая карта</param>
        /// <returns>true - ход корректен</returns>
        public override bool IsCorrectMove(Card card)
        {
            Card top = GetTopCard();

            if (top == null)
            {
                return(card.Value == CardValue.Ace);
            }

            // Карты одинакового цвета по возрастанию.
            bool isSameColor = !(top.IsRedSuit() ^ card.IsRedSuit());
            bool isNextCard  = (card.Value - top.Value) == 1;

            return(isSameColor && isNextCard);
        }
Esempio n. 2
0
        private bool IsCorrectMove(Card card, Card top)
        {
            // На пустую область можно ложить только короля.
            if (top == null)
            {
                return(card.Value == CardValue.King);
            }
            if (card.IsFaceDown || top.IsFaceDown)
            {
                return(false);
            }

            bool isAlternatingColor = (top.IsRedSuit() ^ card.IsRedSuit());
            bool isNextCard         = (card.Value - top.Value) == -1;

            return(isAlternatingColor && isNextCard);
        }