Sunteți pe pagina 1din 11

/*

* Rubix.java

* Autores: Emilio José Miranda Rivas - 10411

* Ana Rocio Debroy Bran - 10055

* Hugo Daniel Mena Enamorado - 08825

* Fecha: 08 de Septiembre de 2010

* Descripcion: Imitación de juego Rubix

*/

//Importación de clases

import java.util.Random;

public class Rubix

//Atributos

char[][] matriz;

//Constructor predefinido

public Rubix()

//Constructor personalizado

public Rubix(int filas, int columnas)

matriz = new char[filas][columnas];

inicializar();
}

//Métodos SET

//Establece un valor a matriz, recibe matriz y no devuelve valores

public void setMatriz(char[][] matriz)

this.matriz = matriz;

//Métodos GET

//Obtiene el valor de matriz, no recibe parámetros y devuelve matriz

public char[][] getMatriz()

return matriz;

//Métodos de apoyo

//Llena aleatoriamente una matriz con letras que representan colores, recorriendo

//sus filas y columnas, no recibe parámetros y no devuelve nada

private void inicializar()

//Declaración de variables

Random pos = new Random();

char[] colores = new char[4];

colores[0]='R';

colores[1]='A';

colores[2]='V';
colores[3]='Y';

for(int fil = 0; fil<matriz.length; fil++)

for(int col = 0; col<matriz.length; col++)

matriz[fil][col] = colores[pos.nextInt(4)];

//Mueve un espacio a la derecha los valores de una fila, recibe el índice de

//la fila y no devuelve nada

private void derecha(int fil)

//Declaración de variables

char temp = matriz[fil][matriz[0].length-1];

for(int col = matriz[0].length-1; col>0; col--)

matriz[fil][col] = matriz[fil][col-1];

matriz[fil][0] = temp;

//Mueve un espacio a la izquierda los valores de una fila, recibe el índice de

//la fila y no devuelve nada


private void izquierda(int fil)

//Declaración de variables

char temp = matriz[fil][0];

for(int col = 0; col<matriz[0].length-1; col++)

matriz[fil][col] = matriz[fil][col+1];

matriz[fil][matriz[0].length-1] = temp;

//Mueve un espacio hacia arriba los valores de una columna, recibe el índice

//de la columna y no devuelve nada

private void arriba(int col)

//Declaración de variables

char temp = matriz[0][col];

for(int fil = 0; fil<matriz.length-1; fil++)

matriz[fil][col] = matriz[fil+1][col];

matriz[matriz.length-1][col] = temp;

//Mueve un espacio hacia abajo los valores de una columna, recibe el índice
//de la columna y no devuelve nada

private void abajo(int col)

//Declaración de variables

char temp = matriz[matriz.length-1][col];

for(int fil = matriz.length-1; fil>0; fil--)

matriz[fil][col] = matriz[fil-1][col];

matriz[0][col] = temp;

//Métodos de servicio

//Crea un arreglo de dos dimensiones "copia", idéntica al atributo matriz del

//objeto Rubix con que se llama al método, no recibe parámetros y devuelve

//la matriz "copia"

public char[][] copiar()

//Declaración de variables

char[][] copia = new char[matriz.length][matriz[0].length];

for(int fil = 0; fil<matriz.length; fil++)

for(int col = 0; col<matriz[0].length; col++)

copia[fil][col] = matriz[fil][col];
}

return copia;

//Cambia de orden las casillas en la matriz de forma aleatoria para simular el

//movimiento de filas o columnas hacia arriba, abajo, derecha o izquierda, recibe

//la cantidad de movidas y no devuelve nada

public void revolver(int cantidad)

//Declaración de variables

int veces = 0;

int opc1 = 0;

int opc2 = 0;

int opc3 = 0;

//Declaración de objetos

Random num = new Random();

while(veces<cantidad)

opc1 = num.nextInt(2);

if(opc1 == 0) //Filas

opc2 = num.nextInt(matriz.length); //Fila

opc3 = num.nextInt(2);
if(opc3 == 0) //Derecha

derecha(opc2);

else //Izquierda

izquierda(opc2);

else //Columnas

opc2 = num.nextInt(matriz.length); //Columna

opc3 = num.nextInt(2);

if(opc3 == 0) //Arriba

arriba(opc2);

else //Abajo

abajo(opc2);

veces++;

//Cambia de orden las casillas en la matriz para simular el movimiento de filas


//o columnas hacia arriba, abajo, derecha o izquierda, recibe opc1, opc2, opc3

//y no devuelve nada

public void movida(int opc1, int opc2, int opc3)

opc2--;

if(opc1 == 1) //Filas

if(opc2>-1)

if(opc3 == 1) //Derecha

derecha(opc2);

if(opc3 == 2) //Izquierda

izquierda(opc2);

if(opc1 == 2) //Columnas

if(opc2>-1)

if(opc3 == 1) //Arriba

arriba(opc2);

}
if(opc3 == 2) //Abajo

abajo(opc2);

//Compara el desafío con la meta, recibe la matriz desafío y la matriz meta y

//devuelve verdadero si son iguales o falso si no lo son

public static boolean comparar(char[][] desafio, char[][] meta)

//Declaración de variables

boolean resp = true;

for(int fil = 0; fil<desafio.length; fil++)

for(int col = 0; col<desafio[0].length; col++)

if(desafio[fil][col]!=meta[fil][col])

resp = false;

return resp;
}

//Representación escrita del objeto, no recibe parámetros y devuelve una cadena de caractéres
que

//contiene los atributos estáticos del objeto

public String toString()

//Decalaración de variables

String descripcion = "\n ";

//numeros de columna

for(int col=0; col<matriz[0].length; col++)

descripcion += " " + (col+1) + " ";

descripcion += "\n ";

//lineas

for(int col=0; col<matriz[0].length; col++)

descripcion += " - ";

descripcion += "\n";

//filas

for (int fil=0; fil<matriz.length; fil++)

descripcion += (fil+1) + " |"; //# de fila


for(int col=0; col<matriz[0].length; col++)

descripcion += " " + matriz[fil][col] + " |"; //valor

descripcion += "\n ";

//lineas

for(int col=0; col<matriz[0].length; col++)

descripcion += " - ";

descripcion += "\n";

return descripcion;

S-ar putea să vă placă și