-
Notifications
You must be signed in to change notification settings - Fork 1
b. Planificación y Administración del Proyecto.
OscarAraya18 edited this page Apr 6, 2019
·
25 revisions
Historia de usuario | Descripción |
---|---|
Historia de usuario 1 | Visualizar un tablero en el GUI que muestre una matriz de 15x15 espacios donde los jugadores podrán colocar sus fichas al formar palabras |
Historia de usuario 2 | Generar un deck de siete fichas por jugador, que se mantendrá constante aunque se formen palabras colocandolas en el tablero |
Historia de usuario 3 | Programar un algoritmo de drag and drop que permita arrastrar las fichas de juego sobre el tablero, y colocarlas en la posición deseada para la formación de palabras |
Historia de usuario 4 | Formar palabras con las fichas colocadas por los jugadores |
Historia de usuario 5 | Identificar si las palabras se están formando vertical u horizontalmente. No es permitida la creación de palabras colocadas en posición diagonal |
Historia de usuario 6 | Crear un diccionario de palabras en español que contenga todas las posibles palabras que pueden ser formadas por los jugadores |
Historia de usuario 7 | Diseñar un algoritmo que valide si la palabra formada por un jugador existe en el diccionario previamente creado |
Historia de usuario 8 | Crear un experto en palabras que permita validar si una palabra colocada por un jugador, que no esté contenida en el diccionario, existe o no |
Historia de usuario 9 | Permitir que el experto en palabras valide si las palabras existen, y en caso de existir, agregarlas al diccionario del juego |
Historia de usuario 10 | Diseñar el juego de forma que se permitan 2,3 o 4 jugadores por cada partida |
Historia de usuario 11 | Diseñar el juego con un funcionamiento de tipo Cliente-Servidor |
Historia de usuario 12 | Crear un botón que permita a los jugadores terminar su turno |
Historia de usuario 13 | Actualizar constantemente el tablero con cada turno, y reflejar estos cambios en la interfaz gráfica de los clientes |
Historia de usuario 14 | Programar un deck finito de 100 fichas de donde todos los jugadores reciben la cantidad que gastan al formar palabras |
Historia de usuario 15 | Asociar un puntaje específico a cada ficha |
Historia de usuario 16 | Generar espacios multiplicadores en el tablero y la matriz de juego, tanto a nivel de lógica del servidor como de representación en la interfaz gráfica |
Historia de usuario 17 | Mostrar una tabla de puntajes con la puntuación de todos los jugadores de la partida |
Historia de usuario 18 | Programar un botón que permita a los jugadores finalizar la partida |
Historia de usuario 19 | Generar un código de acceso que deberá ser especificado por cada usuario que quiera ingresar a la partida |
Historia de usuario 20 | Generar un property file para el IP y la información de la comunicación con el experto en palabras |
Historia de usuario 21 | Terminar la partida en caso de que se acaben las fichas del deck principal del juego |
Historia de usuario 22 | Valorar el puntaje de todos los jugadores y asignar un ganador en función del jugador con más puntos |
a. Crear la clase Board.
b. Posicionar LetterTiles en el board.
c. Establecer una matriz por reserva de memoria de 15x15 espacios, de tipo LetterTile.
d. Colocar multiplicadores en la matriz.
e. Recibir el valor de multiplicador dependiendo de la posición en la que se coloque la ficha.
a. Crear la clase Player.
b. Generar un array donde se puedan almacenar las LetterTiles de cada jugador.
c. Recibir las LetterTiles de manera aleatoria desde el gameDeck, en función de la cantidad de letras utilizadas en el turno.
d. Validar que la cantidad de LetterTiles se mantenga constante en todos los jugadores.
e. Permitir al jugador solicitar LetterTiles al gameDeck cuando este finalice su turno.
a. Crear una ventana de juego.
b. Crear una matriz de cuadrados que simule el tablero del juego original.
c. Crear frames en la interfaz gráfica que representen el deck de cada jugador.
d. Permitir a los jugadores el arrastrar las letras del deck al tablero de juego.
e. Asociar la colocación de palabras en la interfaz gráfica con la parte lógica del sistema.
a. Crear una lista de datos de tipo LetterTile que almacene la palabra creada por los jugadores.
b. Almacenar, además de la letra correspondiente, la posición de las mismas dentro de la matriz de juego.
c. Habilitar la opción para que el jugador envíe su palabra formada al tablero principal del servidor.
a. Habilitar al servidor para que reciba un JSON con la palabra formada por los jugadores.
b. Habilitar al servidor para que reciba la posición de inicio de la palabra formada por los jugadores.
c. Habilitar al servidor para que reciba si la palabra formada por los jugadores está ubicada de forma vertical u horizontal.
d. Posicionar las LetterTiles que conforman la palabra formada por los jugadores en el tablero principal del servidor.
a. Crear la clase Dictionary.
b. Crear un archivo de texto que contenga el diccionario de todas las partidas permitidas dentro del juego.
a. Acceder al archivo de texto que contiene todas las palabras permitidas.
b. Validar si la palabra formada por los jugadores existe entre las palabras permitidas del diccionario.
a. Crear la clase Expert.
b. Habilitar la conexión del servidor con el experto en palabras.
c. Establecer una comunicación con el experto en palabras, por medio de correo electrónico, para validar la existencia de la palabra colocada por el jugador.
d. Permitir que el experto en palabras pueda responder a la solicitud de validación de una nueva palabra colocada por el jugador.
e. Configurar al servidor para que maneje la respuesta del experto en palabras (decidir si la palabra se agrega o no al diccionario).
a. Diseñar una función que conecte con la clase Dictionary en caso de que el experto haya validado la palabra y se quiere añadir al mismo.
a. Habilitar que el juego permita salas de dos, tres o cuatro jugadores por partida.
a. Crear la clase Server.
b. Crear la clase Client.
c. Crear una simulación de comunicación entre el cliente y el servidor.
d. Implementar un algoritmo que cifre y descifre JSON en ambas clases cliente y servidor.
e. Establecer una comunicación entre los clientes y el servidor por medio de sockets.
f. Enviar mensajes al servidor una vez se haya finalizado el turno de los jugadores.
g. Recibir una respuesta desde el servidor a los clientes una vez se haya analizado la información recibida.
a. Generar un botón en la ventana de juego que permita a los jugadores terminar su turno y enviar la información al servidor.
a. Generar una actualización constante sobre los tableros de todos los jugadores cada vez que un jugador finalice su turno y su información enviada sea analizada por el servidor.
a. Generar un archivo csv que contenga la letra, la puntuación y la cantidad de fichas de cada uno de los jugadores.
b. Crear la clase LetterTile.
c. Leer el archivo csv e instanciar las letterTiles en función de la información contenida en dicho archivo.
a. Programar un atributo puntuación a los objetos de la clase LetterTile.
a. Generar un archivo csv que contenga la configuración de la matriz de juego y sus multiplicadores de puntaje.
b. Crear un atributo de la clase Board que sea una matriz de enteros.
c. Leer el csv con la configuración de la matriz de juego y llenar esta matriz de enteros del Board con esta información.
a. Establecer una estructura dentro del jugador que contenga las puntuaciones de los otros jugadores.
b. Representar en el GUI el puntaje de cada jugador.
a. Crear una ventana para el menú de inicio.
b. Programar que esta ventana permita crear una nueva partida o unirse a una ya existente.
c. Al seleccionar la opción de crear partida, desplegar una ventana donde se especifique el número de jugadores que podrán unirse al usuario.
d. Al seleccionar la opción de unirse a partida, desplegar una ventana donde se solicite el código de la partida a la que el jugador quiere unirse.
a. Generar un archivo que contenga las configuraciones de IP y de comunicación con el experto en palabras.
b. Establecer una función que lea y cargue la información de este archivo al programa.
a. Verificar constantemente que el gameDeck, parte del sistema que contiene todas las letterTiles que son repartidas a los jugadores con la formación de cada palabra, no se encuentre vacío.
b. Establecer que si el gameDeck
a. Solicitar a cada jugador su puntaje al finalizar la partida.
b. Verificar cual es el jugador ganador en función de sus puntajes.
c. Indicar a todos los jugadores cual de ellos ha sido el ganador, por medio de un mensaje proveniente del servidor.
a. Manejar la excepción que se genera cuando un jugador solicita entrar a una partida que ya esté llena.
b. Notificar a este usuario que intentó ingresar a una partida llena que el juego ya se encuentra completo, por medio de una ventana.
En este diagrama de usuario se puede observar el plan de iteraciones del proyecto, a su vez se puede ver asignada la distribución de historias de usuario por criticalidad , de manera que el proyecto se fuera desarrollando de manera incremental realizando lanzamientos de un producto funcional. En este mismo diagrama se aprecia la asignación de tareas entre los integrantes del equipo, mediante post-it del color correspondiente, así como un número que indica el peso que tendría el desarrollador en dicha iteración. [En amarillo se encuentran las tareas conjuntas]
¡Para ver esta imagen en grande, click aquí!
Algoritmos y Estructuras de Datos II - CE2103 - Proyecto I