Пример #1
0
 public void AddCrate(Crate k)
 {
     if (k != null)
     {
         _crates.Add(k);
     }
     else
     {
         throw new ArgumentNullException("crate");
     }
 }
Пример #2
0
 public override bool IsValidEmployeeLocation(Dir dir)
 {
     if (Forklift != null)
     {
         return(Forklift.Move(dir));
     }
     else if (Crate != null)
     {
         return(Crate.Move(dir));
     }
     else
     {
         return(true);
     }
 }
Пример #3
0
 public override bool IsValidForkliftLocation(Dir dir)
 {
     if (Crate == null && Employee == null)
     {
         return(true);
     }
     else if (Employee != null)
     {
         Employee.Wake();
         return(false);
     }
     else
     {
         return(Crate.Move(dir));
     }
 }
Пример #4
0
        public void linkSpots(string[] maze)
        {
            Spot[,] spots = new Spot[maze.Length, getLongestLine(maze)];
            int x = 0;
            int y = 0;

            foreach (String line in maze)
            {
                y = 0;
                foreach (char symbol in line.ToCharArray())
                {
                    Spot spot = null;
                    switch (symbol)
                    {
                    case 'x':
                        spot = new Destination();
                        Destinations.Add((Destination)spot);
                        break;

                    case '.':
                        spot = new Floor();
                        break;

                    case 'o':
                        spot = new Floor();
                        Crate crate = new Crate(spot);
                        spot.ContainsItem = crate;
                        Crates.Add(crate);
                        break;

                    case '~':
                        spot = new Trap();
                        break;

                    case '@':
                        spot = new Floor();
                        Truck truck = new Truck(spot);
                        spot.ContainsItem = truck;
                        _truck            = truck;
                        break;

                    case '$':
                        spot = new Floor();
                        Colleague colleague = new Colleague(spot);
                        spot.ContainsItem = colleague;
                        _colleague        = colleague;
                        break;

                    case '#':
                        spot = new Wall();
                        break;

                    case '0':
                        spot = new Destination();
                        Destinations.Add((Destination)spot);
                        crate             = new Crate(spot);
                        spot.ContainsItem = crate;
                        Crates.Add(crate);
                        break;

                    case ' ':
                        spot         = new Floor();
                        spot.IsEmpty = true;
                        break;
                    }

                    spots[x, y] = spot;
                    y++;
                }
                x++;
            }

            for (int i = 0; i < spots.GetLength(0); i++)
            {
                for (int j = 0; j < spots.GetLength(1); j++)
                {
                    Spot spot = spots[i, j];

                    if (spot == null)
                    {
                        continue;
                    }

                    spot.UpSpot    = getSpot(spots, i - 1, j);
                    spot.RightSpot = getSpot(spots, i, j + 1);
                    spot.DownSpot  = getSpot(spots, i + 1, j);
                    spot.LeftSpot  = getSpot(spots, i, j - 1);

                    if (i == 0 && j == 0)
                    {
                        _first = spot;
                    }
                }
            }
        }
Пример #5
0
        private List <BaseField> procesLine(string lineString, int y)
        {
            List <BaseField> fieldLine     = new List <BaseField>();
            BaseField        previousField = null;

            for (int x = 0; x < lineString.Length; x++)
            {
                // nieuw Vakje object maken
                BaseField field;

                switch (lineString[x])
                {
                case '#':
                    field = new WallField();
                    break;

                case '@':
                case 'o':
                case '.':
                    field = new FloorField();
                    break;

                case 'x':
                    field = new TargetField();
                    break;

                case ' ':
                    field = new EmptyField();
                    break;

                default:
                    throw new Exception_MazeIncorrectFileFormat(lineString[x]);
                }

                // koppelen met Vakje op dezelfde regel
                if (previousField != null)
                {
                    field.FieldToLeft          = previousField;
                    previousField.FieldToRight = field;
                }
                previousField = field;
                fieldLine.Add(field);

                // truck toevoegen en koppelen, indien nodig
                if (lineString[x] == '@')
                {
                    Truck newTruck = new Truck(field);
                    _maze.TheTruck = newTruck;
                    ((FloorField)field).Place(newTruck);
                }

                // krat toevoegen en koppelen, indien nodig
                if (lineString[x] == 'o')
                {
                    Crate newCrate = new Crate(field);
                    _maze.AddCrate(newCrate);
                    ((FloorField)field).Place(newCrate);
                }
            }
            return(fieldLine);
        }