public static List <Fight> PlayMultiple(int numberOfTimes, Fighter f1, Fighter f2, FightPlan fp1, FightPlan fp2, FightOptions options) { int perEach = numberOfTimes / 20; var results = new ConcurrentBag <List <Fight> >(); Parallel.For(0, 20, (i) => { FightTracker tracker = new FightTracker(f1, f2, fp1.Copy(), fp2.Copy(), options); List <Fight> resTemp = tracker.PlayFights(perEach); results.Add(resTemp); }); List <Fight> ret = results.SelectMany(fr => fr).ToList(); if (ret.Count < numberOfTimes) { int numSim = ret.Count - numberOfTimes; FightTracker tracker = new FightTracker(f1, f2, fp1.Copy(), fp2.Copy(), options); var v = tracker.PlayFights(numSim); foreach (var res in v) { ret.Add(res); } } return(ret); }
public void FightAll() { this.Results = new PivotFightResultSet[PivotGroup1.Count, PivotGroup2.Count]; int total = PivotGroup1.Count * PivotGroup2.Count; int processed = 0; for (int i = 0; i < PivotGroup1.Count; i++) { PivotFighter pf1 = PivotGroup1[i]; FighterFight ff1 = new FighterFight(pf1.GetStats(), pf1.FightPlan); for (int j = 0; j < PivotGroup2.Count; j++) { PivotFighter pf2 = PivotGroup2[j]; FighterFight ff2 = new Model.FighterFight(pf2.GetStats(), pf2.FightPlan); this.Results[i, j] = new PivotFightResultSet(FightTracker.PlayMultiple_ResultSet(this.NumberOfSimsEach, ff1, ff2, this.Options)); processed++; Debug.Print(String.Format("Pivot sim: {0} of {1}", processed, total)); } } SetBestWorstInRowColumn(); }
public static List <Fight> PlayMultiple(int numberOfTimes, FightTracker tracker) { return(PlayMultiple(numberOfTimes, tracker.Fighter1.Fighter, tracker.Fighter2.Fighter, tracker.Fighter1.FightPlan, tracker.Fighter2.FightPlan, tracker.Options)); }