private void EnqueueInAllDirections(List <PointAndDirection> path, Point startPoint = null) { var currentPoint = startPoint ?? path.Last().point; var targetPoint = new PointAndDirection[4]; targetPoint[0] = currentPoint.Up(); targetPoint[1] = currentPoint.Right(); targetPoint[2] = currentPoint.Down(); targetPoint[3] = currentPoint.Left(); foreach (var p in priority) { var tp = targetPoint.First(pd => pd.direction == p); if (IsEnqueuable(tp.point)) { paths.Enqueue(CloneListAndAddElement(path, tp)); } } }
private List <PointAndDirection> CloneListAndAddElement(List <PointAndDirection> list, PointAndDirection el) { var result = list.Select(e => e).ToList(); result.Add(el); mazeEnqueued[el.point.y, el.point.x] = true; return(result); }
private List<PointAndDirection> CloneListAndAddElement(List<PointAndDirection> list, PointAndDirection el) { var result = list.Select(e => e).ToList(); result.Add(el); mazeEnqueued[el.point.y, el.point.x] = true; return result; }
private void EnqueueInAllDirections(List<PointAndDirection> path, Point startPoint = null) { var currentPoint = startPoint ?? path.Last().point; var targetPoint = new PointAndDirection[4]; targetPoint[0] = currentPoint.Up(); targetPoint[1] = currentPoint.Right(); targetPoint[2] = currentPoint.Down(); targetPoint[3] = currentPoint.Left(); foreach (var p in priority) { var tp = targetPoint.First(pd => pd.direction == p); if (IsEnqueuable(tp.point)) paths.Enqueue(CloneListAndAddElement(path, tp)); } }