Ejemplo n.º 1
0
    // 블록을 만들어 내고 가로 9칸, 세로 9칸에 배치한다.
    public void initialSetUp()
    {
        this.blocks = new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y]; // 그리드의 크기를 9×9로 한다.
        int color_index = 0;                                                  // 블록의 색 번호.

        Block.COLOR color = Block.COLOR.FIRST;

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)
        {     // 처음~마지막행
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)
            { // 왼쪽~오른쪽
              // BlockPrefab의 인스턴스를 씬에 만든다.
                GameObject   game_object = Instantiate(this.BlockPrefab) as GameObject;
                BlockControl block       = game_object.GetComponent <BlockControl>(); // 블록의 BlockControl 클래스를 가져온다.
                this.blocks[x, y] = block;                                            // 블록을 그리드에 저장한다.
                block.i_pos.x     = x;                                                // 블록의 위치 정보(그리드 좌표)를 설정한다.
                block.i_pos.y     = y;
                block.block_root  = this;                                             // 각 BlockControl이 연계할 GameRoot는 자신이라고 설정한다.
                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);          // 그리드 좌표를 실제 위치(씬의 좌표)로 변환
                block.transform.position = position;                                  // 씬의 블록 위치를 이동한다.
                block.setColor((Block.COLOR)color_index);                             // 블록의 색을 변경한다.
                                                                                      // 블록의 이름을 설정(후술)한다. 나중에 블록 정보 확인때 필요.
                                                                                      // block.setColor((Block.COLOR)color_index); // 주석처리혹은삭제한다.
                // 현재출현확률을바탕으로색을결정한다.
                color = this.selectBlockColor();
                block.setColor(color);

                block.name = "block(" + block.i_pos.x.ToString() + "," + block.i_pos.y.ToString() + ")";
                // 전체 색 중에서 임의로 하나의 색을 선택한다.
                color_index = Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
            }
        }
    }
Ejemplo n.º 2
0
    public void InitialSetUp()
    {
        this.blocks = new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
        int color_index = 0;

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)
        {
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)
            {
                // BlockPrefab의 인스턴스를 씬에 만든다
                GameObject   game_object = Instantiate(this.BlockPrefab) as GameObject;
                BlockControl block       = game_object.GetComponent <BlockControl>();
                this.blocks[x, y] = block;

                block.i_pos.x    = x;
                block.i_pos.y    = y;
                block.block_root = this;

                Vector2 position = BlockRoot.calcBlockPosition(block.i_pos);
                block.transform.position   = position;
                block.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
                block.SetColor((Block.COLOR)color_index);
                block.name = "block(" + block.i_pos.x.ToString() + ", " + block.i_pos.y.ToString() + ")";

                color_index = Random.Range(0, SizeManager.colorNum);
            }
        }
    }
Ejemplo n.º 3
0
    public void initialSetUp()
    {
        this.blocks = new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
        int color_index = 0;

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)
        {
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)
            {
                GameObject   game_object = Instantiate(this.BlockPrefab) as GameObject;
                BlockControl block       = game_object.GetComponent <BlockControl>();
                this.blocks[x, y] = block;

                block.i_pos.x = x;
                block.i_pos.y = y;

                block.block_root = this;

                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);

                block.transform.position = position;

                block.setColor((Block.COLOR)color_index);

                block.name = "block(" + block.i_pos.x.ToString() + "," + block.i_pos.y.ToString() + ")";

                color_index = Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
            }
        }
    }
