public GameObject Spawn()
    {
        GameObject piece;
        Vector3    position;

        int x = 6;
        int y = 19;

        position = new Vector3(holder.FindTileByCoordenate(x, y).transform.position.x, holder.FindTileByCoordenate(x, y).transform.position.y, 0.0f);

        piece = Instantiate(GetRandomSpecificPiece(), position, Quaternion.Euler(0, 0, 0));

        GameObject[] quadrados;

        quadrados = piece.GetComponent <ShapeControler>().squares;

        //Set tiles da nova forma
        switch (piece.GetComponent <ShapeControler>().type)
        {
        case ShapeType.I:
            quadrados[0].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 2, y));
            quadrados[1].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y));
            quadrados[2].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y));
            quadrados[3].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x + 1, y));
            break;

        case ShapeType.J:
            quadrados[0].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y + 1));
            quadrados[1].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y));
            quadrados[2].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y));
            quadrados[3].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x + 1, y));
            break;

        case ShapeType.L:
            quadrados[0].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x + 1, y + 1));
            quadrados[1].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y));
            quadrados[2].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y));
            quadrados[3].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x + 1, y));
            break;

        case ShapeType.O:
            quadrados[0].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y + 1));
            quadrados[1].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x + 1, y + 1));
            quadrados[2].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y));
            quadrados[3].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x + 1, y));
            break;

        case ShapeType.S:
            quadrados[0].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y + 1));
            quadrados[1].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y));
            quadrados[2].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y));
            quadrados[3].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y - 1));
            break;

        case ShapeType.T:
            quadrados[0].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y + 1));
            quadrados[1].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y));
            quadrados[2].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y));
            quadrados[3].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x + 1, y));
            break;

        case ShapeType.Z:
            quadrados[0].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y + 1));
            quadrados[1].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x, y));
            quadrados[2].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y));
            quadrados[3].GetComponent <QuadradoScript>().SetTile(holder.FindTileByCoordenate(x - 1, y - 1));
            break;
        }

        return(piece);
    }