Exemplo n.º 1
0
        public void TestPerformanceOfGenAlgos_WithSize150x150_DoesNotThrow()
        {
            var       mazeGenAlgos = KnownMazesTypes.GetAllMazeAlgos();
            Stopwatch sw           = new Stopwatch();

            foreach (IMazeGenAlgorithm algo in mazeGenAlgos)
            {
                var maze = new TileMapMaze(150, 150);
                algo.SetCurrentMaze(maze);

                double[] tests = new double[10];
                for (int i = 10 - 1; i >= 0; i--)
                {
                    sw.Start();

                    algo.GenerateMazeWithTranformationList();

                    sw.Stop();
                    tests[i] = sw.ElapsedTicks;
                    sw.Reset();
                }

                var    testsEnumerable = tests.AsEnumerable <double>();
                double median          = testsEnumerable.Median();

                Log.Logger.Information($"GenerateMazeFullSize {algo.GetName()} {maze.GetWidth()}x{maze.GetHeight()} Elapsed={TimeSpan.FromTicks(((long)median))}");
            }
        }
Exemplo n.º 2
0
            private static async Task CreateImageAndGifForAlgoAsync(IMazeGenAlgorithm i)
            {
                var drawMaze = new TileMapMaze(55, 55);

                drawMaze.OverrideAllMazeFields(MazeFieldType.Wall);
                await CreateMazeImageAndGif(i).ConfigureAwait(false);
            }
Exemplo n.º 3
0
        private static async Task CreateMazeImageAndGif(IMazeGenAlgorithm i)
        {
            MazeBuilder mazeBuilder = new MazeBuilder();
            TileMapMaze drawMaze    = new TileMapMaze(60, 60);

            drawMaze.OverrideAllMazeFields();
            var maze = mazeBuilder
                       .SetMazeAlgorithm(i)
                       .SetDrawCallback(m =>
            {
                if (i is RecursiveDivision)
                {
                    //drawMaze.TransformMaze(m);
                    //MazeImageCreator.CreateMazeImage(drawMaze, i.GetName(), 10, "./");
                }
            })
                       .RecordMazeTransformationSteps(true)
                       .SetMazeDimensions(60, 60)
                       .Build();

            await MazeImageCreator.CreateMazeAnimationGifAsync(mazeBuilder.GetMazeTransformationSteps(), drawMaze, i.GetName(), 5).ConfigureAwait(false);

            MazeImageCreator.CreateMazeImage(maze, i.GetName(), 5, "./");

            Console.WriteLine($"Finished maze image and gif creation for algorithm={i.GetName()}.");
        }