public TrafficLight(string label, StreetCross streetCross, String direction, int redTime, int greenTime, int lookingDistance, bool isGreenOn) { Label = label; ChangeLights(isGreenOn); _streetCross = streetCross; Direction = direction; RedTime = redTime; GreenTime = greenTime; CycleTime = redTime + greenTime; LookingDistance = lookingDistance; CarsInLookingDistance = new List <Car>(); TotalWaitingCars = new List <Car>(); }
public void CreateStreetCrossWeb() { _streetCrossWeb = new StreetCross[_numberOfColumns, _numberOfColumns]; for (int i = 0; i < _numberOfColumns; i++) { for (int j = 0; j < _numberOfColumns; j++) { string northLabel = $"{i}_{j}_north"; string eastLabel = $"{i}_{j}_east"; _streetCrossWeb[i, j] = new StreetCross(_decideTime); _streetCrossWeb[i, j].NorthernTrafficLight = new TrafficLight(northLabel, _streetCrossWeb[i, j], "north", _timeRedGreen, _timeRedGreen, _lookingDistance, true); _streetCrossWeb[i, j].EasternTrafficLight = new TrafficLight(eastLabel, _streetCrossWeb[i, j], "east", _timeRedGreen, _timeRedGreen, _lookingDistance, false); _streetCrossWeb[i, j].RefreshTrafficLights(); AddCars(_streetCrossWeb[i, j].NorthernTrafficLight, _numberOfCarsNorth); AddCars(_streetCrossWeb[i, j].EasternTrafficLight, _numberOfCarsEast); } } }
public void HandleStreetCross(StreetCross streetCross) { foreach (var trafficLight in streetCross.TrafficLights) { trafficLight.CheckCarsInLookingDistance(); Console.WriteLine($"[{trafficLight.Direction}] Number of total waiting cars: {trafficLight.TotalWaitingCars.Count}"); Console.WriteLine($"[{trafficLight.Direction}] Number of cars in looking distance: {trafficLight.CarsInLookingDistance.Count}"); Console.WriteLine($"[{trafficLight.Direction}] Green time: {trafficLight.GreenTime}"); Console.WriteLine($"[{trafficLight.Direction}] Red Time: {trafficLight.RedTime}"); trafficLight.CheckLightChange(); if (trafficLight.IsGreenOn) { trafficLight.RemoveCar(); } } if (_timeInSeconds % (streetCross.DecideTime) == 0) { switch (streetCross.CheckRatio()) { case 1: Console.WriteLine($"Zwiekszamy zielone w {streetCross.TrafficLights[0].Direction}"); streetCross.TrafficLights[0].IncreaseGreenTime(); streetCross.TrafficLights[1].IncreaseRedTime(); break; case -1: Console.WriteLine($"Zwiekszamy zielone w {streetCross.TrafficLights[1].Direction}"); streetCross.TrafficLights[1].IncreaseGreenTime(); streetCross.TrafficLights[0].IncreaseRedTime(); break; default: Console.WriteLine("Nic sie nie zmienilo."); break; } } }