Esempio n. 1
0
 public Counter(LevelConfiguration lc)
 {
     Log = new Log(lc);
     foreach (var k in Keys)
     {
         Counts[k] = 0;
     }
 }
Esempio n. 2
0
        public Log(LevelConfiguration lc)
        {
            LevelConfiguration = lc;
            var logdir = "../../../logs";

            if (!System.IO.Directory.Exists(logdir))
            {
                System.IO.Directory.CreateDirectory(logdir);
            }
            LogName = $"{logdir}/{lc.GetStr()}.log";
            //WL($"Log created at: {LogName}");
        }
Esempio n. 3
0
 //w/h are the "real" version
 public Level(LevelConfiguration lc, int width, int height, Random rnd, int index)
 {
     LevelConfiguration = lc;
     TweakPicker        = lc.TweakPicker;
     Index  = index;
     Rnd    = rnd;
     Width  = width + 2;
     Height = height + 2;
     Segs   = new LinkedList <Seg>();
     Hits   = new HitManager(Width, Height, false, this);
     InitBoard();
 }
Esempio n. 4
0
        static void CreateLevel(LevelGenerationConfig config)
        {
            var levelstem = $"../../../output/{config.x}x{config.y}";
            var csvpath   = levelstem + "/results.csv";
            var csv       = new CsvWriter(csvpath);

            if (!System.IO.Directory.Exists(levelstem))
            {
                System.IO.Directory.CreateDirectory($"{levelstem}");
            }

            var runcount = 0;
            //var ws = new InitialWanderSetup(steplimit:2, startPoint:(1,1), gomax:true);
            var ws = new InitialWanderSetup();

            foreach (var tweakPicker in TweakPickers.GetPickers(config.tweakPickerName))
            {
                foreach (var el in config.genLimits)
                {
                    var os = new OptimizationSetup();
                    os.GlobalTweakLim = el;

                    foreach (var segPicker in SegPickers.GetSegPickers(config.segPickerName))
                    {
                        runcount++;

                        var lc  = new LevelConfiguration(tweakPicker, segPicker, os, ws);
                        var log = new Log(lc);

                        var rnd   = new System.Random(config.seed);
                        var level = new Level(lc, config.x, config.y, rnd, config.seed);

                        level.InitialWander(lc);

                        //bit awkward to do it here - it needs a better guarantee of finding the best seg.
                        segPicker.Init(config.seed, level);
                        tweakPicker.Init(config.seed);
                        var st         = Stopwatch.StartNew();
                        var tweakStats = level.RepeatedlyTweak(config.saveTweaks, config.saveEvery.Value, st);
                        var elapsed    = st.Elapsed;

                        //before doing any outputting, validate the level.
                        DoDebug(level, show: false, validateBoard: true);
                        AfterLevelGenerated(level, config, levelstem, lc, tweakStats, elapsed, csv, log, runcount);
                    }
                }
            }
        }
Esempio n. 5
0
        public static void AfterLevelGenerated(Level level, LevelGenerationConfig config, string levelstem, LevelConfiguration lc, TweakStats tweakStats, TimeSpan ts, CsvWriter csv, Log log, int runcount)
        {
            var repdata = GetReport(level, ts, tweakStats);
            var rep     = Report(repdata, multiline: true);

            log.Info(Report(repdata, multiline: false));
            SaveLevelAsText(level, config.seed);
            if (config.saveCsv)
            {
                csv.Write(repdata);
            }

            if (config.saveEmpty)
            {
                SaveEmpty(level, $"{levelstem}/{lc.GetStr()}-empty-{config.seed} {runcount}.png", subtitle: rep, quiet: true);
            }
            if (config.saveEmptyUpperCorner)
            {
                SaveEmpty(level, $"{levelstem}/{lc.GetStr()}-corner-{config.seed} {runcount}.png", subtitle: rep, quiet: true, corner: true);
            }
            if (config.saveWithPath)
            {
                SaveWithPath(level, $"{levelstem}/{lc.GetStr()}-path-{config.seed} {runcount}.png", subtitle: rep, quiet: true);
            }
            if (config.saveArrows)
            {
                SaveArrowVersions(level, config.seed, levelstem, config.arrowLengthMin);
            }
        }