public void moveUp()
    {
        if (getNewBricks(Move.down) == null)
        {
            moveCurrentBricks(Move.down);
        }

        // Change row eat
        if (listEatingRows.Count > 0)
        {
            foreach (List <int> eatingRows in listEatingRows)
            {
                for (int i = eatingRows.Count - 1; i >= 0; i--)
                {
                    eatingRows[i]--;
                }
            }
        }

        // Copy Brick
        for (int i = 1; i < row; i++)
        {
            for (int j = 0; j < column; j++)
            {
                BrickController brick = bricks[i, j];
                if (brick.isShow && !currentBricks.Contains(brick))
                {
                    brick.setShow(false);
                    if (!usingSprite)
                    {
                        bricks[i - 1, j].setShow(true, brick.color);
                    }
                    else
                    {
                        bricks[i - 1, j].setShow(true, brick.sprite);
                    }
                }
            }
        }

        // Create Last Row
        for (int j = 0; j < column; j++)
        {
            bool isShow = Random.Range(0, 3) < 2 ? true : false;
            if (!usingSprite)
            {
                bricks[row - 1, j].setShow(isShow, colors[Random.Range(0, 7)]);
            }
            else
            {
                bricks[row - 1, j].setShow(isShow, sprites[Random.Range(0, 7)]);
            }
        }

        if (checkEat(row - 1))
        {
            bricks[row - 1, Random.Range(0, column)].setShow(false);
        }
    }
    IEnumerator moveDown(List <int> rows, Action action, bool runWhenNotRunning)
    {
        yield return(new WaitForSeconds(deltaTimeClear));

        // Clear Row
        for (int j = 0; j < column; j++)
        {
            if (!running && !runWhenNotRunning)
            {
                yield break;
            }
            BrickController brick = bricks[rows[0], j];
            if (brick.isShow)
            {
                brick.setShow(false);
                yield return(new WaitForSeconds(deltaTimeClear));
            }
        }

        // Copy Brick
        for (int i = rows[0] - 1; i >= 0; i--)
        {
            for (int j = 0; j < column; j++)
            {
                BrickController brick = bricks[i, j];

                if (brick.isShow && !currentBricks.Contains(brick))
                {
                    brick.setShow(false);
                    if (!usingSprite)
                    {
                        bricks[i + 1, j].setShow(true, brick.color);
                    }
                    else
                    {
                        bricks[i + 1, j].setShow(true, brick.sprite);
                    }
                }
            }
        }

        // Change row eat
        int rowEat = rows[0];

        rows.RemoveAt(0);
        foreach (List <int> eatingRows in listEatingRows)
        {
            for (int i = eatingRows.Count - 1; i >= 0; i--)
            {
                if (eatingRows[i] < rowEat)
                {
                    eatingRows[i]++;
                }
                else
                {
                    break;
                }
            }
        }

        // Score
        if (running)
        {
            addScore(1);
        }

        if (rows.Count > 0)
        {
            StartCoroutine(moveDown(rows, action, runWhenNotRunning));
        }
        else
        {
            listEatingRows.Remove(rows);
            if (listEatingRows.Count == 0)
            {
                eating = false;
            }
            if (action != null)
            {
                action();
            }
        }
    }