Ejemplo n.º 4
0
    // 초기 배치.
    public void             initialSetUp()
    {
        // 블록 생성, 배치.

        this.blocks = new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];

        Block.COLOR color = Block.COLOR.FIRST;

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)
        {
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)
            {
                GameObject game_object = Instantiate(this.blockPrefab) as GameObject;

                BlockControl block = game_object.GetComponent <BlockControl>();

                this.blocks[x, y] = block;

                block.i_pos.x          = x;
                block.i_pos.y          = y;
                block.block_root       = this;
                block.leave_block_root = this.leave_block_root;

                //

                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);

                block.transform.position = position;

                color = this.selectBlockColor();
                block.setColor(color);

                // 하이어라키 뷰에서 위치를 확인하기 쉽게 블록의 좌표를 이름에 붙여 둔다.
                block.name = "block(" + block.i_pos.x.ToString() + "," + block.i_pos.y.ToString() + ")";
            }
        }

        //

        this.block_islands = new int[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)
        {
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)
            {
                this.block_islands[x, y] = -1;
            }
        }
    }
Ejemplo n.º 5
0
    // 블록을 만들어 내고, 가로 아홉 칸 세로 아홉 칸으로 배치.
    public void initialSetUp()
    {
        // 크기는 9×9로 한다.
        this.blocks =
            new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
        // 블록의 색 번호.
        int color_index = 0;

        Block.COLOR color = Block.COLOR.FIRST;


        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)
        {     // 처음행부터 시작행부터 마지막행까지.
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)
            { // 왼쪽 끝에서부터 오른쪽 끝까지.
             // BlockPrefab의 인스턴스를 씬 위에 만든다.
                GameObject game_object =
                    Instantiate(this.BlockPrefab) as GameObject;
                // 위에서 만든 블록의 BlockControl 클래스를 가져온다.
                BlockControl block = game_object.GetComponent <BlockControl>();
                // 블록을 칸에 넣는다.
                this.blocks[x, y] = block;
                // 블록의 위치 정보(그리드 좌표)를 설정.
                block.i_pos.x = x;
                block.i_pos.y = y;
                // 각 BlockControl이 연계하는 GameRoot는 자신이라고 설정.
                block.block_root = this;
                // 그리드 좌표를 실제 위치(씬 좌표)로 변환.
                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);
                // 씬 상의 블록 위치를 이동.
                block.transform.position = position;

                // 블록의 색을 변경.
                // block.setColor((Block.COLOR)color_index);
                // 지금의 출현 확률을 바탕으로 색을 결정한다.
                color = this.selectBlockColor();
                block.setColor(color);

                // 블록의 이름을 설정(후술).
                block.name = "block(" + block.i_pos.x.ToString() +
                             "," + block.i_pos.y.ToString() + ")";
                // 모든 종류의 색 중에서 임의로 한 색을 선택.
                color_index =
                    Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
            }
        }
    }
    // ブロックを作り出して、横9ます、縦9マスに配置
    public void initialSetUp()
    {
        // マス目のサイズを9×9にする
        this.blocks = new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
        // ブロックの色番号
        int color_index = 0;

        Block.COLOR color = Block.COLOR.FIRST;

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)     // 先頭行から最終行まで
        {
            for (int x = 0; x < Block.BLOCK_NUM_X; x++) // 左端から右端まで
            {
                // BlockPrefabのインスタンスをシーン上に作る
                GameObject game_object = Instantiate(this.BlockPrefab) as GameObject;
                // 上で作ったブロックのBlockControlクラスを取得
                BlockControl block = game_object.GetComponent <BlockControl>();
                // ブロックをマス目に格納
                this.blocks[x, y] = block;

                // ブロックの位置情報(グリッド座標)を設定
                block.i_pos.x = x;
                block.i_pos.y = y;
                // 各BlockControlが連携するGameRootは自分だと設定
                block.block_root = this;

                // グリッド座標を実際の位置(シーン上の座標)に変換
                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);
                // シーン上のブロックの位置を移動
                block.transform.position = position;

                // 今の出現確率に基づいて色を決める
                color = this.selectBlockColor();
                block.setColor(color);
                // ブロックの名前を設定(後述)
                block.name = "block(" + block.i_pos.x.ToString() + "," + block.i_pos.y.ToString() + ")";

                // 全種類の色の中から、ランダムに1色を選択
                color_index = Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
            }
        }
    }
