Ejemplo n.º 1
0
            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));
                    }
                }
            }
Ejemplo n.º 2
0
            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);
            }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
            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));
                }
            }