private void mainFormSettingsChanged(object sender, MineSweeperSettings settings)
        {
            _settings = settings;

            _runner.DisableSimulation();

            _setupNeeded = true;
        }
예제 #2
0
 public void Reset(MineSweeperSettings settings)
 {
     Width         = settings.DrawWidth;
     Image         = new Bitmap(Width, Height);
     _worstColor   = settings.WorstColor;
     _bestColor    = settings.BestColor;
     _neutralColor = settings.NeutralColor;
 }
        private void setupSpec(IMineSweeperSpec spec)
        {
            _setupNeeded = true;

            _spec     = spec;
            _settings = _spec.Settings;
            _spec.NextGenerationEnded += specNextGeneration;
            _spec.TickEnded           += specTickEnded;
        }
예제 #4
0
        private void btnResetClick(object sender, EventArgs e)
        {
            Settings = pnlSettings.GetNewSettings(Settings);
            pgMain.Reset(Settings);
            graphPopulation.Reset(Settings);
            statsGeneration.Reset(Settings);

            btnStartStop.Text = "Start";

            SettingsChanged.Raise <MineSweeperSettings>(this, Settings);
        }
예제 #5
0
 public void Reset(MineSweeperSettings settings)
 {
     _worstColor   = settings.WorstColor;
     _bestColor    = settings.BestColor;
     _neutralColor = settings.NeutralColor;
     setupLabels();
     lblAvgValue.Text   = "0";
     lblWorstValue.Text = "0";
     lblBestValue.Text  = "0";
     lblLastAvg.Text    = "(0.00)";
     lblLastWorst.Text  = "(0)";
     lblLastBest.Text   = "(0)";
 }
예제 #6
0
        public Main(MineSweeperSettings settings)
        {
            InitializeComponent();
            Icon = Shapes.TankIcon();

            DoubleBuffered = true;

            Settings = settings;

            UpdateDisplaySettings(Settings);
            pgMain.Reset(Settings);
            graphPopulation.Reset(Settings);
            statsGeneration.Reset(Settings);
        }
예제 #7
0
        public void DisplayCurrentSettings(MineSweeperSettings settings)
        {
            tbMaxSpeed.Text     = settings.MaxSpeed.ToString();
            tbMaxRotation.Text  = settings.MaxRotation.ToString();
            tbWidth.Text        = settings.DrawWidth.ToString();
            tbHeight.Text       = settings.DrawHeight.ToString();
            tbMutation.Text     = settings.MutationRate.ToString();
            tbCrossover.Text    = settings.CrossoverRate.ToString();
            tbPerturb.Text      = settings.MaxPerturbation.ToString();
            tbTicks.Text        = settings.Ticks.ToString();
            tbMine.Text         = settings.MineCount.ToString();
            tbSweepers.Text     = settings.SweeperCount.ToString();
            tbElites.Text       = settings.EliteCount.ToString();
            tbHiddenLayer.Text  = settings.HiddenLayers.ToString();
            tbHiddenNeuron.Text = settings.HiddenLayerNeurons.ToString();

            this.ForeColor = settings.BestColor;
        }
예제 #8
0
        public MineSweeperSettings GetNewSettings(MineSweeperSettings settings)
        {
            settings.SweeperCount    = getIntValue(tbSweepers, settings.SweeperCount);
            settings.MineCount       = getIntValue(tbMine, settings.MineCount);
            settings.MutationRate    = getDoubleValue(tbMutation, settings.MutationRate);
            settings.CrossoverRate   = getDoubleValue(tbCrossover, settings.CrossoverRate);
            settings.MaxPerturbation = getDoubleValue(tbPerturb, settings.MaxPerturbation);
            settings.Ticks           = getIntValue(tbTicks, settings.Ticks);
            settings.EliteCount      = getIntValue(tbElites, settings.EliteCount);

            settings.HiddenLayers       = getIntValue(tbHiddenLayer, settings.HiddenLayers);
            settings.HiddenLayerNeurons = getIntValue(tbHiddenNeuron, settings.HiddenLayerNeurons);

            settings.DrawWidth  = getIntValue(tbWidth, settings.DrawWidth);
            settings.DrawHeight = getIntValue(tbHeight, settings.DrawHeight);

            settings.MaxSpeed    = getDoubleValue(tbMaxSpeed, settings.MaxSpeed);
            settings.MaxRotation = getDoubleValue(tbMaxRotation, settings.MaxRotation);

            return(settings);
        }
예제 #9
0
 public void UpdateDisplaySettings(MineSweeperSettings settings)
 {
     Settings = settings;
     pnlSettings.DisplayCurrentSettings(Settings);
 }
예제 #10
0
        public void Update(IList <ICreature> creatures, IList <Tuple <ObjectType, IList <double> > > objects, MineSweeperSettings settings)
        {
            Image = new Bitmap(Width, Height);
            using (var graphics = Graphics.FromImage(Image))
            {
                var eliteSweeperPen = new Pen(_bestColor);
                var sweeperPen      = new Pen(_neutralColor);
                var minePen         = new Pen(Color.DarkGray);
                var blackPen        = new Pen(Color.Black);
                var redPen          = new Pen(Color.Maroon);

                // Elite Sweepers
                foreach (var sweeper in creatures.OrderByDescending(x => x.Fitness).Take(settings.EliteCount))
                {
                    drawSweeper(graphics, eliteSweeperPen, eliteSweeperPen.Brush, sweeper, settings.SweeperSize);
                }

                // Normal Sweepers
                foreach (var sweeper in creatures.OrderByDescending(x => x.Fitness).Skip(settings.EliteCount))
                {
                    drawSweeper(graphics, sweeperPen, sweeperPen.Brush, sweeper, settings.SweeperSize);
                }

                // Mines
                var mines = objects.Where(x => x.Item1 == ObjectType.Mine).Select(x => x.Item2);
                foreach (var mine in mines)
                {
                    drawMine(graphics, redPen, minePen.Brush, mine, settings.MineSize);
                }

                // ClusterMines
                var clusterMines = objects.Where(x => x.Item1 == ObjectType.ClusterMine).Select(x => x.Item2);
                foreach (var mine in clusterMines)
                {
                    drawMine(graphics, blackPen, sweeperPen.Brush, mine, settings.MineSize + 1);
                }

                // Holes
                var holes = objects.Where(x => x.Item1 == ObjectType.Hole).Select(x => x.Item2);
                foreach (var hole in holes)
                {
                    drawMine(graphics, redPen, redPen.Brush, hole, settings.MineSize + 1);
                }

                eliteSweeperPen.Dispose();
                sweeperPen.Dispose();
                minePen.Dispose();
                blackPen.Dispose();
                redPen.Dispose();
            }
        }