Esempio n. 1
0
        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();
        }
Esempio n. 3
0
 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));
 }