You are on page 1of 9

CC2006 – Programación Orientada a Objetos

Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

Análisis:
1. Entradas:
a. Ingresar opción del menú.
b. Ingresar opción del sub-menú.
c. Ingresar número de filas a jugar.
d. Ingresar número de columnas a jugar.
e. Elegir si mover fila, columna o salir.
f. Elegir cuál fila o columna mover, anular movida o salir
g. Elegir dirección de la movida, anular movida o salir

2. Salidas:
a. Mostrar menú con opciones.
i. Jugar.
ii. Instrucciones.
iii. Salir
b. Pedir opción de menú.
c. Mostrar instrucciones de juego.
d. Mostrar sub-menú con opciones.
i. Fácil
ii. Medio
iii. Difícil
iv. Salir
e. Pedir opción de sub-menú.
f. Mostrar desafío, meta, No de movidas realizadas y No de movidas a vencer.
g. Pedir si desea mover fila, columna o salir.
h. Pedir qué fila o columna desea mover, si desea anular movida o salir.
i. Pedir dirección de la movida, si desea anular movida o salir.
j. Mostrar mensaje de victoria o derrota.
k. Mostrar mensaje de fin de ejecución del programa
l. Mostrar advertencias de error.

3. Condiciones:
a. Ingresar una opción válida para el menú (1-3).
b. Ingresar una opción válida para el sub-menú (1-4).
c. Ingresar un número entre 3 y 9 incluyendo extremos para el número de filas.
d. Ingresar un número entre 3 y 9 incluyendo extremos para el número de columnas.
e. Elegir entre fila o columna a mover o salir.
f. Elegir una fila o columna a mover existente, 0 para anular movimiento o -1 para
salir.
g. Elegir hacia donde desea mover la fila o columna (derecha,-izquierda o arriba-
abajo), 3 anular y 4 salir.
h. Para todas las entradas numéricas ingresar números enteros.
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

4. Descripción de ciclos:
Clase Rubix:
1. En Rubix(): no hay ciclos.

2. En Rubix(int filas, int columnas): no hay ciclos.

3. En setMatriz(char[][] matriz): no hay ciclos.

4. En getMatriz(): no hay ciclos.

5. En inicializar():
 Ciclo recorre filas:
¿Qué se repite?:
Ciclo recorre columnas
¿Qué condición controla la repetición?:
Mientras fil < filas

 Ciclo recorre columnas


¿Qué se repite?:
matriz[fil][col] ← colores[pos.nextInt(4)]
¿Qué condición controla la repetición?:
Mientras col < columnas

6. En derecha(int fil):
 Ciclo recorre columnas -1 al revés
¿Qué se repite?:
matriz[fil][col] ← matriz[fil][col-1]
¿Qué condición controla la repetición?:
Mientras col > 0

7. En izquierda(int fil):
 Ciclo recorre columnas -1
¿Qué se repite?:
matriz[fil][col] ← matriz[fil][col+1]
¿Qué condición controla la repetición?:
Mientras col < columnas-1

8. En arriba(int col):
 Ciclo recorre filas -1
¿Qué se repite?:
matriz[fil][col] ← matriz[fil+1][col]
¿Qué condición controla la repetición?:
Mientras fil < filas-1
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

9. En abajo(int col):
 Ciclo recorre filas -1 al revés
¿Qué se repite?:
matriz[fil][col] ← matriz[fil-1][col]
¿Qué condición controla la repetición?:
Mientras fil > 0

10. En copiar():
 Ciclo recorre filas
¿Qué se repite?:
Ciclo recorre columnas
¿Qué condición controla la repetición?:
Mientras fil < filas

 Ciclo recorre columnas


¿Qué se repite?:
copia[fil][col] ← matriz[fil][col]
¿Qué condición controla la repetición?:
Mientras col < columnas

11. En revolver(int cantidad):


 Ciclo veces
¿Qué se repite?:
opc1 ← num.nextInt(2)
Revisar opc1
veces ← veces + 1
¿Qué condición controla la repetición?:
Mientras veces < cantidad

12. En movida(int opc1, int opc2, int opc3): no hay ciclos

13. En comparar(char[][] desafio, char[][] meta):


 Ciclo recorre filas
