Example #1
0
    // Update is called once per frame
    void Update()
    {
        mousePointer = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(mousePointer, out target, float.MaxValue))
        {
            TextMesh myText = textBox.GetComponent <TextMesh>();
            myText.text = "distance = " + target.distance;
            textBox.transform.position = target.transform.position;
            print("distance " + target.distance);
            try
            {
                Collider   col   = target.collider;
                GameObject per   = col.gameObject;
                Brains     brain = per.GetComponent <Brains>();
                textBox.transform.position = per.transform.position;
                myText.text = "Fitness = " + brain.fitness + "/n Food = " + brain.food;
            }
            catch (NullReferenceException)
            {
                Debug.Log("no person hit");
                //not over a person, don't worry about it
            }
        }
    }
Example #2
0
    /* The goal of this factory is to set up an actor's node tree in script so it's version controllable. */
    public static Actor ActorFactory(Brains brain = Brains.Player1)
    {
        PackedScene actorPs       = (PackedScene)GD.Load("res://Scenes/Prefabs/Actor.tscn");
        Node        actorInstance = actorPs.Instance();

        Actor actor = (Actor)actorInstance;

        Vector3 eyesPos = new Vector3(0, 2, 0);

        switch (brain)
        {
        case Brains.Player1:
            Node eyeInstance = Session.Instance("res://Scenes/Prefabs/Eyes.tscn");
            eyeInstance.Name = "Eyes";
            actor.eyes       = eyeInstance as Spatial;
            break;

        default:
            Spatial eyeSpat  = new Spatial();
            Node    eyesNode = eyeSpat as Node;
            eyesNode.Name = "Eyes";
            actor.eyes    = eyeSpat;
            break;
        }

        actor.eyes.Translate(eyesPos);
        actor.AddChild(actor.eyes);
        actor.Init(brain);
        return(actor);
    }
 private void Start()
 {
     m_brains = Brains.instance;
     m_brains.ChangeSubject   += OnSubjectFailed;
     SceneManager.sceneLoaded += OnSceneChanged;
     InitializeText();
 }
Example #4
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Example #5
0
    public void Init(Brains b = Brains.Player1)
    {
        InitChildren();
        this.brainType = b;
        switch (b)
        {
        case Brains.Player1:
            brain = (Brain) new ActorInputHandler(this, eyes);
            Session.session.player = this;
            break;

        case Brains.Ai:
            brain = (Brain) new Ai(this, eyes);
            break;

        case Brains.Remote:
            brain = null;
            break;
        }
        if (eyes != null)
        {
            eyes.SetRotationDegrees(new Vector3(0, 0, 0));
        }
        speaker = Speaker.Instance();
        AddChild(speaker);
        health = 100;
        InitInventory();
    }
Example #6
0
    /// <summary>
    /// 次の世代の個体を生成する
    /// </summary>
    private void GenPopulation()
    {
        var children   = new List <NNBrain>();
        var bestBrains = Brains.ToList();

        // エリート選択
        bestBrains.Sort(CompareBrains);
        if (EliteSelection > 0)
        {
            children.AddRange(bestBrains.Take(EliteSelection));
        }

#if UNITY_EDITOR
        if (SaveFilePath != null && SaveFilePath != "")
        {
            // もっともよい個体をセーブ
            var path = string.Format("Assets/LearningData/NE/{0}.json", SaveFilePath);
            bestBrains[0].Save(path);
        }
#endif

        // トーナメント選択
        while (children.Count < TotalPopulation)
        {
            var tournamentMembers = Brains.AsEnumerable().OrderBy(x => Guid.NewGuid()).Take(tournamentSelection).ToList();
            tournamentMembers.Sort(CompareBrains);
            children.Add(tournamentMembers[0].Mutate(Generation));
            children.Add(tournamentMembers[1].Mutate(Generation));
        }
        Brains = children;

        Generation++;
    }
Example #7
0
 public Actor(Brains b)
 {
     brainType = b;
     InitChildren();
     InitBrain(b);
     inventory = new Inventory();
     InitHand();
     id = -1;
 }
Example #8
0
 public Actor()
 {
     brainType = Brains.Ai;
     InitChildren();
     InitBrain(brainType);
     inventory = new Inventory();
     InitHand();
     id = -1;
 }
Example #9
0
        public void NoopRequestResultsInNoMovement()
        {
            Brains = new Brains(0);

            this
            .Given(x => x.PassengerSummonsElevatorOnFloor(0, DirectionOfTravel.Up))
            .Then(x => x.ElevatorDidNotMove())
            .BDDfy();
        }
Example #10
0
    public void Init(Brains b = Brains.Player1)
    {
        InitChildren();
        switch (b)
        {
        case Brains.Player1: brain = (Brain) new ActorInputHandler(this, eyes); break;

        case Brains.Ai: brain = (Brain) new Ai(this, eyes); break;
        }
    }
Example #11
0
 public Actor(Brains b)
 {
     brainType = b;
     InitChildren();
     InitBrain(b);
     inventory = new Inventory();
     InitHand();
     id    = -1;
     stats = new StatsManager();
 }
