Ejemplo n.º 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.CancelAsync();

            int max      = WIDTH * HEIGHT;
            int humans   = getNumber(txtHumans, max);
            int mammoths = getNumber(txtMammoths, max);
            int stones   = getNumber(txtObstacles, max);
            int plants   = getNumber(txtPlants, max);

            environment.init(pnlContainer, WIDTH, HEIGHT);
            environment.initGrid(WIDTH, HEIGHT);
            environment.steps = 0;
            lblStep.Text      = "0";

            initParams();

            bool success = true;

            success &= environment.addRandom(new Human(environment), humans);
            success &= environment.addRandom(new Mammoth(environment), mammoths);
            success &= environment.addRandom(new Stone(environment), stones);
            success &= environment.addRandom(new Plant(environment), plants);

            chartDrawer = new ChartDrawer(pnlGraph, environment);

            if (!success)
            {
                environment = null;
                MessageBox.Show("Failed to initialize environment.");
            }
            else
            {
                environment.draw();
                chartDrawer.draw();

                environment.lastCounts  = "";
                environment.lastActions = "";
                showLastActions();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.CancelAsync();

            int max = WIDTH * HEIGHT;
            int humans = getNumber(txtHumans, max);
            int mammoths = getNumber(txtMammoths, max);
            int stones = getNumber(txtObstacles, max);
            int plants = getNumber(txtPlants, max);

            environment.init(pnlContainer, WIDTH, HEIGHT);
            environment.initGrid(WIDTH, HEIGHT);
            environment.steps = 0;
            lblStep.Text = "0";

            initParams();

            bool success = true;
            success &= environment.addRandom(new Human(environment), humans);
            success &= environment.addRandom(new Mammoth(environment), mammoths);
            success &= environment.addRandom(new Stone(environment), stones);
            success &= environment.addRandom(new Plant(environment), plants);

            chartDrawer = new ChartDrawer(pnlGraph, environment);

            if (!success)
            {
                environment = null;
                MessageBox.Show("Failed to initialize environment.");
            }
            else
            {
                environment.draw();
                chartDrawer.draw();

                environment.lastCounts = "";
                environment.lastActions = "";
                showLastActions();
            }
        }
        private void pnlGraph_Click(object sender, EventArgs e)
        {
            frminf = new Form();
            frminf.FormBorderStyle = FormBorderStyle.SizableToolWindow;
            frminf.Width = Screen.PrimaryScreen.Bounds.Width;
            frminf.Height = 240;
            bigPanel = new Panel();
            bigPanel.Width = frminf.ClientRectangle.Width;
            bigPanel.Height = frminf.ClientRectangle.Height;
            bigPanel.Left = 0;
            bigPanel.Top = 0;
            bigPanel.Paint += new PaintEventHandler(BigPanelPaint);
            frminf.Controls.Add(bigPanel);
            frminf.StartPosition = FormStartPosition.CenterScreen;
            frminf.Visible = true;
            frminf.Resize += new EventHandler(FormResize);

            bigChartDrawer = new ChartDrawer(bigPanel, environment);

            List<int[]> countData = environment.strategyCountHistory;
            int[] prevalence = new int[4];
            prevalence[0] = prevalence[1] = prevalence[2] = prevalence[3] = 0;
            int i = 0;
            foreach (int[] data in countData) {
                i = 0;
                Utils.getMax(data, ref i);
                prevalence[i]++;
            }
            int max = countData.Count;
            MessageBox.Show("Prevalences:\nCooperators:" + (100.0 / max * prevalence[0]) + "\nDefectors:" + (100.0 / max * prevalence[1]) + "\nPunishers:" + (100.0 / max * prevalence[2]) + "\nLoners:" + (100.0 / max * prevalence[3]));
        }