Sunteți pe pagina 1din 6

Universidad Del Valle de Guatemala

Programación Orientada a Objetos


Catedrática: Alejandra Reynoso
Sección 20 Grupo C
Integrantes: Stephen Chavez 10490, Jonathan Robles 10267, Diego Najera 09343

Proyecto 1
Rubix

Entradas: Son los datos ingresados por el usuario para el funcionamiento del programa.

1. Nombre
2. Edad
3. Género
4. La opción del menú que desea llevar a cabo.
5. La opción del submenú que desea llevar a cabo.
6. El ingreso de cambio de nombre, edad y/o género. (Si se desea).
7. El ingreso de la dimensión de la matriz.
8. El numero de fila o columna de la matriz que desea modificar.
9. El identificador del movimiento o acción que desea realizar para la matriz.
10. Todos los “ENTER´s” que se le piden al usuario para continuar el programa.
11. La opción para salir del juego. (Es distinta a la opción para salir del menú y
submenú).

Salidas: Son los datos que se le muestran en pantalla al usuario como guía del desarrollo
del programa.

1. Bienvenida al programa.
2. Ingreso de nombre, edad y género.
3. El menú interactivo y sus opciones.
4. La opción para ver información del jugador.
5. El submenú interactivo y sus opciones.
6. La opción de ver el estado del jugador.
7. La opción de cambio de nombre, edad y género (si se desea).
8. La opción de salida del submenú.
9. La opción para ver las instrucciones del juego.
10. La opción de jugar.
11. El mensaje de los niveles del juego.
12. El mensaje para ingresar la dimensión de la matriz.
13. La matriz ideal (matriz a la que se debe llegar) y matriz inicial (matriz por medio de
la cual se debe llegar a la ideal).
14. El número de fila o columna que desee modificar.
15. El identificador de los movimientos de la matriz.
16. La opción para salir del juego.
17. Mensaje acerca de si las matrices son iguales o no.
18. El total de movimientos realizados en el juego.
19. El total de puntos acumulados al final del juego.
20. Un comentario acerca del desempeño del jugador según los puntos acumulados.
21. La opción de solución del juego.
22. Las matrices paso a paso solucionadas.
23. La opción de información sobre los autores.
24. La opción para salir del menú.
25. Todos los “Presione Enter” para continuar con la ejecución del programa.
26. Mensaje de despedida.

Condiciones:

1. El programa en general, consta de tres clases: Jugador (atributos del jugador:


nombre, edad, género, puntaje y métodos constructor set, get y toString), Juego
(atributos del juego: entre ellos, oJugador, que es un objeto de la clase Jugador y
métodos constructor y métodos de apoyo y servicio utilizados en JuegoAPP) y
JuegoApp (contiene el método main y otros static como menu, submenú, etc.).
2. El nombre del usuario debe contener por lo menos un caracter.
3. La edad debe estar entre 1 y 100 años.
4. El género es un caracter que debe ser “F” o “M”, sin importar si lo ingresa con
minúsculas.
5. Los puntos iniciales del jugador son 0.
6. La opción del menú que se desea llevar a cabo debe ser un entero que esté entre
el número de opciones posibles. (Lo mismo ocurre con el submenú).
7. Todas las salidas de pantalla que muestren opciones del menú o submenú deben
producir acciones esperadas de acuerdo a lo desplegado.
8. Los cambios de nombre, edad y género están sometidos a las mismas condiciones
mencionados anteriormente (2, 3, 4) para su ingreso.
9. El objetivo del juego es que la matriz inicial sea igual a la matriz ideal, sin embargo
el usuario tiene la opción de rendirse si no lo logra.
10. Los niveles de dificultad están en función de la dimensión de la matriz (4-8).
11. Los valores de la matriz son generados aleatoriamente, entre 1 y 3.
12. Para mover un elemento de la matriz, el usuario debe ingresar el número de fila o
columna que quiere modificar y el identificador del movimiento deseado.
13. El número de movimientos se guarda en una variable que funciona como contador.
14. Cuando el usuario decide salir del juego o cuando cumple el objetivo, se le
mostrarán sus puntos y número de movimientos.
15. Existen 3 formas de desordenar la matriz inicial y 3 formas de restaurarla de modo
que sea idéntica a la ideal. Para ello existen 3 métodos de revolver y 3 métodos de
restaurar. El par de métodos elegido para utilizar en un juego está controlado por
un objeto de la clase Random que produce valores entre 1 y 3.
16. La opción de solución del juego, muestra los pasos para llegar de la matriz inicial a
la matriz final.
17. La información de autores posee datos necesarios para poder contactarlos.

Repeticiones:

1. El menú principal interactivo se repite mediante la estructura “do-while”, siempre


y cuando el número ingresado de opción, no sea igual al de salida del programa. Lo
mismo ocurre con el sub-menú interactivo.
2. El juego en sí está controlado por un “for”, con una variable que funciona como
contador. Si el usuario se rinde o gana el juego, la variable se iguala al valor que le
permite salir del ciclo de juego.
3. Las matrices se realizan mediante repeticiones que utilizan la estructura “for” para
filas, y otro “for” anidado para las columnas, con un contador que tiene como
límite el valor de la dimensión de la matriz, y sus casillas se llenan con números de
1 a 3. Esta secuencia se utiliza en el método constructor, toString y de distintas
formas en los métodos de servicio de la clase Juego.
4. Como forma de programación defensiva, todo ingreso del usuario se encuentra en
un ciclo, controlado por la estructura do-while, de modo que se repita cada vez
que el usuario ingrese un dato de forma incorrecta.