Example #12
0
 public void LoadStats(StatsManager stats)
 {
     GD.Print("Loading stats " + stats.GetFact(StatsManager.Facts.Name));
     hotbar = new HotBar(stats);
     if (hotbar != null && hotbar.EquipItem(0) != null)
     {
         DeferredEquipItem(hotbar.EquipItem(0));
     }
     this.stats = stats;
     Brains brain = (Brains)stats.GetStat(StatsManager.Stats.Brain);
 }
Example #13
0
    // Update is called once per frame
    void Update()
    {
        GameObject bestSim   = sims[0];
        Brains     bestBrain = sims[0].GetComponent <Brains>();

        foreach (GameObject s in sims.ToArray())
        {
            if (s.GetComponent <Brains>().age > Brains.maxAge)
            {
                //got old and died
                sims.Remove(s);
                Destroy(s);
            }

            else if (s.GetComponent <Brains>().fitness > bestBrain.fitness)
            {
                bestSim   = s;
                bestBrain = s.GetComponent <Brains>();
            }
        }

        foreach (GameObject s in sims.ToArray())
        {
            if (s.GetComponent <Brains>().hunger < 0 || s.GetComponent <Brains>().warmth < 0)
            {
                if (sims.Count < minPop)
                {
                    s.GetComponent <Brains>().clone(bestBrain);
                    s.GetComponent <Brains>().mutate();
                    s.GetComponent <Brains>().hunger = Brains.maxHunger / 2;
                    s.GetComponent <Brains>().warmth = Brains.maxWarmth / 2;
                    s.GetComponent <Brains>().happy  = 0;
                    s.GetComponent <Brains>().age    = 0;
                }
                else
                {
                    sims.Remove(s);
                    Destroy(s);
                }
            }
            makeBaby(s);
        }
        if (sims.Count < minPop)
        {
            GameObject newSpawn = Instantiate(simPrefab, new Vector3(Random.Range(2, size - 2), 2, Random.Range(2, size - 2)), Quaternion.identity);
            sims.Add(newSpawn);
            newSpawn.GetComponent <Brains>().clone(bestBrain);
            newSpawn.GetComponent <Brains>().mutate();
            newSpawn.GetComponent <Brains>().hunger = Brains.maxHunger / 2;
            newSpawn.GetComponent <Brains>().warmth = Brains.maxWarmth / 2;
            newSpawn.GetComponent <Brains>().happy  = 0;
            newSpawn.GetComponent <Brains>().age    = 0;
        }
    }
Example #14
0
 public void Execute()
 {
     Brains = new Brains(10);
     this
     .Given(x => x.PassengerSummonsElevatorOnFloor(0, DirectionOfTravel.Up))
     .And(x => x.WaitUntilElevatorReachesFloor(0))
     .And(x => x.PassengerChoosesFloor(5))
     .When(x => x.WaitUntilElevatorReachesFloor(5))
     .Then(x => x.ElevatorShouldHavePerformedStepsInOrder())
     .BDDfy();
 }
Example #15
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
         DontDestroyOnLoad(this.gameObject);
     }
     else
     {
         GameObject.Destroy(this.gameObject);
     }
 }
        // Here it seeks for brains, not head!!!
        public void Seek(Brains brains)
        {
            // doesn't work
            //while (!Equals(_location, brains.LocationCurrent))
            //{
            //    Thread.Sleep(1);
            //}
            // LocationCurrent
            var l = brains.Location;

            Move(l);
        }
Example #17
0
        public void SummonRequestGoingInOtherDirectionIsSkipped()
        {
            Brains = new Brains(10);

            this
            .Given(x => x.PassengerChoosesFloor(12))
            .And(x => x.PassengerSummonsElevatorOnFloor(5, DirectionOfTravel.Up))
            .And(x => x.PassengerChoosesFloor(15))
            .And(x => x.MoveToNextFloor())
            .And(x => x.MoveToNextFloor())
            .Then(x => x.CurrentFloorIs(15))
            .BDDfy();
        }
Example #18
0
        public void ClosestRequestedFloorIsSelected()
        {
            Brains = new Brains(10);

            this
            .Given(x => x.PassengerChoosesFloor(12))
            .And(x => x.PassengerChoosesFloor(18))
            .And(x => x.PassengerChoosesFloor(14))
            .And(x => x.MoveToNextFloor())
            .And(x => x.MoveToNextFloor())
            .Then(x => x.CurrentFloorIs(14))
            .BDDfy();
        }
Example #19
0
        public void RequestGoingUpIsSkippedWhenElevatorIsGoingDown()
        {
            Brains = new Brains(10);

            this
            .Given(x => x.PassengerChoosesFloor(8))
            .And(x => x.PassengerChoosesFloor(15))
            .And(x => x.PassengerChoosesFloor(5))
            .And(x => x.MoveToNextFloor())
            .And(x => x.MoveToNextFloor())
            .Then(x => x.CurrentFloorIs(5))
            .BDDfy();
        }
