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])); }