public static void Initialization() { Car = new List <Cars>(); Deleter = new List <BaseClass>(); R = new Random(DateTime.Now.Millisecond); TrafficLights = new TrafficLight[4]; RightTurn = new RightTurn(); LeftTurn = new LeftTurn(); MoveTimer = new Timer { Interval = 10 }; MoveTimer.Tick += (sender, e) => Update(); GenCarTimer = new Timer { Interval = speedest * 1000 }; GenCarTimer.Tick += (sender, e) => GenerateCar_Tick(); WorkTimer = new Timer { Interval = 1000 }; WorkTimer.Tick += (sender, e) => Work_tick(); LightsTimer = new Timer { Interval = LightsInterval1 }; LightsTimer.Tick += (sender, e) => TrafficLight.SwitchLight(); }
public static void Update() { CurrentlyCarCount.Text = Car.Count.ToString(); //Логика работы foreach (var c in Car) { if (Cars.Check(c)) { c.Speed = 0; } else { c.Speed = Cars.CanMove(c); if (c.Turn == CTurn.Right) { RightTurn.StartTurn(c); } else if (c.Turn == CTurn.Left) { LeftTurn.StartTurn(c); } } Move(c); if (c.X < -50 || c.X > UserPanel.Width + 50 || c.Y < -50 || c.Y > UserPanel.Height + 50) { Deleter.Add(c); } } if (Deleter.Count != 0) { foreach (var d in Deleter) { if (d is Cars) { Car.Remove((Cars)d); } } } UserPanel.Invalidate(); }
public static void Write(CounterSettings settings) { var tiles = new HashSet <Tile>(); var seed = new Seed(settings); tiles.UnionWith(seed.Tiles); var rightWall = new RightWall(settings); tiles.UnionWith(rightWall.Tiles); var leftWall = new LeftWall(settings); tiles.UnionWith(leftWall.Tiles); var rightTurn = new RightTurn(settings); tiles.UnionWith(rightTurn.Tiles); var rightPreReaderRightCarry = new PreReaderRight(settings, true); tiles.UnionWith(rightPreReaderRightCarry.Tiles); var rightPreReaderRightNoCarry = new PreReaderRight(settings, false); tiles.UnionWith(rightPreReaderRightNoCarry.Tiles); var leftPreReaderFirst = new PreReaderLeft(settings, true); tiles.UnionWith(leftPreReaderFirst.Tiles); var leftPreReaderNth = new PreReaderLeft(settings, false); tiles.UnionWith(leftPreReaderNth.Tiles); var readerTiles = AddReaders(settings.BinaryDigitPatterns, settings.BaseK); tiles.UnionWith(readerTiles); var hookTiles = AddHooks(settings.BinaryDigitPatterns); tiles.UnionWith(hookTiles); var writerTiles = AddWriters(settings.BinaryDigitPatterns, Convert.ToInt32(settings.StoppingValue)); tiles.UnionWith(writerTiles); tiles.UnionWith(GetAllGadgets()); var tileSetName = $"base-{settings.BaseK}-counter-to-{settings.StoppingValue}"; var options = new TdpOptions(tileSetName, seed.Start.Name); var path = Utils.GetPath(); tiles = tiles.DistinctBy(t => t.Name).ToHashSet(); WriteOptions($"{path}{tileSetName}.tdp", options); WriteDefinitions($"{path}{tileSetName}.tds", tiles); }