public void reproduction(string agent, int energy) { if (agent == "Hawk") { HawkManager hm = spawnPrefab(hawkPrefab).GetComponent <HawkManager>(); hm.energy = energy / 2; } else { DoveManager dm = spawnPrefab(dovePrefab).GetComponent <DoveManager>(); dm.energy = energy / 2; } }
public void Btn_Next_Click() { BroadcastMessage("Expiring"); for (int i = 0; i < System.Convert.ToInt32(foodNum.text); i++) { spawnPrefab(foodPrefab); } List <GameObject> foods = new List <GameObject>(); List <GameObject> hawks = new List <GameObject>(); List <GameObject> doves = new List <GameObject>(); List <GameObject> agents = new List <GameObject>(); foreach (GameObject go in GameObject.FindObjectsOfType(typeof(GameObject))) { if (go.name == "Food(Clone)") { foods.Add(go); } else if (go.name == "Hawk(Clone)") { hawks.Add(go); agents.Add(go); } else if (go.name == "Dove(Clone)") { doves.Add(go); agents.Add(go); } } Debug.Log(foods.Count()); while (agents.Count > 0) { if (foods.Count > 0) { if (agents.Count > 1) { int random1 = Random.Range(0, agents.Count - 1); GameObject agent1 = agents[random1]; agents.RemoveAt(random1); int random2 = Random.Range(0, agents.Count - 1); GameObject agent2 = agents[random2]; agents.RemoveAt(random2); if (hawks.Contains(agent1) && hawks.Contains(agent2)) { HawkManager hm = agent1.transform.GetComponent <HawkManager>(); hm.energy += (foodValueInt - baseReqInt); HawkManager hm2 = agent2.transform.GetComponent <HawkManager>(); hm2.energy -= (injuryInt + baseReqInt); } else if (doves.Contains(agent1) && doves.Contains(agent2)) { DoveManager dm = agent1.transform.GetComponent <DoveManager>(); dm.energy += (foodValueInt - bluffingInt - baseReqInt); DoveManager dm2 = agent2.transform.GetComponent <DoveManager>(); dm2.energy -= (bluffingInt + baseReqInt); } else if (hawks.Contains(agent1) && doves.Contains(agent2)) { HawkManager hm = agent1.transform.GetComponent <HawkManager>(); hm.energy += (foodValueInt - baseReqInt); DoveManager dm = agent2.transform.GetComponent <DoveManager>(); dm.energy -= baseReqInt; } else { HawkManager hm = agent2.transform.GetComponent <HawkManager>(); hm.energy += (foodValueInt - baseReqInt); DoveManager dm = agent1.transform.GetComponent <DoveManager>(); dm.energy -= baseReqInt; } } else { if (hawks.Contains(agents[0])) { HawkManager hm = agents[0].transform.GetComponent <HawkManager>(); hm.energy += (foodValueInt - baseReqInt); } else { DoveManager dm = agents[0].transform.GetComponent <DoveManager>(); dm.energy += (foodValueInt - baseReqInt); } agents.RemoveAt(0); } int random3 = Random.Range(0, foods.Count() - 1); GameObject.DestroyImmediate(foods[random3]); foods.RemoveAt(random3); } else { foreach (GameObject go in agents) { if (hawks.Contains(go)) { HawkManager hm = go.transform.GetComponent <HawkManager>(); hm.energy -= baseReqInt; } else { DoveManager dm = go.transform.GetComponent <DoveManager>(); dm.energy -= baseReqInt; } } break; } } Debug.Log(foods.Count()); int howkCount = 0; int doveCount = 0; foreach (GameObject go in GameObject.FindObjectsOfType(typeof(GameObject))) { if (go.name == "Hawk(Clone)") { howkCount++; } else if (go.name == "Dove(Clone)") { doveCount++; } } Debug.Log(howkCount + "; " + doveCount); if (null == m_DataDiagram) { return; } int j = 0; foreach (GameObject l in lineList) { if (j == 0) { m_DataDiagram.InputPoint(l, new Vector2(1, (float)(howkCount / 10.0))); } else if (j == 1) { m_DataDiagram.InputPoint(l, new Vector2(1, (float)(doveCount / 10.0))); } else { m_DataDiagram.InputPoint(l, new Vector2(1, (float)((howkCount + doveCount) / 10.0))); } j++; } sb.Append(howkCount.ToString()).Append(","); sb.Append(doveCount.ToString()).Append(","); sb.Append((howkCount + doveCount).ToString()).Append(","); }