Exemple #1
0
        private bool Step(int xPos, int yPos)
        {
            _currentIteration++;

            var currentSquare = _board.GetSquare(xPos, yPos);

            currentSquare.HasVisited = true;
            currentSquare.Value      = _currentIteration;

            Console.WriteLine(_board.Draw());

            if (_board.IsCovered())
            {
                _resultPath = new List <Square>();
                _resultPath.Add(_board.GetSquare(xPos, yPos));
                return(true);
            }

            var moves = _move.GetMove(currentSquare);

            foreach (var move in moves)
            {
                bool result = Step(move.X, move.Y);
                if (result)
                {
                    _resultPath.Add(currentSquare);
                    return(true);
                }
            }

            Console.WriteLine(_board.Draw());

            _currentIteration--;
            currentSquare.Value      = 0;
            currentSquare.HasVisited = false;
            return(false);
        }
 /// <summary>
 /// Search predicate.
 /// </summary>
 /// <param name="square">square</param>
 /// <returns>Returns true if a Square had visited.</returns>
 private bool Visited(Square s)
 {
     return(_board.GetSquare(s.X, s.Y).HasVisited);
 }