Example #1
0
 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;
     }
 }
Example #2
0
    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(",");
    }