StartRace() public method

public StartRace ( ) : void
return void
Exemplo n.º 1
0
        public void Register_NonRegisterState_ReturnsCode()
        {
            _raceManager.StartRace();
            var response = _raceManager.Register("1.1.1.1");

            Assert.Equal(-1, response);
        }
Exemplo n.º 2
0
 public void Play(List <string> trackNames)
 {
     ResetPlay();
     AddPlayers(false);
     raceManager.SetViewSettings(RaceManager.ViewType.AICarView, false);
     liveViewCamera.gameObject.SetActive(false);
     activeRoutines.Add(StartCoroutine(raceManager.StartRace(false, trackNames, true, false)));
     racingCanvasController.wasChallenging = false;
 }
Exemplo n.º 3
0
 private void btnStartRace_Click(object sender, EventArgs e)
 {
     Race.LapDistance  = nmrLapDistance.Value;
     Race.LapNumber    = nmrNumLaps.Value;
     Race.WinnersCount = nmrNumWinners.Value;
     lblTime.Text      = _rm.Start.ToString();
     _rm.StartRace();
 }
Exemplo n.º 4
0
 public void PlaceBet()
 {
     wagerType     = wagers.GetWagerType();
     picks         = rsd.GetSelectedRacers();
     amountWagered = spinner.currentValue;
     raceManager.StartRace();
     wagerPanel.SetActive(false);
 }
Exemplo n.º 5
0
 // Update is called once per frame
 void Update()
 {
     if (Input.touchCount > _tapCount || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))
     {
         RaceManager.StartRace();
         Destroy(this.gameObject);
     }
     else if (Input.touchCount < _tapCount)
     {
         _tapCount = Input.touchCount;
     }
 }
Exemplo n.º 6
0
        public JsonResult StartRace()
        {
            _logger.LogInformation("GET /StartRace");
            try
            {
                string failPrefix = "StartRace fail: ";
                ResponseObject.Start startResponse = new ResponseObject.Start
                {
                    raceStartCountdownDuration = _raceManager.RaceStartCountdownDuration,
                };

                if (_raceManager.GetParticipants().Count == 0)
                {
                    startResponse.responseMessage = failPrefix + "no lap timers registered.";
                }
                else
                {
                    bool success = _raceManager.StartRace();
                    if (success)
                    {
                        startResponse.responseMessage = "success";
                    }
                    else
                    {
                        startResponse.responseMessage = failPrefix + "cannot start race in state " + _raceManager.GetRaceState().ToString();
                    }
                }

                return(Json(startResponse));
            }
            catch (Exception error)
            {
                _logger.LogError("RaceTimer/StartRace Exception: " + error.Message);
                ResponseObject.Start startResponse = new ResponseObject.Start
                {
                    responseMessage            = error.Message,
                    raceStartCountdownDuration = _raceManager.RaceStartCountdownDuration
                };

                return(new JsonResult(startResponse)
                {
                    StatusCode = (int)HttpStatusCode.BadRequest
                });
            }
        }
Exemplo n.º 7
0
 public void stRace()
 {
     rm.StartRace();
 }
Exemplo n.º 8
0
    // train the neural networks environment
    IEnumerator Train()
    {
        bool complexify = true;
        int  index      = 0;

        // Create the initial neural networks
        generationNetworks = ga.CreateNetworks();
        raceManager.Reset();

        FitnessTracker.totLength = 0;
        for (int i = 0; i < LoadTrackManager.instance.selectedTrackNames.Count; i++)
        {
            trackManagers.Add(Instantiate(trackPrefab).GetComponent <TrackManager>());
            trackManagers[i].Initialize(LoadTrackManager.instance.selectedTrackNames[i]);
            trackManagers[i].gameObject.SetActive(false);
        }
        TrackManager.SetTotalLength();

        // Training loop. Keep the training running as long as desired.
        while (true)
        {
            // This pauses the training
            yield return(StartCoroutine(Pause()));

            fitnesses.Clear();
            float sum = 0;

            // add all new networks to the networks list
            raceManager.ResetPlayers();
            for (int individual = 0; individual < generationNetworks.Count; individual++)
            {
                raceManager.AddAIPlayer(individual.ToString(), generationNetworks[individual], individual);
            }
            raceManager.FinishPlayers(generationNetworks.Count);
            yield return(StartCoroutine(raceManager.StartRace(true, trackManagers, false)));

            // Get the fitnesses of the networks and calculate the sum of all fitnesses
            fitnesses = raceManager.GetFitnesses();
            int  bestRacerIndex = 0;
            bool updateTime     = false;
            for (int i = 0; i < fitnesses.Count; i++)
            {
                if (fitnesses[i] >= bestFitnessSoFar)
                {
                    bestFitnessSoFar = fitnesses[i];
                    bestRacerIndex   = i;
                    updateTime       = true;
                    bestGeneration   = curGeneration;
                }

                if (fitnesses[i] < 0)
                {
                    fitnesses[i] = 0;
                }
                sum += fitnesses[i];
            }
            float currentBestFitness = 0;
            for (int i = 0; i < fitnesses.Count; i++)
            {
                if (fitnesses[i] >= currentBestFitness)
                {
                    currentBestFitness = fitnesses[i];
                }
            }

            curGeneration++;

            // Restart the simulation if non of the cars has a fitness higher than 0
            if (sum == 0)
            {
                curGeneration = 0;
                InitializeNetworks();
                generationNetworks = ga.CreateNetworks();
                continue;
            }
            float totalTime = raceManager.GetCurrentCompetingCars()[bestRacerIndex].totalTime;
            if (raceManager.GetCurrentCompetingCars()[bestRacerIndex].GetFitnessTracker().finished != LoadTrackManager.instance.selectedTrackNames.Count)
            {
                totalTime = -1;
            }

            // Update the best and average fitness on the UI
            UIController.instance.UpdateUI(bestFitnessSoFar, currentBestFitness, sum / ga.populationSize, curGeneration, totalTime, updateTime);

            // Determine the population for the next generation based on the fitnesses of the current networks
            generationNetworks = ga.DoGeneration(fitnesses, complexify);

            index++;
            if (index > 50)
            {
                index = 0;
                if (complexify && Random.Range(0f, 1f) < 0.3f)
                {
                    complexify = !complexify;
                }
                else if (!complexify)
                {
                    complexify = true;
                }
            }
        }
    }