// 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 } } }
/* 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(); }
private void Awake() { if (instance == null) { instance = this; } }
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(); }
/// <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++; }
public Actor(Brains b) { brainType = b; InitChildren(); InitBrain(b); inventory = new Inventory(); InitHand(); id = -1; }
public Actor() { brainType = Brains.Ai; InitChildren(); InitBrain(brainType); inventory = new Inventory(); InitHand(); id = -1; }
public void NoopRequestResultsInNoMovement() { Brains = new Brains(0); this .Given(x => x.PassengerSummonsElevatorOnFloor(0, DirectionOfTravel.Up)) .Then(x => x.ElevatorDidNotMove()) .BDDfy(); }
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; } }
public Actor(Brains b) { brainType = b; InitChildren(); InitBrain(b); inventory = new Inventory(); InitHand(); id = -1; stats = new StatsManager(); }
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); }
// 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; } }
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(); }
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); }
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(); }
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(); }
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(); }
/* 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); }
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); }
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(); }
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; } }
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]); } }
/// <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> (); }
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(); }