Ejemplo n.º 7
0
    // 블록을 만들어 내고, 가로9칸 세로9칸에 배치.
    public void initialSetUp()
    {
        // 그리드의 크기를 9×9로 한다.
        this.blocks =
            new BlockControl [Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
        // 블록의 색 번호.
        int color_index = 0;

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)          // 처음부터 마지막행까지.
        {
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)      // 왼쪽부터 오른쪽까지.
            // BlockPrefab의 인스턴스를 씬 상에 만든다.
            {
                GameObject game_object =
                    Instantiate(this.BlockPrefab) as GameObject;
                // 위에서 만든 블록의 BlockControl 클래스를 가져온다.
                BlockControl block = game_object.GetComponent <BlockControl>();
                // 블록을 그리드에 저장.
                this.blocks[x, y] = block;
                // 블록의 위치 정보(그리도 좌표)를 설정.
                block.i_pos.x = x;
                block.i_pos.y = y;
                // 각 BlockControl이 연계할 GameRoot는 자신이라고 설정.
                block.block_root = this;
                // 그리도 좌표를 실제 위치(씬 상의 좌표)로 변환.
                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);
                // 씬 상의 블록 위치를 이동.
                block.transform.position = position;
                // 블록의 색을 변경.
                block.setColor((Block.COLOR)color_index);
                // 블록의 이름을 설정(후술).
                block.name = "block(" + block.i_pos.x.ToString() +
                             "," + block.i_pos.y.ToString() + ")";
                // 전체 색 중에서 임의로 하나의 색을 선택.
                color_index =
                    Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
            }
        }
    }
    void    Start()
    {
        // 生成方块,进行配置

        this.blocks = new BlockControl[BLOCK_NUM_X, BLOCK_NUM_Y];

        int color_index = 0;

        for (int y = 0; y < BLOCK_NUM_Y; y++)
        {
            for (int x = 0; x < BLOCK_NUM_X; x++)
            {
                GameObject game_object = Instantiate(this.BlockPrefab) as GameObject;

                BlockControl block = game_object.GetComponent <BlockControl>();

                this.blocks[x, y] = block;

                //

                Vector3 position = block.transform.position;

                position.x = -(BLOCK_NUM_X / 2.0f - 0.5f) + x;
                position.y = -0.5f - y;

                block.transform.position = position;

                block.SetColor((BlockControl.COLOR)color_index);

                //

                color_index = Random.Range(0, (int)BlockControl.COLOR.NORMAL_COLOR_NUM);
            }
        }

        //
    }
Ejemplo n.º 9
0
 // 블록을 만들어 내고 가로 9칸 세로 9칸으로 배치한다.
 public void initialSetUp()
 {
     // 그리드 크기를 9×9로 한다.
     this.blocks =
         new BlockControl [Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
     // 블록의 색번호.
     int color_index = 0;
     for(int y = 0; y < Block.BLOCK_NUM_Y; y++) { // 선두행부터 마지막행까지.
         for(int x = 0; x < Block.BLOCK_NUM_X; x++) {// 왼쪽 끝부터 오른쪽 끝까지.
             // BlockPrefab의 인스턴스를 씬에 만든다.
             GameObject game_object =
                 Instantiate(this.BlockPrefab) as GameObject;
             // 위에서 만든 블록의 BlockControl 클래스 취득.
             BlockControl block = game_object.GetComponent<BlockControl>();
             // 블록의 칸에 자장.
             this.blocks[x, y] = block;
             // 블록의 위치 정보(그리드 좌표) 설정.
             block.i_pos.x = x;
             block.i_pos.y = y;
             // 각 BlockControl이 연계할 GameRoot는 자신이라고 설정.
             block.block_root = this;
             // 좌표를 실제 위치(씬 상의 위치)로 변환.
             Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);
             // 씬 상의 블록 위치를 이동.
             block.transform.position = position;
             // 블록의 색을 변경.
             block.setColor((Block.COLOR)color_index);
             // 블록의 이름을 설정(후술).
             block.name = "block(" + block.i_pos.x.ToString() +
                 "," + block.i_pos.y.ToString() + ")";
             // 모든 종류의 색 중에서 임의의 색을 하나 선택.
             color_index =
                 Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
         }
     }
 }