Algoritmo narrativo (Método Main):

1. INICIO.
2. Se muestra la bienvenida al programa.
3. Se le solicita al usuario ingresar su nombre, edad y género.
4. Se muestra un menú interactivo con las siguientes opciones: 1. Información del
jugador. 2. Ver las instrucciones del juego. 3. Jugar. 4. Ver solución del juego. 5.
Acerca de los autores. 6. Salir del menú.
4.1 Si se ingresa la opción 1, se muestra un submenú con las siguientes opciones:
1. Ver estado del jugador. 2. Cambiar nombre. 3. Cambiar edad. 4. Cambiar
género. 5. Salir del submenú.
4.1.1 Si ingresa la opción 1, se le muestra su nombre, género, edad y puntos
actuales.
4.1.2 Si ingresa la opción 2, se le invita a cambiar su nombre.
4.1.3 Si ingresa la opción 3, se le invita a cambiar su edad.
4.1.4 Si ingresa la opción 4, se le invita a cambiar su género.
4.1.5 Si ingresa la opción 5, el programa se sale del submenú.
4.2 Si ingresa la opción 2, se le indica claramente cómo jugar.
4.3 Si ingresa la opción 3, se le pide ingresar la dimensión de la matriz, se muestran
las dos matrices (rubix), se le pide el número de fila o columna a modificar y los
indicadores de movimiento a ingresar para modificar la matriz inicial y la
opción de rendirse y acabar el juego. Si se rinde o cumple el objetivo, se le
muestra el total de movimientos realizados, los puntos acumulados, y una
“crítica constructiva” de su desempeño de acuerdo a la cantidad de puntos
acumulados.
4.4 Si ingresa la opción 4, se le muestra paso por paso, la solución del juego, para
que las matrices queden idénticas.
4.5 Si ingresa la opción 5, se le muestra información relevante de los autores del
programa.
4.6 Si ingresa la opción 6, se le muestra el mensaje de despedida, y se termina la
ejecución del programa.
4.7 FIN

Clase Jugador

Atributos
Visibilidad Tipo Identificador Observaciones
private String nombre Se ingresa el nombre del
jugador.
private int edad Guarda la edad del
jugador.
private char genero Guarda el género del
jugador. (M o F)
private String puntaje Guarda los puntos del
jugador.

Métodos
Visibilidad Tipo de retorno Identificador Parámetros Funcionalidad
public No posee. Jugador String nombre, Crea un objeto de
int edad, char la clase con esos
genero, String parámetros.
puntaje
public void setNombre String nombre Cambia el valor de
nombre.
public void setEdad int edad Cambia el valor de
edad.
public void setGenero char genero Cambia el valor de
género.
public void setPuntaje String puntaje Modifica el valor
de puntos.
public String getNombre No posee. Obtiene el valor de
nombre.
public int getEdad No posee. Obtiene el valor de
edad.
public char getGenero No posee. Obtiene el valor de
género.
public String getPuntaje No posee. Obtiene el valor de
puntos.
public String toString No posee. Se guarda una serie
de variables y strings
en una variable
String.
Clase Juego

Atributos
Visibilidad Tipo Identificador Observaciones
private Jugador oJugador Crea un objeto de la
clase jugador.
private int[][] rubix Representa la matriz
ideal.
private int[][] rubix2 Representa la matriz
inicial.
private int[][] rubix3 Matriz de apoyo.
private int[][] rubix4 Matriz de apoyo.

Métodos
Visibilidad Tipo de retorno Identificador Parámetros Funcionalidad
public No posee. Juego int drubix Crea un objeto de
la clase con ese
parámetro.
public void setDrubix int drubix Modifica el
atributo dimensión
de matriz.
public int getDrubix No posee Obtiene el atributo
dimensión.
public String toString No posee Se guarda una
serie de variables y
strings en una
variable String.
public void movIzq int fila Mover izquierda.
public void movDer int fila Mover derecha.
public void movAr int columna Mover arriba.
public void movAb int columna Mover abajo.
public void copiarMatriz int[][]rubix3, Iguala la matriz 3 y
int[][]rubix2 la 2.
public void copiarMatriz2 int[][]rubix2, Iguala la matriz 2 y
int[][]rubix4 4.
public void copiarMatriz3 int[][]rubix4, Iguala la matriz 4 y
int[][]rubix2 2.
public void revMat No posee. Desordena matriz.
public void revMat2 No posee. Desordena matriz.
public void revMat3 No posee. Desordena matriz.
public void resMat No posee. Restaura matriz.
public void resMat2 No posee. Restaura matriz.
public void resMat3 No posee. Restaura matriz.
public void impMatriz No posee. Imprime matrices.
public boolean gana No posee. Determina juego
ganado.
Clase JuegoApp

Métodos
Visibilidad Tipo de retorno Identificador Parámetros Funcionalidad
public void main String args[] Ejecuta el
programa principal
public int donde No posee. Indica que fila o
columna será
modificada.
public String direccion No posee. Indica el tipo de
movimiento.
public void menu No posee. Muestra la serie de
opciones para el
usuario.
public void subMenu No posee. Muestra la serie de
opciones para el
usuario.
public double obtenerNum String mensaje, Utiliza la estructura
boolean mostrar try-catch para
asegurar la defensa
del programa.

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