Beispiel #1
0
    //Este cambio es para una matriz en general
    bool cambio(pos x, ref pieza[,] matriz, ref pieza Hueco)
    {
        int  valor;
        bool cambiado = false;

        if (dameCasilla(x, matriz, Hueco, out valor))
        {
            switch (x)
            {
            case pos.arriba:

                Hueco.SetIJ(Hueco.i - 1, Hueco.j);
                matriz[Hueco.i, Hueco.j].valor     = Hueco.valor;
                matriz[Hueco.i + 1, Hueco.j].valor = valor;

                break;

            case pos.abajo:
                Hueco.SetIJ(Hueco.i + 1, Hueco.j);
                matriz[Hueco.i, Hueco.j].valor     = Hueco.valor;
                matriz[Hueco.i - 1, Hueco.j].valor = valor;


                break;

            case pos.izquierda:
                Hueco.SetIJ(Hueco.i, Hueco.j - 1);
                matriz[Hueco.i, Hueco.j].valor     = Hueco.valor;
                matriz[Hueco.i, Hueco.j + 1].valor = valor;
                cambiado = true;
                break;

            case pos.derecha:

                Hueco.SetIJ(Hueco.i, Hueco.j + 1);
                matriz[Hueco.i, Hueco.j].valor     = Hueco.valor;
                matriz[Hueco.i, Hueco.j - 1].valor = valor;
                break;
            }
            cambiado = true;
        }
        //Método que ilustra el cambio

        return(cambiado);
    }
Beispiel #2
0
    //Cambia el hueco por la casilla que se le indica al metodo (si no puede devuelve false)
    bool cambio(pos x)
    {
        int        valor;
        GameObject a = null, b = null;
        int        aI = 0, bI = 0;

        if (dameCasilla(x, out valor))
        {
            switch (x)
            {
            case pos.arriba:

                a  = Puzzle.transform.Find(matriz[hueco.i - 1, hueco.j].valor.ToString()).gameObject;
                b  = Puzzle.transform.Find(hueco.valor.ToString()).gameObject;
                aI = a.transform.GetSiblingIndex();
                bI = b.transform.GetSiblingIndex();

                hueco.SetIJ(hueco.i - 1, hueco.j);
                matriz[hueco.i, hueco.j].valor     = hueco.valor;
                matriz[hueco.i + 1, hueco.j].valor = valor;

                break;

            case pos.abajo:


                a  = Puzzle.transform.Find(matriz[hueco.i + 1, hueco.j].valor.ToString()).gameObject;
                b  = Puzzle.transform.Find(hueco.valor.ToString()).gameObject;
                aI = a.transform.GetSiblingIndex();
                bI = b.transform.GetSiblingIndex();

                hueco.SetIJ(hueco.i + 1, hueco.j);
                matriz[hueco.i, hueco.j].valor     = hueco.valor;
                matriz[hueco.i - 1, hueco.j].valor = valor;

                break;

            case pos.izquierda:

                a  = Puzzle.transform.Find(matriz[hueco.i, hueco.j - 1].valor.ToString()).gameObject;
                b  = Puzzle.transform.Find(hueco.valor.ToString()).gameObject;
                aI = a.transform.GetSiblingIndex();
                bI = b.transform.GetSiblingIndex();

                hueco.SetIJ(hueco.i, hueco.j - 1);
                matriz[hueco.i, hueco.j].valor     = hueco.valor;
                matriz[hueco.i, hueco.j + 1].valor = valor;

                break;

            case pos.derecha:

                a  = Puzzle.transform.Find(matriz[hueco.i, hueco.j + 1].valor.ToString()).gameObject;
                b  = Puzzle.transform.Find(hueco.valor.ToString()).gameObject;
                aI = a.transform.GetSiblingIndex();
                bI = b.transform.GetSiblingIndex();

                hueco.SetIJ(hueco.i, hueco.j + 1);
                matriz[hueco.i, hueco.j].valor     = hueco.valor;
                matriz[hueco.i, hueco.j - 1].valor = valor;

                break;
            }
            //Método que ilustra el cambio
            b.transform.SetSiblingIndex(aI);
            a.transform.SetSiblingIndex(bI);
            return(true);
        }
        return(false);
    }