tp2 Algo3 2c2023 Corregido
tp2 Algo3 2c2023 Corregido
[75.07 / 95.02]
Algoritmos y programación III
Trabajo práctico 2: AlgoRoma
Edición: “Gladiadores en fuga”
(trabajo grupal)
Estudiantes:
Nombre Padrón Mail
Tutor:
Nota Final:
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
Índice
1. Objetivo 3
2. Consigna general 3
3. Especificación de la aplicación a desarrollar 3
Inicio del Juego 4
Desarrollo 4
Los gladiadores: Seniority y energía 4
Premios 4
Obstáculos 5
Jugador 5
Comienzo y fin de la partida 5
4. Interfaz gráfica 6
5. Herramientas 6
6. Entregables 7
7. Formas de entrega 7
8. Evaluación 7
9. Entregables para cada fecha de entrega 8
Entrega 0 (Semana 11 del calendario) 8
Entrega 1 (Semana 12 del calendario) 8
Caso de uso 1 8
Caso de uso 2 8
Caso de uso 3 8
Caso de uso 4 8
Caso de uso 5 8
Caso de uso 6 8
Caso de uso 7 8
Caso de uso 8 8
Caso de uso 9 9
Caso de uso 10 9
Caso de uso 11 9
Caso de uso 12 9
Entrega 2 (Semana 13 del calendario, 6 / 8 de Junio) 9
Caso de uso 13 9
Caso de uso 14 9
Caso de uso 15 9
Caso de uso 16 9
Caso de uso 17 9
Caso de uso 18 9
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
Caso de uso 19 10
Caso de uso 20 10
Entrega 4 (Semana 15 del calendario, 20 / 22 de Junio) 10
Entrega 5 - Final: (Semana 16 del calendario, 27 / 29 de Junio) 10
10. Informe 11
Supuestos 11
Diagramas de clases 11
Diagramas de secuencia 11
Diagrama de paquetes 11
Diagramas de estado 11
Detalles de implementación 11
Excepciones 12
Anexo 0: ¿Cómo empezar? 13
Requisitos, análisis 13
Anexo I: Buenas prácticas en la interfaz gráfica 13
Prototipo 13
JavaFX 13
Recomendaciones visuales 13
Tamaño de elementos 13
Contraste 14
Uso del color 14
Tipografía 14
Recomendaciones de interacción 14
Manejo de errores 14
Confirmaciones 14
Visibilidad del estado y otros 14
1. Objetivo
Desarrollar una aplicación de manera grupal aplicando todos los conceptos vistos en el curso,
utilizando un lenguaje de tipado estático (Java) con un diseño del modelo orientado a objetos y trabajando
con las técnicas de TDD e Integración Continua.
2. Consigna general
Desarrollar la aplicación completa, incluyendo el modelo de clases, sonidos e interfaz gráfica. La
aplicación deberá ser acompañada por pruebas unitarias e integrales y documentación de diseño.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
INFORMACIÓN
El mapa que recorrerán los gladiadores será compartido por la cátedra en formato JSON
Desarrollo
1. Empieza un jugador al azar y sigue en sentido lineal (si hay 4 jugadores y empieza 3, sigue 4, 1,2,)
2. El primer jugador tira un dado de 6 caras y avanza tantas casillas como indica el dado.
3. En la casilla donde cae, puede o no tener un premio o un obstáculo
a. Si es un premio, puede recibir comida (incrementa energía) ó equipamiento (ver la sección
“Premios” a continuación)
b. Si es un obstáculo, será penalizado de acuerdo al tipo de obstáculo y equipamiento que
posea el gladiador en ese momento (ver sección obstáculos).
4. Todos tiran dados y avanzan hasta llegar a Pompeya.
a. Si el jugador que llegó a Pompeya tiene todos los equipamientos es ganador.
b. Sino, debe retroceder a la mitad del tablero
5. Si un jugador tiene una energía inferior a 0, ese turno se pasa y se le acreditan 5 puntos extra
6. Hay un máximo de 30 tiradas de dados. Si en 30 tiradas un jugador no llega pierde.
Novato 1-8 0
Semi-Senior 8-12 5
Senior 12 en adelante 10
Los gladiadores tienen un seniority que se incrementa por cantidad de turnos jugados. Al iniciar un turno,
los jugadores reciben un plus de energía según la tabla.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
Premios
A continuación detallamos los tipos de premios que pueden encontrar en las casillas:
Premio Qué sucede Impacto
Obstáculos
A continuación detallamos los tipos de obstáculos que pueden encontrar en las casillas:
Obstáculo Qué sucede Impacto
Asiste a un Bacanal El jugador tira un dado para Saca 4 puntos de energía por cada
determinar la cantidad de a trago tomado
copas de vino a tomar (1-6)
Fiera salvaje hambrienta Se desata una pelea. Se resta Energía perdida según equipamiento::
energía según el equipamiento Nada: -20
que tenga Casco = -15
el gladiador Casco, Armadura = -10
Casco, Armadura, Escudo y espada = -2
Llave de la casa = 0
Jugador
La aplicación se juega entre 2 y 6 jugadores. Al iniciar el juego el sistema debe consultar al
usuario su nombre con las validaciones que correspondan.
Validaciones:
● El nombre del jugador debe contener por lo menos 4 caracteres.
Tablero
El tablero es el lugar donde se lleva a cabo el juego. Consiste en casillas secuenciales (simil
carrera de mente, ludo) sobre una grilla. La disposición de casillas del tablero también vendrá
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
4. Interfaz gráfica
La interacción entre el usuario y la aplicación deberá ser mediante una interfaz gráfica intuitiva.
Consistirá en una aplicación de escritorio utilizando JavaFX y se pondrá mucho énfasis y se evaluará como
parte de la consigna su usabilidad. (en el anexo I se explicarán algunas buenas prácticas para armar la
interfaz gráfica de usuario o GUI)
5. Herramientas
1. JDK (Java Development Kit): Versión 1.8 o superior.
2. JavaFX
3. JUnit 5 y Mockito: Frameworks de pruebas unitarias para Java.
4. IDE (Entorno de desarrollo integrado): Su uso es opcional y cada integrante del grupo puede
utilizar uno distinto o incluso el editor de texto que más le guste. Lo importante es que el
repositorio de las entregas no contenga ningún archivo de ningún IDE y que la construccnos de los
IDEs más populares son:ión y ejecución de la aplicación sea totalmente independiente del entorno
de desarrollo.
a. Eclipse
b. IntelliJ
c. Netbeans
5. Herramienta de construcción: Se deberán incluir todos los archivos XML necesarios para la
compilación y construcción automatizada de la aplicación. El informe deberá contener
instrucciones acerca de los comandos necesarios (preferentemente también en el archivo
README.md del repositorio). Puede usarse Maven o Apache Ant con Ivy.
6. Repositorio remoto: Todas las entregas deberán ser subidas a un repositorio único en GitHub para
todo el grupo en donde quedarán registrados los aportes de cada miembro. El repositorio puede
ser público o privado. En caso de ser privado debe agregarse al docente corrector como
colaborador del repositorio.
7. Git: Herramienta de control de versiones
8. Herramienta de integración continua: Deberá estar configurada de manera tal que cada commit
dispare la compilación, construcción y ejecución de las pruebas unitarias automáticamente.
Algunas de las más populares son:
a. Travis-CI
b. Jenkins
c. Circle-CI
d. GitHub Actions (recomendado)
6. Entregables
Para cada entrega se deberá subir lo siguiente al repositorio:
No se deberá incluir ningún archivo compilado (formato .class) ni tampoco aquellos propios de algún
IDE (por ejemplo .idea). Tampoco se deberá incluir archivos de diagramas UML propios de alguna
herramienta. Todos los diagramas deben ser exportados como imágenes de manera tal que sea
transparente la herramienta que hayan utilizado para crearlos.
7. Formas de entrega
Habrá 5 entregas formales que tendrán una calificación de APROBADO o NO APROBADO en el
momento de la entrega. Además, se contará con una entrega 0 preliminares.
Aquel grupo que acumule 2 no aprobados, quedará automáticamente desaprobado con la
consiguiente pérdida de regularidad en la materia de todos los integrantes del grupo. En cada entrega se
deberá incluir el informe actualizado.
8. Evaluación
El día de cada entrega, cada ayudante convocará a los integrantes de su grupo, solicitará el informe
correspondiente e iniciará la corrección mediante una entrevista grupal. Es imprescindible la presencia de
todos los integrantes del grupo el día de cada corrección.
Se evaluará el trabajo grupal y a cada integrante en forma individual. El objetivo de esto es
comprender la dinámica de trabajo del equipo y los roles que ha desempeñado cada integrante del grupo.
Para que el alumno apruebe el trabajo práctico debe estar aprobado en los dos aspectos: grupal e
individual (se revisarán los commits de cada integrante en el repositorio).
Dentro de los ítems a chequear el ayudante evaluará aspectos formales (como ser la forma de
presentación del informe), aspectos funcionales: que se resuelva el problema planteado y aspectos
operativos: que el TP funcione integrado.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
Caso de uso 1
Caso de uso 2
● Verificar que si recibe un premio por tercera vez obtiene escudo y espada.
Caso de uso 7
● Verificar que si hay un combate con una fiera salvaje y tiene un casco, pierde 10 puntos de
energía.
Caso de uso 8
● Verificar que si pasan 8 turnos, el seniority del gladiador pasa de novato a senior y ve su
energía incrementada al próximo turno.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
Caso de uso 9
● Verificar que si llega a la meta sin la llave en el equipamiento, retrocede a la mitad de las
casillas.
Caso de uso 10
● Verificar que si lo ataca una fiera salvaje y posee todo el equipamiento, el daño en energía
es 0
Caso de uso 11
● Verificar que si el gladiador tiene la llave y recibe otro premio, no cambia nada
Caso de uso 12
Pruebas (sin interfaz gráfica). Refactor de todas aquellas pruebas de la entrega 1 que hayan sido puros
getters para verificar valores y no hayan verificado comportamiento.
Caso de uso 13
Caso de uso 14
● Verificar la lectura y posterior conversión a unidades del modelo de dominio del JSON de
enemigos
Caso de uso 16
● Verificar la lectura y posterior conversión a unidades del modelo de dominio del JSON del
mapa.
Caso de uso 17
Caso de uso 18
● Verificar el sistema de log a utilizar necesario para la entrega 3. El log puede ser una
implementación propia, casera y simple del grupo o utilizar alguna librería.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
● Pantallas inicial de comienzo del juego donde se le pide el nombre al usuario. Validación
del mismo y botón para dar inicio al juego.
● Visualización del mapa según JSON.
Se tiene que poder jugar una partida completa a través de las pruebas e ir viendo en la consola
todos los eventos que están ocurriendo, por ejemplo:
…
Gladiador Tito avanza 2, es atacado por un animal en casilla (X,Y) y pierde energía 10
Gladiador Comodus encuentra un premio y recib casco en casilla (x,y)
Gladiador Tito no tiene energía (-5) y pasa turno
Gladiador Comodus avanza 4, encuentra pizza, energía (10)
…
Jugador Tito Gana la Partida
Trabajo Práctico completo funcionando, con interfaz gráfica final, sonidos e informe completo.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
10. Informe
El informe deberá estar subdividido en las siguientes secciones:
Supuestos
Documentar todos los supuestos hechos sobre el enunciado. Asegurarse de validar con
los docentes.
Diagramas de clases
Varios diagramas de clases, mostrando la relación estática entre las clases. Pueden agregar todo el
texto necesario para aclarar y explicar su diseño de manera tal que el modelo logre comunicarse de
manera efectiva.
Diagramas de secuencia
Varios diagramas de secuencia, mostrando la relación dinámica entre distintos objetos planteando
una gran cantidad de escenarios que contemplen las secuencias más interesantes
del modelo.
Diagrama de paquetes
Incluir un diagrama de paquetes UML para mostrar el acoplamiento de su trabajo.
Diagramas de estado
Incluir diagramas de estados, mostrando tanto los estados como las distintas transiciones para varias
entidades del modelo.
Detalles de implementación
Deben detallar/explicar qué estrategias utilizaron para resolver todos los puntos más conflictivos del
trabajo práctico. Justificar el uso de herencia vs. delegación, mencionar que principio de diseño aplicaron
en qué caso y mencionar qué patrones de diseño fueron utilizados y por qué motivos.
IMPORTANTE
No describir el concepto de herencia, delegación, principio de diseño o patrón de diseño. Solo justificar
su utilización.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
Excepciones
Explicar las excepciones creadas, con qué fin fueron creadas y cómo y dónde se las atrapa explicando
qué acciones se toman al respecto una vez capturadas.
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
1. Entiendan el dominio del problema. Definir y utilizar un lenguaje común que todo el equipo
entiende y comparte. Ej.: Si hablamos de “X entidad”, todos entienden que es algo ... Si los
conceptos son ambiguos nunca podrán crear un modelo congruente.
2. Compartan entre el grupo, pidan opiniones y refinen la idea en papel antes de sentarse a
programar. Pueden escribir en ayudante-virtual si tienen dudas
Prototipo
Venimos escribiendo código, integrales y UML todo el cuatrimestre. Me están pidiendo una interfaz
gráfica. ¿Cómo se empieza? La respuesta es lápiz y papel. No código!.
1. Armen un dibujo o prototipo en papel (pueden usar google docs o cualquier herramienta también)
de todas las “pantallas”. No tiene que ser perfecto.
2. Compartan entre el grupo, pidan opiniones y refinen la idea en papel antes de sentarse a
programar. Pueden escribir en ayudante-virtual si tienen dudas
JavaFX
Entender cómo funciona JavaFX es clave para implementar la GUI correctamente. No subestimen el
tiempo que lleva implementar y modificar la UI o interfaz de usuario. Lean todo lo que ofrece y las buenas
prácticas de la tecnología. Hay plugins específicos para el IDE, pero por más que usen herramientas
WYSIWYG, siempre conviene entender la API para mejorar el código autogenerado que casi nunca es
óptimo.
Recomendaciones visuales
Tamaño de elementos
● Se recomienda un tamaño de tipografía de al menos a 10 puntos al mayor contraste negro contra
blanco para asegurar la legibilidad, o bien 12 puntos.
● Para los botones o elementos interactivos, el tamaño mínimo del área debería ser de 18x18.
● Extra: Los elementos más importantes deberían ser más grandes y estar en posiciones más
accesibles (poner ejemplos)
[95.02 / 75.17] Trabajo Práctico 2 Segundo cuatrimestre 2023
Contraste
● Aseguren que el texto y los elementos tengan buen contraste y se puedan leer bien
● Se sugiere un contraste cercano a 3 entre textos y fondos para texto grande e imágenes.
● Herramientas para verificar contraste: https://colourcontrast.cc/
https://contrast-grid.eightshapes.com
Tipografía
● No se recomienda usar más de 2 tipografías para toda la aplicación
● Asegurarse de que esas tipografías se exporten correctamente en en TP
● Evitar tipografías “artísticas” para texto, menú y botones, ya que dificultan la lectura
Recomendaciones de interacción
Manejo de errores
● No escalar excepciones a la GUI. Es un No absoluto. Enviar a la consola.
● Si muestran errores al usuario, el mensaje de error debe estar escrito sin jerga técnica y permitir al
usuario continuar y entender lo que está pasando
● Siempre optar por validar y prevenir errores, a dejar que el usuario ejecute la acción y falle.
Confirmaciones
● Antes de cerrar o ejecutar cualquier operación terminal, una buena práctica es pedir confirmación
al usuario (para el alcance del tp no sería necesario)