Anda di halaman 1dari 11

/*

* Driver_Rubix.java

* Autores: Emilio José Miranda Rivas - 10411

* Ana Rocio Debroy Bran - 10055

* Hugo Daniel Mena Enamorado - 08825

* Fecha: 28 de Agosto de 2010

* Descripción: Usando clase Rubix

*/

//Importación de clases

import java.util.Scanner;

import java.util.InputMismatchException;

public class Driver_Rubix

//Revisa que lo que se ingresó sea número, recibe un texto y un número y

//devuelve lo que se ingresó como entero o el número que recibió si da error

public static int revisar_Numero(String texto, int num)

//Declaración de objetos

Scanner in = new Scanner(System.in);

System.out.print(texto);

try

num = in.nextInt();

}
catch(InputMismatchException exception)

System.out.println("- ERROR: Dato invalido.");

finally

in.nextLine();//Atrapa ENTER

return num;

//Imprime las opciones del menu, no recibe parámetros y no devuelve nada

public static void menu()

System.out.println("+-----RUBIX--------+");

System.out.println("| Menu: |");

System.out.println("| 1. Jugar. |");

System.out.println("| 2. Instrucciones.|");

System.out.println("| 3. Salir. |");

System.out.println("+------------------+ \n");

//Imprime las opciones del sub-menu, no recibe parámetros y no devuelve nada

public static void submenu()

System.out.println("+-------------+");

System.out.println("| Sub-menu: |");


System.out.println("| 1. Fácil. |");

System.out.println("| 2. Medio. |");

System.out.println("| 3. Difícil. |");

System.out.println("| 4. Salir. |");

System.out.println("+-------------+ \n");

//Se revulve la matriz desafío, se muestra el tablero desafío y meta, el No

//de movimientos realizados y el No de movimientos a vencer mientras los tableros

//no son iguales. Permite anular movimientos y salir del juego en cualquier

//momento y se determina si se consiguió o no el objetivo con igual o menos

//cantidad de movimientos a vencer, recibe la cantidad de veces a revolver el

//desafío, el objeto desafio y el objeto meta y no devuelve nada

public static void juego(int cantidad, Rubix desafio, Rubix meta)

//Declaración de variables

int opc1 = 0;

int opc2 = 0;

int opc3 = 0;

int movidas = 0;

desafio.revolver(cantidad);

while(Rubix.comparar(desafio.getMatriz(),meta.getMatriz())!=true)

System.out.println("+------Desafio------+ \n" + desafio);

System.out.println("+-------Meta-------+ \n" + meta);


System.out.println("- No de movidas: " + movidas);

System.out.println("- No de movidas a vencer: " + cantidad + "\n");

do

opc1 = revisar_Numero("- Desea mover 1. Fila, 2. Columna, 3. Salir ",0);

while(opc1<1 || opc1>3);

if(opc1 == 1) //Fila

do

opc2 = revisar_Numero("- Ingrese el No de fila que desea mover, 0. Anular o -1.Salir ",0);

while(opc2<-1 || opc2>desafio.getMatriz().length);

if(opc2 == -1) //Salir

break;

if(opc2>0)

do

opc3 = revisar_Numero("- Desea mover hacia la 1. Derecha o 2. Izquierda, 3. Anular o


4.Salir ",0);
}

while(opc3<1 || opc3>4);

if(opc3 == 4) //Salir

break;

desafio.movida(opc1, opc2, opc3);

if(opc2!=0 && opc3!=3)

movidas++;

System.out.println();

if(opc1 == 2) //Columna

do

opc2 = revisar_Numero("- Ingrese el No de columna que desea mover, 0. Anular o -1.Salir


",0);

while(opc2<-1 || opc2>desafio.getMatriz()[0].length);

if(opc2 == -1) //Salir

{
break;

if(opc2>0)

do

opc3 = revisar_Numero("- Desea mover hacia 1. Arriba o 2. Abajo, 3. Anular o 4.Salir


",0);

while(opc2<1 || opc2>4);

if(opc3 == 4) //Salir

break;

desafio.movida(opc1, opc2, opc3);

if(opc2!=0 && opc3!=3)

movidas++;

System.out.println();

if(opc1==3 || opc2==-1 || opc3==4) //Salir

{
break;

if(opc1!=3 && opc2!=-1 && opc3!=4)

System.out.println("+---Desafio---+ \n" + desafio);

System.out.println("+---Meta---+ \n" + meta);

System.out.println("- No de movidas a vencer: " + cantidad + "\n");

if(movidas<=cantidad)

System.out.println("- ¡Felicidades ganó! realizó " + movidas + " movidas");

else

System.out.println("- Lo sentimos pero perdió, realizó " + movidas + " movidas");

//Método principal

public static void main(String args[])

//Declaración de variables

int opc = 0;

int opc2 = 0;

int filas = 0;
int columnas = 0;

//Declaración de objetos

Rubix desafio = new Rubix();

Rubix meta = new Rubix();

do

System.out.println();

menu();

opc = revisar_Numero("- Ingrese una opcion: ",0);

System.out.println();

switch(opc)

//Jugar

case 1:

do

filas = revisar_Numero("- Ingrese el No de filas con que desea jugar 3-9: ",0);

while(filas<3 || filas>9);

do

columnas = revisar_Numero("- Ingrese el No de columnas con que desea jugar 3-9: ",0);

}
while(columnas<3 || columnas>9);

desafio = new Rubix(filas,columnas);

meta.setMatriz(desafio.copiar());

do

System.out.println();

submenu();

opc2 = revisar_Numero("- Ingrese una opcion: ",0);

System.out.println();

switch(opc2)

//Fácil

case 1:

juego(5,desafio,meta);

opc2 = 4;

break;

//Medio

case 2:

juego(10,desafio,meta);

opc2 = 4;

break;

//Dificil
case 3:

juego(20,desafio,meta);

opc2 = 4;

break;

//Salir

case 4:

break;

default:

System.out.println("- ERROR: Dato invalido.");

break;

while(opc2!=4);

break;

//Instrucciones

case 2:

System.out.print(Leer_Archivo.Leer_texto("Instrucciones"));

break;

//Salir

case 3:

System.out.println("- Gracias por jugar Rubix");

break;
default:

System.out.println("- ERROR: Dato invalido.");

break;

while(opc!=3);

Anda mungkin juga menyukai