Esempio n. 1
0
        protected bool Step(HopOptions hopOptions, Func <Hop, bool> callback)
        {
            while (hopOptions.OptionAvailable)
            {
                Hop hop = hopOptions.CurrrentHop;
                UndoStack.Push(hop);

                if (callback(hop))
                {
                    return(false);
                }

                List <Hop> allowedHops = board.GetAllowedHops();
                bool       cont        = Step(new HopOptions(allowedHops), callback);

                if (!cont)
                {
                    return(false);
                }

                UndoStack.Pop();
                board.UndoHopPeg(hop);
                hopOptions.NextOptionIndex();
            }

            return(true);
        }
Esempio n. 2
0
        protected IEnumerable <Hop> Step(HopOptions hopOptions)
        {
            while (hopOptions.OptionAvailable)
            {
                Hop hop = hopOptions.CurrrentHop;
                UndoStack.Push(hop);
                yield return(hop);

                List <Hop> allowedHops = board.GetAllowedHops();

                foreach (Hop nextHop in Step(new HopOptions(allowedHops)))
                {
                    yield return(nextHop);
                }

                UndoStack.Pop();
                board.UndoHopPeg(hop);
                hopOptions.NextOptionIndex();
            }
        }