Exemple #1
0
 // Use this for initialization
 IEnumerator Start()
 {
     // 親の数を求める
     Debug.Log(GeneManager.param.selectionMode);
     if (GeneManager.param.selectionMode == 0) parentNum = System.Math.Min(36, GeneManager.param.playerNum);
     else if (GeneManager.param.selectionMode == 1) parentNum = 10;
     else parentNum = (int)(GeneManager.param.playerNum * 0.2);
     // 偶数にしておく
     if (parentNum % 2 == 1) parentNum++;
     // input
     score = new int[parentNum];
     for (int i = 0; i < parentNum; i++)
     {
         score[i] = Random.Range(0, 50);
     }
     System.Array.Sort(score);
     System.Array.Reverse(score);
     GeneManager.Player[] players = new GeneManager.Player[GeneManager.param.playerNum];
     GeneManager.players.CopyTo(players, 0);
     System.Array.Sort (players,
         delegate(GeneManager.Player p1, GeneManager.Player p2) {
             return p2.score.CompareTo (p1.score);
         }
     );
     colorarray = new int[parentNum][];
     for (int i = 0; i < parentNum; i++) {
         int div = GeneManager.param.playFrame/30;
         colorarray[i] = new int[30];
         for (int j = 0; j < 30; j++)
         {
             //colorarray[i][j] = Random.Range(-1, 1+1);
             colorarray[i][j] = players[i].gene[j*div];
         }
     }
     //親の遺伝子集団の作成(並べるだけ)
     geneObject = new GameObject[parentNum];
     for (int i = 0; i < parentNum/2; i++)
     {
         geneObject[i] = new GameObject();
         geneObject[i] = Instantiate(element, new Vector3 (0, 0, i*15), Quaternion.identity) as GameObject;
         StartCoroutine(geneObject[i].GetComponent<AMGroup>().move(new Vector3(0, 0, (i-10)*15), 0f));
         geneObject[i].GetComponent<AMGroup>().setColor(colorarray[i]);
         geneObject[i].GetComponent<AMGroup> ().setScore (score[i]);
     }
     for (int i=parentNum/2; i<parentNum; i++){
         geneObject[i] = new GameObject();
         geneObject[i] = Instantiate(element, new Vector3 (320, 0, (i-parentNum/2)*15), Quaternion.identity) as GameObject;
         StartCoroutine(geneObject[i].GetComponent<AMGroup>().move(new Vector3(320, 0, (i-10-parentNum/2)*15), 0f));
         geneObject[i].GetComponent<AMGroup> ().setScore (score[i]);
         geneObject[i].GetComponent<AMGroup> ().setColor (colorarray [i]);
     }
     fatherarray = new int[TURN];
     motherarray = new int[TURN];
     for (int i = 0; i < TURN; i++) motherarray[i] = Random.Range(0, parentNum);
     for (int i = 0; i < TURN; i++) fatherarray[i] = Random.Range(0, parentNum);
     //交叉の開始
     yield return StartCoroutine ("cross");
     // カメラ移動テスト
     //yield return StartCoroutine(mcamera.move(mcamera.transform.position + new Vector3(0, 0, -500), 3f/vp.playSpeed));
     yield return new WaitForSeconds(3f/vp.playSpeed); // ちょっと待ってからSCに遷移
     SceneManager.LoadScene("SakeruCheese");
 }
Exemple #2
0
    // Use this for initialization
    IEnumerator Start()
    {
        // 親の数を求める
        Debug.Log(GeneManager.param.selectionMode);
        if (GeneManager.param.selectionMode == 0)
        {
            parentNum = System.Math.Min(36, GeneManager.param.playerNum);
        }
        else if (GeneManager.param.selectionMode == 1)
        {
            parentNum = 10;
        }
        else
        {
            parentNum = (int)(GeneManager.param.playerNum * 0.2);
        }
        // 偶数にしておく
        if (parentNum % 2 == 1)
        {
            parentNum++;
        }
        // input
        score = new int[parentNum];
        for (int i = 0; i < parentNum; i++)
        {
            score[i] = Random.Range(0, 50);
        }
        System.Array.Sort(score);
        System.Array.Reverse(score);
        GeneManager.Player[] players = new GeneManager.Player[GeneManager.param.playerNum];
        GeneManager.players.CopyTo(players, 0);
        System.Array.Sort(players,
                          delegate(GeneManager.Player p1, GeneManager.Player p2) {
            return(p2.score.CompareTo(p1.score));
        }
                          );
        colorarray = new int[parentNum][];
        for (int i = 0; i < parentNum; i++)
        {
            int div = GeneManager.param.playFrame / 30;
            colorarray[i] = new int[30];
            for (int j = 0; j < 30; j++)
            {
                //colorarray[i][j] = Random.Range(-1, 1+1);
                colorarray[i][j] = players[i].gene[j * div];
            }
        }
        //親の遺伝子集団の作成(並べるだけ)
        geneObject = new GameObject[parentNum];
        for (int i = 0; i < parentNum / 2; i++)
        {
            geneObject[i] = new GameObject();
            geneObject[i] = Instantiate(element, new Vector3(0, 0, i * 15), Quaternion.identity) as GameObject;
            StartCoroutine(geneObject[i].GetComponent <AMGroup>().move(new Vector3(0, 0, (i - 10) * 15), 0f));
            geneObject[i].GetComponent <AMGroup>().setColor(colorarray[i]);
            geneObject[i].GetComponent <AMGroup> ().setScore(score[i]);
        }
        for (int i = parentNum / 2; i < parentNum; i++)
        {
            geneObject[i] = new GameObject();
            geneObject[i] = Instantiate(element, new Vector3(320, 0, (i - parentNum / 2) * 15), Quaternion.identity) as GameObject;
            StartCoroutine(geneObject[i].GetComponent <AMGroup>().move(new Vector3(320, 0, (i - 10 - parentNum / 2) * 15), 0f));
            geneObject[i].GetComponent <AMGroup> ().setScore(score[i]);
            geneObject[i].GetComponent <AMGroup> ().setColor(colorarray [i]);
        }
        fatherarray = new int[TURN];
        motherarray = new int[TURN];
        for (int i = 0; i < TURN; i++)
        {
            motherarray[i] = Random.Range(0, parentNum);
        }
        for (int i = 0; i < TURN; i++)
        {
            fatherarray[i] = Random.Range(0, parentNum);
        }
        //交叉の開始
        yield return(StartCoroutine("cross"));

        // カメラ移動テスト
        //yield return StartCoroutine(mcamera.move(mcamera.transform.position + new Vector3(0, 0, -500), 3f/vp.playSpeed));
        yield return(new WaitForSeconds(3f / vp.playSpeed)); // ちょっと待ってからSCに遷移

        SceneManager.LoadScene("SakeruCheese");
    }