¿Qué se repite?:
Ciclo recorre columnas
¿Qué condición controla la repetición?:
Mientras fil < filas

 Ciclo recorre columnas


¿Qué se repite?:
Revisar si desafio[fil][col]<>meta[fil][col]
¿Qué condición controla la repetición?:
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

Mientras col < columnas

14. En toString():
 Ciclo recorre columnas 1
¿Qué se repite?:
descripcion ← descripcion + " " + (col+1) + " "
col ← col + 1
¿Qué condición controla la repetición?:
Mientras col < columnas

 Ciclo recorre columnas 2


¿Qué se repite?:
descripcion ← descripcion + " - "
col ← col + 1
¿Qué condición controla la repetición?:
Mientras col < columnas

 Ciclo recorre filas


¿Qué se repite?:
descripcion ← descripcion + (fil+1) + " |"
Ciclo recorre columnas 3
descripcion ← descripcion + "\n "
Ciclo recorre columnas 4
descripcion ← descripcion + "\n"
fil ← fil + 1
¿Qué condición controla la repetición?:
Mientras fil < filas

 Ciclo recorre columnas 3


¿Qué se repite?:
descripcion ← descripcion + " " + matriz[fil][col] + " |"
col ← col + 1
¿Qué condición controla la repetición?:
Mientras col < columnas

 Ciclo recorre columnas 4


¿Qué se repite?:
descripcion ← descripcion + " - "
col ← col + 1
¿Qué condición controla la repetición?:
Mientras col < columnas

Clase Leer_Archivo:
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

1. En Leer_texto(String file):
 Ciclo leer línea:
¿Qué se repite?:
texto ← texto + archivo.nextLine() + "\n"
¿Qué condición controla la repetición?:
Mientras el archivo tenga otra línea de texto

Clase Driver_Rubix:
1. En revisar_Numero(String texto, int num): no hay ciclos.

2. En menu(): no hay ciclos.

3. En submenu(): no hay ciclos.

4. En juego(int cantidad, Rubix desafio, Rubix desafio):


 Ciclo comparar tablero
¿Qué se repite?:
Mostrar objeto desafio
Mostrar objeto meta
Mostrar No de movidas
Mostrar No de movidas a vencer
Ciclo hacer 1
Revisar opc1
Revisar opc1, opc2 y opc3
¿Qué condición controla la repetición?:
Mientras Rubix.comparar(desafio.getMatriz(),meta.getMatriz())<>true

 Ciclo hacer 1
¿Qué se repite?:
opc1 ← revisar_Numero("- Desea mover 1. fila, 2. columna, 3. Salir ",0)
¿Qué condición controla la repetición?:
Mientras opc1<1 || opc1>3

 Ciclo hacer 2
