Пример #1
0
    public void Update(float deltaTime)
    {
        if (running)
        {
            if (!AllCarsDead())
            {
                var bestBrain = FindBestBrain();
                if (bestBrain.Id != currentBrainController.Id)
                {
                    currentBrainController = bestBrain;
                    debug.Log("found a better car: " + currentBrainController.Id);
                }
            }
            else
            {
                debug.Log("All cars are dead!");
                debug.Log("Making a new generation!");
                var newBrains = MakeNewGenerationOfBrains(brainControllerList);
                SetupGenerationOfBrains(newBrains);
            }

            var sensorData = currentBrainController.GetSensorData();
            uiObject.SetSensorData(sensorData, "F2");
            uiObject.SetScoreText(currentBrainController.Score.ToString());
            uiObject.SetTurnText(currentBrainController.TurnOutput.ToString());
            uiObject.SetCarIdText(currentBrainController.Id);

            mainGameObject.CameraFollowCar(currentBrainController.CarObjectId, deltaTime);
        }
    }
Пример #2
0
    public int InstantiateCar(ICarBrainController brainController, bool manualControl)
    {
        var carGameObject = Instantiate(simpleCarPrefab, startPoint.position, startPoint.rotation);

        carGameObjectList.Add(carGameObject);
        var carObject = carGameObject.GetComponent <CarObject>();

        carObject.manualControl   = manualControl;
        carObject.BrainController = (CarBrainController)brainController;
        brainController.CarObject = carObject;
        carObjectList.Add(carObject);
        return(carGameObject.GetInstanceID());
    }
Пример #3
0
        public void Setup()
        {
            var uiObject = Substitute.For <IUiObject>();

            ga    = Substitute.For <IGeneticAlgorithm>();
            debug = Substitute.For <IDebug>();


            brain1 = Substitute.For <ICarBrainController>();
            brain2 = Substitute.For <ICarBrainController>();
            brain3 = Substitute.For <ICarBrainController>();
            brain4 = Substitute.For <ICarBrainController>();
            brain5 = Substitute.For <ICarBrainController>();

            mainGameObject = Substitute.For <IMainGameObject>();
            mainGameObject.CreateCarBrainController(Arg.Any <List <decimal> >()).Returns(brain1, brain2, brain3, brain4, brain5);

            controller = new GameController(debug, uiObject, ga, mainGameObject);

            controller.Init(5);
        }
Пример #4
0
    private void SetupGenerationOfBrains(List <ICarBrainController> newBrains)
    {
        foreach (var brain in brainControllerList)
        {
            mainGameObject.DestroyCarObject(brain.CarObjectId);
        }

        mainGameObject.ClearCarObjects();

        foreach (var brain in newBrains)
        {
            var carId = mainGameObject.InstantiateCar(brain, false);
            brain.CarObjectId = carId;
            brainControllerList.Add(brain);
        }

        //pick the first car to start watching
        if (brainControllerList.Count > 0)
        {
            currentBrainController = brainControllerList[0];
        }
    }