Ejemplo n.º 1
0
        private bool MoveCardsIfHasEmptySpaces(AcesUpRunContext context)
        {
            if (context.FaceUpCards.Top().Count() >= 4)
            {
                // No empty pile to move to...
                return(false);
            }

            ICardMovingStrategy movingStrategy = context.MovingStrategy;

            if (movingStrategy == null)
            {
                throw new NullReferenceException($"Invalid moving strategy!");
            }

            bool moved;
            bool changed = false;

            do
            {
                moved = movingStrategy.MoveCard(context);
                if (moved)
                {
                    changed = true;
                    PrintContext(context, "moved");
                }
            } while (moved && context.FaceUpCards.Top().Count() < 4);

            return(changed);
        }
Ejemplo n.º 2
0
 public AcesToEmptyPiles(ICardMovingStrategy fallback = null)
 {
     _fallback = fallback;
 }
Ejemplo n.º 3
0
 public MoveCardBasedOnDirectlyUnderTopCard(ICardMovingStrategy fallback = null)
 {
     _fallback = fallback;
 }
Ejemplo n.º 4
0
 public MoveFirstAvailableCardToEmptySpace(ICardMovingStrategy fallback = null)
 {
     _fallback = fallback;
 }