private void moveTwoGems()
    {
        int     i, j, i2, j2;
        Vector2 vec = GemControler.toSwap[0].transform.position;

        StartCoroutine(GemControler.toSwap[0].Move(GemControler.toSwap[1].transform.position));
        StartCoroutine(GemControler.toSwap[1].Move(vec));
        getIJ(GemControler.toSwap[0], out i, out j);
        getIJ(GemControler.toSwap[1], out i2, out j2);
        GemControler temp = board[i, j];

        board[i, j]   = board[i2, j2];
        board[i2, j2] = temp;
        GemControler.toSwap.Clear();
        cleared = false;
    }
    public Queue <GemControler> BFS(GemControler gc)
    {
        Queue <GemControler> lookFor = new Queue <GemControler>();

        for (int i = 0; i < 4; i++)
        {
            if (gc.neighbors[i] != null)
            {
                if (gc.neighbors[i].tag == gc.tag && gc.neighbors[i].GetComponent <GemControler>().matched)
                {
                    lookFor.Enqueue(gc.neighbors[i].GetComponent <GemControler>());
                }
            }
        }
        return(lookFor);
    }
 private bool getIJ(GemControler gem, out int xi, out int xj)
 {
     for (int i = 0; i < col; i++)
     {
         for (int j = 0; j < row; j++)
         {
             if (gem == board[i, j])
             {
                 xi = i;
                 xj = j;
                 return(true);
             }
         }
     }
     xi = -1;
     xj = -1;
     return(false);
 }
 private void CheckForMatch(GemControler xgemControler)
 {
     xgemControler.SearchForMatch();
 }