private void buttonSimulate_Click(object sender, EventArgs e) { int height = (int)numericUpDownHeight.Value; int width = (int)numericUpDownWidth.Value; int numberOfRounds = (int)numericUpDownRounds.Value; bool modelInTime = radioButtonTemporal.Checked; GameSymmetric game = radioButtonPrisonersDilemma.Checked ? new TrpsGame(10, 7, 0, 0) : new TrpsGame(10, 7, 0, 3); NeighbourhoodType neighbourhoodType = radioButtonMoore.Checked ? NeighbourhoodType.Moore : NeighbourhoodType.VonNeumann; Reselector reselector; if (radioButtonMax.Checked) { reselector = Reselector.Max; } else if (radioButtonReplicator.Checked) { if (neighbourhoodType == NeighbourhoodType.Moore) { reselector = Reselector.Replicator8; } else { reselector = Reselector.Replicator4; } } else { reselector = Reselector.Custom; } Lattice lattice = new Lattice(height, width, neighbourhoodType, game, reselector); using (Graphics graphics = picture.CreateGraphics()) { this.clear(graphics); if (modelInTime) { drawLattice(lattice, graphics); for (int n = 0; n < numberOfRounds; n++) { Thread.Sleep(500); lattice.NextRound(); drawLattice(lattice, graphics); } } else { lattice.PlayRounds(numberOfRounds); drawLattice(lattice, graphics); } } }
protected void simulateMultiple() { experimentNumber = (int)numericUpDownSimulations.Value; roundNumber = (int)numericUpDownRounds.Value; int height = (int)numericUpDownHeight.Value; int width = (int)numericUpDownWidth.Value; GameSymmetric game = radioButtonPrisonersDilemma.Checked ? new TrpsGame(10, 7, 0, 0) : new TrpsGame(10, 7, 0, 3); NeighbourhoodType neighbourhoodType = radioButtonMoore.Checked ? NeighbourhoodType.Moore : NeighbourhoodType.VonNeumann; Reselector reselector; if (radioButtonMax.Checked) { reselector = Reselector.Max; } else if (radioButtonReplicator.Checked) { if (neighbourhoodType == NeighbourhoodType.Moore) { reselector = Reselector.Replicator8; } else { reselector = Reselector.Replicator4; } } else { reselector = Reselector.Custom; } fraction = new List <double> [roundNumber + 1]; for (int round = 0; round < roundNumber + 1; round++) { fraction[round] = new List <double>(); } for (int experiment = 0; experiment < experimentNumber; experiment++) { Lattice lattice = new Lattice(height, width, neighbourhoodType, game, reselector); fraction[0].Add(lattice.RatioActionOne); for (int round = 1; round < roundNumber + 1; round++) { lattice.NextRound(); fraction[round].Add(lattice.RatioActionOne); } } }
protected void drawLattice(Lattice lattice, Graphics graphics) { for (int i = 0; i < lattice.Height; i++) { for (int j = 0; j < lattice.Width; j++) { if (lattice.player[i, j].ChosenAction == Action.One) { drawCell(i, j, Color.Red, graphics); } else { drawCell(i, j, Color.Yellow, graphics); } } } }
public NeighbourDeterminer(Lattice lattice) { this.Lattice = lattice; }
public NeighbourDeterminerMoore(Lattice lattice) : base(lattice) { }
public NeighbourDeterminerVonNeumann(Lattice lattice) : base(lattice) { }