Example #20
0
    /* The goal of this factory is to set up an actor's node tree in script so it's version controllable. */
    public static Actor ActorFactory(Brains b = Brains.Player1)
    {
        PackedScene actor_ps       = (PackedScene)GD.Load("res://Scenes/Prefabs/Actor.tscn");
        Node        actor_instance = actor_ps.Instance();

        PackedScene eyes_ps       = (PackedScene)GD.Load("res://Scenes/Prefabs/Eyes.tscn");
        Node        eyes_instance = eyes_ps.Instance();

        actor_instance.AddChild(eyes_instance);

        Actor actor = (Actor)actor_instance;

        actor.Init(b);
        return(actor);
    }
Example #21
0
    public static Actor Factory(Brains brain = Brains.Player1, ActorData data = null)
    {
        Actor actor = new Actor(brain);

        if (data != null)
        {
            actor.LoadData(data);
            if (actor.id != -1)
            {
                actor.Name = "Actor" + actor.id;
            }
        }

        return(actor);
    }
Example #22
0
        public void Execute()
        {
            Brains = new Brains(0);

            this
            .Given(x => x.PassengerSummonsElevatorOnFloor(0, DirectionOfTravel.Up))
            .And(x => x.PassengerChoosesFloor(6))
            .And(x => x.PassengerSummonsElevatorOnFloor(4, DirectionOfTravel.Down))
            .And(x => x.PassengerSummonsElevatorOnFloor(10, DirectionOfTravel.Down))
            .And(x => x.Brains.MoveToNextFloor())
            .And(x => x.Brains.MoveToNextFloor())
            .And(x => x.Brains.MoveToNextFloor())
            .And(x => x.PassengerChoosesFloor(0))
            .And(x => x.Brains.MoveToNextFloor())
            .And(x => x.PassengerChoosesFloor(0))
            .When(x => x.WaitUntilElevatorStops())
            .Then(x => x.ElevatorShouldHavePerformedStepsInOrder())
            .BDDfy();
        }
Example #23
0
    public void InitBrain(Brains b)
    {
        this.brainType = b;
        switch (b)
        {
        case Brains.Player1:
            brain = (Brain) new ActorInputHandler(this);
            Session.session.player = this;
            break;

        case Brains.Ai:
            brain = (Brain) new StateAi(this);
            break;

        case Brains.Remote:
            brain = null;
            break;
        }
    }
Example #24
0
    internal void clone(Brains bestBrain)
    {
        if (bestBrain == null)
        {
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace();
            Debug.LogError(trace.ToString());
        }
        if (myBrain == null)
        {
            int[] layers = { 8, 8, 8, 8 };
            myBrain = new NeuralNetwork(layers);
            idle    = true;

            hunger = maxHunger / 2;
            warmth = maxWarmth / 2;
            happy  = 0;
            gold   = 0;

            workRemaining = 0;
        }
        myBrain.clone(bestBrain.myBrain);
    }
        public void Simulate()
        {
            var mess = new Mess();

            var zombie1 = new Zombie();

            var brains1 = new Brains();

            var zombie2 = new Zombie();

            var brains2 = new Brains();

            var bainss = new[] { brains1, brains2 };

            var zombies = new[] { zombie1, zombie2 };

            mess.Execute();

            for (int index = 0; index < 2; index++)
            {
                zombies[index].Seek(bainss[index]);
            }
        }
Example #26
0
    /// <summary>
    /// 初回起動時
    /// </summary>
    void Start()
    {
        // Brainの初期化
        if (LearningData != null)
        {
            // ランダムに初期化
            var originalBrain = NNBrain.Load(learningData);
            for (int i = 0; i < TotalPopulation; i++)
            {
                Brains.Add(new NNBrain(originalBrain));
            }
        }
        else
        {
            // ロードデータをそのままコピー
            for (int i = 0; i < TotalPopulation; i++)
            {
                Brains.Add(new NNBrain(InputSize, HiddenSize, HiddenLayers, OutputSize));
            }
        }

        // Agentの初期化
        for (int i = 0; i < NAgents; i++)
        {
            var obj = Instantiate(GObject, Vector3.forward * i * 15f, Quaternion.identity);
            obj.SetActive(true);
            var agent = obj.GetComponent <AirHockeyAgent>();
            if (i >= 5)
            {
                agent.NoRendering();
            }
            GObjects.Add(obj);
            Agents.Add(agent);
        }
        BestRecord = -9999;
        SetStartAgents();
    }
 private void Start()
 {
     m_carControl = GetComponent <UnityStandardAssets.Vehicles.Car.CarUserControl> ();
     m_brains     = FindObjectOfType <Brains> ();
 }
Example #28
0
 private void MoveToNextFloor()
 {
     Brains.MoveToNextFloor();
 }
 // Update is called once per frame
 void Update()
 {
     ToeTxt.text   = Toes.ToString() + "/" + TotalToes.ToString();
     BrainTxt.text = Brains.ToString() + "/" + TotalBrains.ToString();
     HeartTxt.text = Hearts.ToString() + "/" + TotalHearts.ToString();
 }