Пример #1
0
        protected List <Droid> visitNeighbors(Droid droid)
        {
            var neighbors = new List <Droid>();

            var north = new Point(droid.loc.x, droid.loc.y + 1);
            var south = new Point(droid.loc.x, droid.loc.y - 1);
            var east  = new Point(droid.loc.x + 1, droid.loc.y);
            var west  = new Point(droid.loc.x - 1, droid.loc.y);

            visit(neighbors, droid, north, Direction.North);
            visit(neighbors, droid, south, Direction.South);
            visit(neighbors, droid, east, Direction.East);
            visit(neighbors, droid, west, Direction.West);

            return(neighbors);
        }
Пример #2
0
        protected void visit(List <Droid> neighbors, Droid droid, Point point, Direction dir)
        {
            if (visited.ContainsKey(point))
            {
                return;
            }

            var copy   = new Droid(droid);
            var result = copy.move(dir);

            visited[point] = result;

            if (result == Status.System)
            {
                oxygenSystem = point;
            }

            if (result == Status.Empty)
            {
                neighbors.Add(copy);
            }
        }
Пример #3
0
 public Droid(Droid copy)
 {
     this.machine = new Machine(copy.machine, this);
     this.loc     = new Point(copy.loc.x, copy.loc.y);
 }