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); }