// 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"); }
// 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"); }