Ejemplo n.º 10
0
 // ブロックを作り出して、横9マス、縦9マスに配置.
 public void initialSetUp()
 {
     // マス目のサイズを9×9にする.
     this.blocks =
         new BlockControl [Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
     // ブロックの色番号.
     int color_index = 0;
     for(int y = 0; y < Block.BLOCK_NUM_Y; y++) { // 先頭行から最終行まで.
         for(int x = 0; x < Block.BLOCK_NUM_X; x++) {// 左端から右端まで.
             // BlockPrefabのインスタンスをシーン上に作る.
             GameObject game_object =
                 Instantiate(this.BlockPrefab) as GameObject;
             // 上で作ったブロックのBlockControlクラスを取得.
             BlockControl block = game_object.GetComponent<BlockControl>();
             // ブロックをマス目に格納.
             this.blocks[x, y] = block;
             // ブロックの位置情報(グリッド座標)を設定.
             block.i_pos.x = x;
             block.i_pos.y = y;
             // 各BlockControlが連携するGameRootは自分だと設定.
             block.block_root = this;
             // グリッド座標を実際の位置(シーン上の座標)に変換.
             Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);
             // シーン上のブロックの位置を移動.
             block.transform.position = position;
             // ブロックの色を変更.
             block.setColor((Block.COLOR)color_index);
             // ブロックの名前を設定(後述).
             block.name = "block(" + block.i_pos.x.ToString() +
                 "," + block.i_pos.y.ToString() + ")";
             // 全種類の色の中から、ランダムに1色を選択.
             color_index =
                 Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
         }
     }
 }
Ejemplo n.º 11
0
    public void initialSetUp(int _i) //임시
    {
        int _pattern = 0;
        int _Num     = 0;

        // 그리드의 크기를 9×9로 한다.
        this.blocks =
            new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];

        for (int y = 0; y < Block.BLOCK_NUM_Y; y++)
        {     // 처음~마지막행
            for (int x = 0; x < Block.BLOCK_NUM_X; x++)
            { // 왼쪽~오른쪽
              // BlockPrefab의 인스턴스를 씬에 만든다.
                GameObject game_object =
                    Instantiate(this.BlockPrefab) as GameObject;
                // 위에서 만든 블록의 BlockControl 클래스를 가져온다.
                BlockControl block =
                    game_object.GetComponent <BlockControl>();
                // 블록을 그리드에 저장한다.
                this.blocks[x, y] = block;
                // 블록의 위치 정보(그리드 좌표)를 설정한다.
                block.i_pos.x = x;
                block.i_pos.y = y;
                // 각 BlockControl이 연계할 GameRoot는 자신이라고 설정한다.
                block.block_root = this;
                // 그리드 좌표를 실제 위치(씬의 좌표)로 변환한다.
                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);
                // 씬의 블록 위치를 이동한다.
                block.transform.position = position;
                // 블록의 색을 변경한다.
                //block.setColor((Block.COLOR)color_index);

                // 현재 출현 확률을 바탕으로 색을 결정한다.
                //////////////////
                //color = this.selectBlockColor();
                //block.setColor(color);
                //////////////////

                // 블록의 이름을 설정(후술)한다. 나중에 블록 정보 확인때 필요.
                block.name = "block(" + block.i_pos.x.ToString() +
                             "," + block.i_pos.y.ToString() + ")";

                // 전체 색 중에서 임의로 하나의 색을 선택한다.
                /////////////////////////////
                //color_index =
                //Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
                /////////////////////////////

                //전체 패턴중에서 하나를 임의로 선택
                _pattern = Random.Range(0, 4);
                SpriteRenderer Pattern = BlockPrefab.GetComponentInChildren <SpriteRenderer>();

                if (_pattern >= 0 && _pattern < 1)
                {
                    Pattern.sprite = Spade;
                }
                else if (_pattern >= 1 && _pattern < 2)
                {
                    Pattern.sprite = Diamond;
                }
                else if (_pattern >= 2 && _pattern < 3)
                {
                    Pattern.sprite = Heart;
                }
                else if (_pattern >= 3 && _pattern < 4)
                {
                    Pattern.sprite = Clover;
                }

                _Num = Random.Range(0, 14);
                TextMesh Num = BlockPrefab.GetComponentInChildren <TextMesh>();
                if (_Num >= 0 && _pattern < 1)
                {
                    Num.text = "A";
                }
                if (_Num >= 1 && _pattern < 2)
                {
                    Num.text = "2";
                }
                if (_Num >= 2 && _pattern < 3)
                {
                    Num.text = "3";
                }
                if (_Num >= 3 && _pattern < 4)
                {
                    Num.text = "4";
                }
                if (_Num >= 4 && _pattern < 5)
                {
                    Num.text = "5";
                }
                if (_Num >= 5 && _pattern < 6)
                {
                    Num.text = "6";
                }
                if (_Num >= 6 && _pattern < 7)
                {
                    Num.text = "7";
                }
                if (_Num >= 7 && _pattern < 8)
                {
                    Num.text = "8";
                }
                if (_Num >= 8 && _pattern < 9)
                {
                    Num.text = "9";
                }
                if (_Num >= 10 && _pattern < 11)
                {
                    Num.text = "10";
                }
                if (_Num >= 11 && _pattern < 12)
                {
                    Num.text = "J";
                }
                if (_Num >= 12 && _pattern < 13)
                {
                    Num.text = "Q";
                }
                if (_Num >= 13 && _pattern < 14)
                {
                    Num.text = "K";
                }
            }
        }
    }