¿Qué se repite?:
opc2 ← revisar_Numero("- Ingrese el No de fila que desea mover, 0.
Anular o -1.Salir ",0)
¿Qué condición controla la repetición?:
Mientras opc2<-1 || opc2>filas de objeto desafio

 Ciclo hacer 3
¿Qué se repite?:
opc3 ← revisar_Numero("- Desea mover hacia la 1. derecha o 2. izquierda,
3. anular o 4.Salir ",0)
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

¿Qué condición controla la repetición?:


Mientras opc3<1 || opc3>4

 Ciclo hacer 4
¿Qué se repite?:
opc2 ← revisar_Numero("- Ingrese el No de columna que desea mover, 0.
Anular o -1.Salir ",0)
¿Qué condición controla la repetición?:
Mientras opc2<-1 || opc2>columnas de objeto desafio

 Ciclo hacer 5
¿Qué se repite?:
opc3 ← revisar_Numero("- Desea mover hacia 1. arriba o 2. abajo, 3.
anular o 4.Salir ",0)
¿Qué condición controla la repetición?:
Mientras opc3<1 || opc3>4

5. En main(String[] args):
 Ciclo hacer 1:
¿Qué se repite?:
Mostrar menu()
opc ← revisar_Numero("- Ingrese una opcion: ",0)
Revisar opc
¿Qué condición controla la repetición?:
Mientras opc <> 3

 Ciclo hacer 2:
¿Qué se repite?:
filas ← revisar_Numero("- Ingrese el No de filas con que desea jugar 3-9:
",0)
¿Qué condición controla la repetición?:
Mientras filas<3 || filas>9

 Ciclo hacer 3:
¿Qué se repite?:
columnas ← revisar_Numero("- Ingrese el No de columnas con que desea
jugar 3-9: ",0)
¿Qué condición controla la repetición?:
Mientras columnas<3 || columnas>9

 Ciclo hacer 4:
¿Qué se repite?:
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

Mostrar submenu()
opc2 ← revisar_Numero("- Ingrese una opcion: ",0)
Revisar opc2
¿Qué condición controla la repetición?:
Mientras opc2 <> 4

5. Clases

Clase Rubix:

Atributos
Visibilidad Tipo Identificador Observaciones
permitirá crear los desafíos y las metas
de cada nivel, es donde se almacenarán
private char[][] matriz las letras que representarán los colores

Métodos
Visibilidad Tipo de retorno Identificador Parámetros Funcionalidad

public Rubix Constructor predefinido


int filas, int
public Rubix columnas Constructor personalizado
char[][] Establece un valor a matriz, recibe matriz y no
public void setMatriz matriz devuelve valores
Obtiene el valor de matriz, no recibe parámetros y
public char[][] getMatriz devuelve matriz
Llena aleatoriamente una matriz con letras que
representan colores, recorriendo sus filas y
columnas, no recibe parámetros y no devuelve
private void inicializar nada
Mueve un espacio a la derecha los valores de una
private void derecha int fil fila, recibe el índice de la fila y no devuelve nada
Mueve un espacio a la izquierda los valores de una
private void izquierda int fil fila, recibe el índice de la fila y no devuelve nada
Mueve un espacio hacia arriba los valores de una
columna, recibe el índice de la columna y no
private void arriba int col devuelve nada
Mueve un espacio hacia abajo los valores de una
columna, recibe el índice de la columna y no
private void abajo int col devuelve nada
Crea un arreglo de dos dimensiones "copia",
public char[][] copiar idéntica al atributo matriz del objeto Rubix con que
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

se llama al método, no recibe parámetros y


devuelve la matriz "copia"
Cambia de orden las casillas en la matriz de forma
aleatoria para simular el movimiento de filas o
int columnas hacia arriba, abajo, derecha o izquierda,
public void revolver cantidad recibe la cantidad de movidas y no devuelve nada
Cambia de orden las casillas en la matriz para
int opc1, simular el movimiento de filas o columnas hacia
int opc2, arriba, abajo, derecha o izquierda, recibe opc1,
public void movida int opc3 opc2, opc3 y no devuelve nada
char[][] Compara el desafío con la meta, recibe la matriz
desafio, desafío y la matriz meta y devuelve verdadero si
public char[][] son iguales o falso si no lo son
static boolean comparar meta
Representación escrita del objeto, no recibe
parámetros y devuelve una cadena de caracteres
public String toString que contiene los atributos estáticos del objeto

Leer_Archivo:

Métodos
Tipo de
Visibilidad retorno Identificador Parámetros Funcionalidad
Lee un archivo externo línea por línea, recibe el
public nombre del archivo y devuelve el texto completo
static String leerTexto String file o la notificación que el archivo no existe

Clase Driver_Rubix:

Métodos
Tipo de
Visibilidad retorno Identificador Parámetros Funcionalidad
Revisa que lo que se ingreso sea numero, recibe
String un texto y un número y devuelve lo que se
public texto, int ingresó como entero o el número que recibió si
static int revisar_Numero num da error
public Imprime las opciones del menú, no recibe
static void menu parámetros y no devuelve nada
public Imprime las opciones del sub-menú, no recibe
static void submenu parámetros y no devuelve nada
int Se revulve la matriz desafío, se muestra el
Public cantidad, tablero desafío y meta, el No de movimientos
static void juego Rubix realizados y el No de movimientos a vencer
CC2006 – Programación Orientada a Objetos
Autores:
Emilio José Miranda Rivas - 10411
Ana Rocio Debroy Bran – 10055
Hugo Daniel Mena Enamorado - 08825

desafio, mientras los tableros no son iguales. Permite


Rubix meta 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 String
static void main args[] Método principal

You might also like