static void Main(string[] args)
        {
            Garage garage = new Garage(2, 10);
            Random rnd    = new Random();

            Vechile[] vechiles = new Vechile[40];
            for (int i = 0; i < vechiles.Length; i++)

            {
                vechiles[i] = new Vechile()
                {
                    LicenseNo = "xteas" + i, Type = i % 2 == 0 ? VechileType.Car : VechileType.Bike, Model = "Model vechile" + i, Status = ParkingStatus.NotParked
                };
            }
            char c = ' ';

            while (c != 'C')
            {
                for (int i = 0; i < vechiles.Length; i++)
                {
                    if (vechiles[i].Status == ParkingStatus.NotParked)
                    {
                        garage.Park(vechiles[i]);
                    }
                    if (vechiles[i].IsReadyToExit())
                    {
                        garage.Exit(vechiles[i]);
                    }
                }
                Console.WriteLine("Press C to end the Simulation or press any other character to continue");
                c = Console.ReadLine()[0];
            }
        }
 public void Exit(Vechile vechile)
 {
     foreach (var level in _Levels)
     {
         if (level.HasVechile(vechile))
         {
             level.Exit(vechile);
             vechile.Status = ParkingStatus.NotParked;
             break;
         }
     }
 }
        public void Park(Vechile vechile)
        {
            bool carParked = false;

            foreach (var level in _Levels)
            {
                if (level.HasFreeSlot())
                {
                    ParkingSlot slot = level.GetNearestFreeSlot();
                    slot.OccupySlot(vechile);
                    Console.WriteLine(string.Format("{0} {1} parked at level {2} slot {3}", vechile.Model, vechile.Type.ToString(), level.LevelNumber, slot.SlotNumber));
                    Console.WriteLine();
                    carParked      = true;
                    vechile.Status = ParkingStatus.Parked;
                    vechile.CountDownForExit();
                    break;
                }
            }
            if (!carParked)
            {
                Console.WriteLine(string.Format("{0} {1} is rejected because there is no free space at the garage", vechile.Model, vechile.Type.ToString()));
                Console.WriteLine();
            }
        }
示例#4
0
 public bool IsOccupiedWith(Vechile vechile)
 {
     return(vechile == _Vechile);
 }
示例#5
0
 public void OccupySlot(Vechile vechile)
 {
     this._Vechile = vechile;
 }
示例#6
0
        public void Exit(Vechile vechile)
        {
            ParkingSlot slot = slots.Single(s => s.IsOccupiedWith(vechile));

            slot.FreeSlot();
        }
示例#7
0
 public bool HasVechile(Vechile vechile)
 {
     return(slots.Any(s => s.IsOccupiedWith(vechile)));
 }