Exemple #1
0
    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;
    }
Exemple #2
0
        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);
        }
Exemple #3
0
        /// <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);
            });
        }
Exemple #4
0
    public void Save()
    {
        SimulationDriver mainModule = GameObject.Find("CrustMesh").GetComponent <SimulationDriver>();

        mainModule.SaveMap();
    }
Exemple #5
0
    public void Randomise()
    {
        SimulationDriver mainModule = GameObject.Find("CrustMesh").GetComponent <SimulationDriver>();

        mainModule.RandomisePlateMovements();
    }
Exemple #6
0
    public void ReEnergise()
    {
        SimulationDriver mainModule = GameObject.Find("CrustMesh").GetComponent <SimulationDriver>();

        mainModule.ReEnergisePlates();
    }