Ejemplo n.º 1
0
 public Turmit(TurmitRule rule, TurmiteMatrix matrix)
 {
     currentRule = rule;
     this.matrix = matrix;
     i = this.matrix.GetLength() / 2; k = i;
     currentState = 'A';
     currentDirection = Direction.North;
     MoveFunction[] moveFunctions = new MoveFunction[4]
     {
         new MoveFunction(MoveNorth),
         new MoveFunction(MoveSouth),
         new MoveFunction(MoveEast),
         new MoveFunction(MoveWest)
     };
     mapping.Add(Direction.East, moveFunctions[2]);
     mapping.Add(Direction.North, moveFunctions[0]);
     mapping.Add(Direction.South, moveFunctions[1]);
     mapping.Add(Direction.West, moveFunctions[3]);
 }
Ejemplo n.º 2
0
 static void Main(string[] args)
 {
     int automataID = GetAutomataID();
     int iterationCount = GetIterationCount();
     turmiteMatrix = new TurmiteMatrix(MATRIX_RANGE);
     crystalMatrix = new CrystalMapping(MATRIX_RANGE);
     if (automataID >= 0 && automataID <= 4)
     {
         switch (automataID)
         {
             case 0: crystal = new Crystal(crystalMatrix, 286); break;
             case 1: crystal = new Crystal(crystalMatrix, 324); break;
             case 2: crystal = new Crystal(crystalMatrix, 465); break;
             case 3: crystal = new Crystal(crystalMatrix, 501); break;
             case 4: crystal = new Crystal(crystalMatrix, 471); break;
         }
         IterateAutomata(crystal.GrowToNextIteration, iterationCount);
         SaveMatrixAsImage(crystalMatrix);
     }
     else
     {
         string ruleDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Rules\");
         TurmitRule turmiteRule = new TurmitRule();
         switch (automataID)
         {
             case 5: turmiteRule.ReadRuleFromFile(Path.Combine(ruleDir, @"Labirint.txt")); break;
             case 6: turmiteRule.ReadRuleFromFile(Path.Combine(ruleDir, @"Island.txt")); break;
             case 7: turmiteRule.ReadRuleFromFile(Path.Combine(ruleDir, @"Cross.txt")); break;
             default: turmiteRule.ReadRuleFromFile(Path.Combine(ruleDir, @"YellowSquare.txt")); break;
         }
         turmite = new Turmit(turmiteRule, turmiteMatrix);
         IterateAutomata(turmite.Move, iterationCount);
         SaveMatrixAsImage(turmiteMatrix);
     }
     Console.ReadLine();
 }
Ejemplo n.º 3
0
 static void SaveMatrixAsImage(TurmiteMatrix matrix)
 {
     Bitmap bitmap = new Bitmap(matrix.GetLength(), matrix.GetLength());
     for (int i = 0; i < matrix.GetLength(); i++)
         for (int k = 0; k < matrix.GetLength(); k++)
             bitmap.SetPixel(i, k, matrix.GetCellColor(i, k));
     Console.WriteLine(GetNewImageFileName());
     bitmap.Save(GetNewImageFileName(),System.Drawing.Imaging.ImageFormat.Bmp);
 }
Ejemplo n.º 4
0
        private void Form1_Load(object sender, EventArgs e)
        {
            crystalMatrix = new CrystalMapping(MATRIX_RANGE);
            turmiteMatrix = new TurmiteMatrix(MATRIX_RANGE);
            turmiteRule = new TurmitRule();
            canvas = automataPictureBox.CreateGraphics();
            automataType.SetSelected(0, true);

            this.closure = new Action<bool>((bool flag) =>
            {
                this.Invoke(new Action(() =>
                {
                    automataType.Enabled = flag;
                    automataName.Enabled = flag;
                    startIterationBtn.Enabled = flag;
                }));
            });
        }
Ejemplo n.º 5
0
 private void DrawMatrix(TurmiteMatrix matrix)
 {
     SolidBrush myBrush = new SolidBrush(System.Drawing.Color.White);
     for (int i = 0; i < matrix.GetLength(); i++)
     {
         for (int k = 0; k < matrix.GetLength(); k++)
         {
             Color cellColor = matrix.GetCellColor(i, k);
             myBrush.Color = cellColor;
             if (myBrush.Color != Color.Black)
                 canvas.FillRectangle(myBrush, new Rectangle(i * SCALE, k * SCALE, SCALE, SCALE));
         }
     }
     myBrush.Dispose();
 }