public void AddCrate(Crate k) { if (k != null) { _crates.Add(k); } else { throw new ArgumentNullException("crate"); } }
public override bool IsValidEmployeeLocation(Dir dir) { if (Forklift != null) { return(Forklift.Move(dir)); } else if (Crate != null) { return(Crate.Move(dir)); } else { return(true); } }
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)); } }
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; } } } }
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); }