//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); }
//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); }