public void Pause(Text buttonText) { SimulationDriver mainModule = GameObject.Find("CrustMesh").GetComponent <SimulationDriver>(); if (paused) { //Show "playing" UI buttonText.text = "Pause"; reEnergiseBtn.gameObject.SetActive(false); randDirectionBtn.gameObject.SetActive(false); seaLvlInputField.gameObject.SetActive(false); volFreqInputField.gameObject.SetActive(false); mainModule.PauseOrPlay(false, seaLvlInputField.text, volFreqInputField.text); } else { //Show "paused" UI buttonText.text = "Play"; reEnergiseBtn.gameObject.SetActive(true); randDirectionBtn.gameObject.SetActive(true); seaLvlInputField.gameObject.SetActive(true); volFreqInputField.gameObject.SetActive(true); mainModule.PauseOrPlay(true); } paused = !paused; }
private static Dictionary <int, long> ScoreSimulation(int gamesCount) { var rewards = new List <Reward> { Reward.Hundred, Reward.Twenty, Reward.Twenty, Reward.Five, Reward.Five, Reward.Five, Reward.Five, Reward.Five, Reward.GameOver, Reward.GameOver, Reward.GameOver, Reward.ExtraLife }; var additionalRewards = new List <AdditionalReward> { AdditionalReward.Twenty, AdditionalReward.Ten, AdditionalReward.Five, AdditionalReward.SecondChance }; var simulationDriver = new SimulationDriver(gamesCount, rewards, additionalRewards); double average = simulationDriver.Run(500_000, (i, avg) => Console.WriteLine($"Played {i} games, average score: {avg}")); Console.WriteLine($"Average score: {average}"); return(simulationDriver.ScoreStatistics); }
/// <summary> /// Scenario 2 is like scenario 1, but with very slow, fast drilling robots /// </summary> private static void scenario2() { Parallel.For(0, numRuns, (i) => { BatteryQualityGenerator g = new BatteryQualityGenerator(); SimulationDriver sim = new SimulationDriver() { stopCondition = (state) => { return(state.time >= 3600 * 24 * 365); //One year } }; var robots = new List <Robot> { new Robot(ThreadSafeRandom.NextNormalInt(5, 1), g.GetNext()), new Robot(ThreadSafeRandom.NextNormalInt(5, 1), g.GetNext()), new Robot(ThreadSafeRandom.NextNormalInt(5, 1), g.GetNext()), new Robot(ThreadSafeRandom.NextNormalInt(5, 1), g.GetNext()) }; robots.ForEach(r => { r.AvgMiningTime = 4; r.StdDevMiningTime = 1; }); var sites = new List <MiningSite> { new MiningSite(100), new MiningSite(110), new MiningSite(80), new MiningSite(100) }; State starting = new State() { baseStation = new BaseStation(4), robots = robots, sites = sites }; sim.world = starting; robots.ForEach(r => { sim.world.eventQueue.Enqueue(new AttemptChargingEnqueueEvent(r, starting.baseStation, 0), 0); }); sim.Run(); Console.WriteLine(starting.baseStation.oreMined); }); }
public void Save() { SimulationDriver mainModule = GameObject.Find("CrustMesh").GetComponent <SimulationDriver>(); mainModule.SaveMap(); }
public void Randomise() { SimulationDriver mainModule = GameObject.Find("CrustMesh").GetComponent <SimulationDriver>(); mainModule.RandomisePlateMovements(); }
public void ReEnergise() { SimulationDriver mainModule = GameObject.Find("CrustMesh").GetComponent <SimulationDriver>(); mainModule.ReEnergisePlates(); }