コード例 #1
0
        public virtual void Kill()
        {
            float survivalLength = Count / Total;

            AddReward(2.5f * survivalLength * survivalLength);

            GameManager.RelativeSurvivalLength.Add(survivalLength);

            if (ReportStats)
            {
                StatsRecorder stats        = Academy.Instance.StatsRecorder;
                float         citizenCount = GameManager.NumberOfNormalCitizen + GameManager.NumberOfExtrovertedCitizen
                                             + GameManager.NumberOfIntrovertedCitizen;
                stats.Add("Collisions/Collisions", GameManager.CollisionsTotal / citizenCount);
                stats.Add("Collisions/Symptomatic", GameManager.CollisionsSymptomatic / citizenCount);
                stats.Add("Collisions/Not Symptomatic",
                          (GameManager.CollisionsTotal - GameManager.CollisionsSymptomatic) / citizenCount);
                stats.Add("Citizen/Susceptible at end", GameManager.GetCount(HealthStatus.Susceptible));
                stats.Add("Citizen/Recovered at end", GameManager.GetCount(HealthStatus.Recovered));
                stats.Add("Citizen/Relative survival length", GameManager.RelativeSurvivalLength.Average());

                foreach (HealthStatus healthStatus in Enum.GetValues(typeof(HealthStatus)))
                {
                    stats.Add($"Collisions/{healthStatus}", GameManager.Collisions[healthStatus] / citizenCount);
                }
            }

            EndEpisode();
            Destroy(gameObject);
        }
コード例 #2
0
        public void Start()
        {
            _gameManager            = FindObjectOfType <GameManager>();
            _gameManager.OnRefresh += (sender, e) => DrawGraph(_gameManager.GetCount(HealthStatus.Susceptible),
                                                               _gameManager.GetCount(HealthStatus.Infected), _gameManager.GetCount(HealthStatus.Recovered), _gameManager.HealedCounter);

            _gameManager.OnRestart += (sender, e) => Reset();
            _xAxis = transform.GetChild(0);
            _yAxis = transform.GetChild(1);
            _bars  = new List <GameObject>();
        }