示例#1
0
 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();
 }
示例#2
0
 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();
 }
示例#3
0
        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);
        }