Ejemplo n.º 12
0
    // 초기 배치.
    public void initialSetUp()
    {
        // 블록 생성, 배치.

        this.blocks       = new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];

        Block.COLOR			color = Block.COLOR.FIRST;

        for(int y = 0;y < Block.BLOCK_NUM_Y;y++) {

            for(int x = 0;x < Block.BLOCK_NUM_X;x++) {

                GameObject game_object = Instantiate(this.blockPrefab) as GameObject;

                BlockControl	block = game_object.GetComponent<BlockControl>();

                this.blocks[x, y] = block;

                block.i_pos.x = x;
                block.i_pos.y = y;
                block.block_root = this;
                block.leave_block_root = this.leave_block_root;

                //

                Vector3	position = BlockRoot.calcBlockPosition(block.i_pos);

                block.transform.position = position;

                color = this.selectBlockColor();
                block.setColor(color);

                // 하이어라키 뷰에서 위치를 확인하기 쉽게 블록의 좌표를 이름에 붙여 둔다.
                block.name = "block(" + block.i_pos.x.ToString() + "," + block.i_pos.y.ToString() + ")";
            }
        }

        //

        this.block_islands = new int[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];

        for(int y = 0;y < Block.BLOCK_NUM_Y;y++) {

            for(int x = 0;x < Block.BLOCK_NUM_X;x++) {

                this.block_islands[x, y] = -1;
            }
        }
    }
Ejemplo n.º 13
0
    public void initialSetUp()
    {
        this.blocks = new BlockControl[Block.BLOCK_NUM_X,Block.BLOCK_NUM_Y];

        int color_index=0;

        for(int y=0; y<Block.BLOCK_NUM_Y; y++){
            for(int x=0;  x<Block.BLOCK_NUM_X; x++){

                GameObject game_object= Instantiate(this.BlockPrefab) as GameObject;

                BlockControl block =game_object.GetComponent<BlockControl>();

                this.blocks[x,y]=block;
                block.i_pos.x=x;
                block.i_pos.y=y;

                block.block_root=this;

                Vector3 position=BlockRoot.calcBlockPosition(block.i_pos);

                block.transform.position=position;
                block.setColor((Block.COLOR)color_index);

                block.name ="block(" + block.i_pos.x.ToString() +"," + block.i_pos.y.ToString() + ")";

                color_index=Random.Range(0,(int)Block.COLOR.NORMAL_COLOR_NUM);
            }
        }
    }
Ejemplo n.º 14
0
    // 初期配置する.
    public void initialSetUp()
    {
        // ブロックを生成、配置する.

        this.blocks       = new BlockControl[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];

        Block.COLOR			color = Block.COLOR.FIRST;

        for(int y = 0;y < Block.BLOCK_NUM_Y;y++) {

            for(int x = 0;x < Block.BLOCK_NUM_X;x++) {

                GameObject game_object = Instantiate(this.blockPrefab) as GameObject;

                BlockControl	block = game_object.GetComponent<BlockControl>();

                this.blocks[x, y] = block;

                block.i_pos.x = x;
                block.i_pos.y = y;
                block.block_root = this;
                block.leave_block_root = this.leave_block_root;

                //

                Vector3	position = BlockRoot.calcBlockPosition(block.i_pos);

                block.transform.position = position;

                color = this.selectBlockColor();
                block.setColor(color);

                // ヒエラルキービューで位置が確認しやすいよう、ブロックの座標を名前につけておく.
                block.name = "block(" + block.i_pos.x.ToString() + "," + block.i_pos.y.ToString() + ")";
            }
        }

        //

        this.block_islands = new int[Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];

        for(int y = 0;y < Block.BLOCK_NUM_Y;y++) {

            for(int x = 0;x < Block.BLOCK_NUM_X;x++) {

                this.block_islands[x, y] = -1;
            }
        }
    }
Ejemplo n.º 15
0
    // 블록을 만들어 내고, 가로 아홉 칸 세로 아홉 칸으로 배치.
    public void initialSetUp()
    {
        // 크기는 9×9로 한다.
        this.blocks =
            new BlockControl [Block.BLOCK_NUM_X, Block.BLOCK_NUM_Y];
        // 블록의 색 번호.
        int color_index = 0;

        Block.COLOR color = Block.COLOR.FIRST;

        for(int y = 0; y < Block.BLOCK_NUM_Y; y++) { // 처음행부터 시작행부터 마지막행까지.
            for(int x = 0; x < Block.BLOCK_NUM_X; x++) {// 왼쪽 끝에서부터 오른쪽 끝까지.
                // BlockPrefab의 인스턴스를 씬 위에 만든다.
                GameObject game_object =
                    Instantiate(this.BlockPrefab) as GameObject;
                // 위에서 만든 블록의 BlockControl 클래스를 가져온다.
                BlockControl block = game_object.GetComponent<BlockControl>();
                // 블록을 칸에 넣는다.
                this.blocks[x, y] = block;
                // 블록의 위치 정보(그리드 좌표)를 설정.
                block.i_pos.x = x;
                block.i_pos.y = y;
                // 각 BlockControl이 연계하는 GameRoot는 자신이라고 설정.
                block.block_root = this;
                // 그리드 좌표를 실제 위치(씬 좌표)로 변환.
                Vector3 position = BlockRoot.calcBlockPosition(block.i_pos);
                // 씬 상의 블록 위치를 이동.
                block.transform.position = position;

                // 블록의 색을 변경.
                // block.setColor((Block.COLOR)color_index);
                // 지금의 출현 확률을 바탕으로 색을 결정한다.
                color = this.selectBlockColor();
                block.setColor(color);

                // 블록의 이름을 설정(후술).
                block.name = "block(" + block.i_pos.x.ToString() +
                    "," + block.i_pos.y.ToString() + ")";
                // 모든 종류의 색 중에서 임의로 한 색을 선택.
                color_index =
                    Random.Range(0, (int)Block.COLOR.NORMAL_COLOR_NUM);
            }
        }
    }