Tienda gráfica para juego de mesa Dungeons & Dragons

Juan Carlos Gutiérrez

Nicolas Figueroa

Carlos López silva

Alonso castillo

Enlace:

Enlace del proyecto GitHub Link

1.   Descripción del problema:

 

En el juego de mesa "Dragones y Mazmorras", el narrador necesita gestionar y organizar muchos objetos y precios durante la partida, lo que puede ser complicado y lento. Este proyecto proporciona una herramienta sencilla y eficiente para ayudarle a manejar el inventario y las transacciones. Además, la herramienta es adaptable a diferentes partidas y juegos, ofreciendo una solución flexible y útil.

 

2.   Análisis del problema:

 

A continuación, desarrollaremos y explicaremos los elementos que componen el problema a solucionar, definiendo el sistema y sus interacciones con el medio externo a este.

·  Narrador: El narrador es el usuario principal del sistema. Necesita una herramienta que le permita gestionar y actualizar el inventario de objetos y realizar las transacciones comerciales durante la partida de manera rápida y eficiente. Esto incluye añadir nuevos objetos, modificar sus características y precios, y registrar las transacciones de compra y venta.

·  Jugadores: Los jugadores son los participantes de la partida que interactúan con el inventario del narrador. Necesitan poder consultar qué objetos están disponibles, sus características y precios, y realizar compras o intercambios. La herramienta debe permitir al narrador manejar estas consultas y transacciones sin problemas.

·  Objetos: Los objetos son los ítems utilizados en el juego, cada uno con propiedades específicas como tipo, poder y efectos especiales, además de un precio. La herramienta debe permitir al narrador gestionar estos objetos fácilmente, incluyendo su agregación, modificación y eliminación.

·  Interfaz gráfica: Una interfaz gráfica clara y fácil de usar es crucial para que el narrador pueda interactuar con el sistema de manera eficiente. Esta interfaz debe incluir funciones para buscar y filtrar objetos, visualizar el inventario y registrar transacciones de manera intuitiva.

·  Registro de transacciones: El sistema debe mantener un registro preciso de todas las transacciones realizadas durante la partida. Esto incluye compras, ventas e intercambios de objetos entre los personajes, asegurando que toda la información sea clara y accesible para su consulta en cualquier momento.

El sistema interactúa con el medio externo permitiendo al narrador gestionar el inventario y las transacciones de manera eficiente, lo que facilita la organización y el desarrollo del juego. La interfaz gráfica intuitiva ayuda a minimizar las distracciones, permitiendo que el narrador se concentre en la historia y la dinámica de la partida. Además, el sistema es flexible y puede adaptarse a diferentes estilos de juego y necesidades, proporcionando una herramienta robusta y confiable para mejorar la experiencia tanto del narrador como de los jugadores.

 

3.   Requerimientos:

 

Caso de uso #1:

Nombre: Crear una partida desde cero.

Propósito: El narrador necesita un inventario de objetos nuevo al iniciar una nueva partida

Actor: El narrador

Pre-Condiciones:

- El narrador tiene preparado una partida para realizar en papel, pero no un archivo de partida.

- Tiene iniciada una sesión en la app, junto con el nombre que piensa ponerle a la partida

Evento: El narrador tiene que elegir la opción que no tiene una partida guardada al iniciar la aplicación.

Curso Normal de eventos:

Actor

Sistema

1) El narrador quiere crear una nueva partida desde cero

 

2) El narrador indica que no tiene una partida apretando en la ventana inicial “No”

3) El sistema emerge un buscador de archivos

4) El narrador indica el lugar donde quiere almacenar la base de datos

5) El sistema genera un archivo que contiene la base de datos.

 

6) El sistema abrirá la pantalla de inicio para elegir partida

7) El narrador se registra

8) El sistema guarda el registro

9) El narrador ingresa con una nueva partida

10) El sistema crea la nueva partida ligada al usuario e ingresa a la partida

 

 

Caso de uso #2:

Nombre: Buscar información de un objeto en especifico

Propósito: El narrador necesita buscar información de un objeto para poder usarlo en la partida que está jugando.

Actor: El narrador

Pre-Condiciones:

- Se debe tener inicializada una partida

- Se tiene que estar ubicado en la pestaña de “Shop D&D”

- Tener claro que objeto buscar

Evento: El narrador filtra la información del objeto en “Shop D&D”

Curso Normal de eventos:

Actor

Sistema

1) El narrador ingresa a la página “Shop D&D”

 

2) El narrador usa los filtros de la página para encontrar el objeto

3) El sistema analiza los filtros aplicados

 

4) El sistema muestra los objetos que se adaptan a los filtros colocados

 

Caso de uso #3:

Nombre: Ingresar jugadores e inventario

Propósito: El narrador necesita poder poner a los jugadores de su partida en la aplicación para poder manejarlo

Actor: El narrador

Pre-Condiciones:

- Se debe tener inicializada una partida

- Estar ubicado en la pestaña de “Jugadores” para poner jugadores

- Conocimientos detallados sobre los jugadores y sus personajes, junto con su dinero

Evento: El narrador ingresa la información del usuario y le da al botón “Añadir jugador” en “Jugadores”

Curso Normal de eventos:

Actor

Sistema

1) El narrador ingresa a la página “Jugadores”

 

2) El narrador ingresa el nombre del usuario, clase y la cantidad de dinero que tiene

 

3) El narrador le da al botón “Añadir jugador”

4) El sistema registra la información del jugador en la partida

 

5) El sistema muestra en pantalla al jugador registrado con su ID, nombre, clase y la cantidad de dinero que tiene actualmente

 

 

·     Diagrama de clases:

 

·     Diagrama de secuencias de Caso de Usuario 1:

4.   Pruebas:

1)       Crear una partida desde cero: para crear una partida desde el programa ya compilado por primera vez se abrirá la siguiente ventana al abrir el “tienda.jar”. Al elegir “No” pedirá elegir una ruta para guardar la partida que se creará a continuación (Un archivo .db). Al seleccionar la ruta/archivo de guardado previo se abrirá la de inicio para poder elegir una partida (Si es que se ingresó un usuario):

Un letrero de color blanco

Descripción generada automáticamente con confianza media     Interfaz de usuario gráfica, Texto, Aplicación

Descripción generada automáticamenteInterfaz de usuario gráfica, Sitio web, Calendario

Descripción generada automáticamente

En la ventana en el cuadro inferior central se ingresará el nombre de usuario al que se asociará la partida y se guardará al hacer clic en el botón unirse ubicado a la derecha del cuadro de texto.

El nombre de usuario se ingresa en el primer cuadro a la derecha y un nombre para la partida en el cuadro de texto que esta debajo.

Si no hay partida como en el caso de un usuario nuevo, se escribe el nombre de la partida en el cuadro de texto al centro del lado derecho para luego clicar al botón de inicio de sesión para guardar e iniciar la partida.

Interfaz de usuario gráfica, Sitio web, Calendario

Descripción generada automáticamente

2)       Buscar información de un objeto en específico:

Una vez iniciada una partida se abrirá la tienda, donde hay varios cuadros de selección que actúan de filtro para buscar algo específico.

Como comentario adicional el botón reset ubicado a la misma altura que los nombres de las columnas a la derecha es para reiniciar los filtros que se utilizaron para dejarlos sin ninguna selección

Interfaz de usuario gráfica

Descripción generada automáticamente con confianza baja

El primero es para selección del jugador que compraría en la tienda, en esta parte se omite, el ingreso de jugadores se verá en el siguiente caso de uso.

La segunda es para elegir el tipo de tienda por ejemplo una herrería, una tienda de arquería, un templo entre otras opciones:

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

Tabla

Descripción generada automáticamente con confianza media

La segunda es para filtrar el tipo de objeto que se quiere comprar por ejemplo un arma, armadura, o contratar un servicio como podría ser un viaje entre ciudades:

Interfaz de usuario gráfica, Aplicación, Tabla

Descripción generada automáticamente con confianza media

Tabla

Descripción generada automáticamente

La tercera es para subclases dentro de una categoría como podría ser en el caso de armaduras si son ligeras o de cuerpo completo:

Interfaz de usuario gráfica, Aplicación, Tabla

Descripción generada automáticamente

Tabla

Descripción generada automáticamente con confianza media

La cuarta opción es para los ítems que requieren tener “fe” para poder conseguirlos como sería el caso de un clérigo:

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente con confianza media

Tabla

Descripción generada automáticamente con confianza baja

La quinta opción es para filtrar por tipo de ubicación de donde se puede encontrar el ítem como podría ser que solo se encuentran en la gran ciudad o que se encuentran solo en pueblos en tierras remotas:

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

Interfaz de usuario gráfica

Descripción generada automáticamente con confianza media

La última opción es para filtrar por los ítems que se puede comprar cuantas veces uno quiera o si tienen algún límite de cuanto se puede comprar:

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

Interfaz de usuario gráfica

Descripción generada automáticamente con confianza media


 

3)       Ingresar jugadores e inventario:

Cuando se abre la ventana de la tienda ahí 3 pestañas en la parte superior izquierda, la cual al hacer clic se cambia de una vista a otra, en la segunda es donde se realiza el ingreso de nuevos jugadores:

Interfaz de usuario gráfica, Texto, Aplicación

Descripción generada automáticamente

En la parte inferior izquierda se puede ver 2 cuadros de texto y un cuadro para elegir el trabajo/clase del jugador:

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

 

Para ingresar un jugador nuevo se pone el nombre del jugador en la casilla superior, cuando dinero va a tener en la casilla inferior y la clase en selector disponible:

Interfaz de usuario gráfica, Texto, Aplicación

Descripción generada automáticamente Interfaz de usuario gráfica, Texto, Aplicación, Chat o mensaje de texto

Descripción generada automáticamente Interfaz de usuario gráfica, Texto, Aplicación

Descripción generada automáticamente


 

Al hacer clic en el botón de añadir jugador se añadirá a la tabla que está al lado y ya estará listo su ingreso:

Interfaz de usuario gráfica, Aplicación, Tabla

Descripción generada automáticamente

El cuadro superior derecho es para ajustar el dinero del jugador en caso de que por ejemplo dentro de la partida no esté atento y le roben/pierda donde guarda el dinero que lleva con el (se ingresa el monto a sumar/restar, se pueden poner número negativo):

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente con confianza media

La lista de jugadores se actualiza cada vez que se agrega uno nuevo

Tabla

Descripción generada automáticamente

Tabla

Descripción generada automáticamente

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

 

 

5.   Dificultades y bugs:

El principal problema y causante de los principales errores actuales fue un cambio de versión entre la librería de SQLite y el cambio de java 20 a java 22 lo que provocó que parte del código dejara de compilar por lo que se tuvo que volver a java 20.

Volver a java 20 no resolvió todo por las actualización de dependencias por lo que se tuvieron que arreglar manualmente los errores de las query a la base de datos o no se ejecutaban o retornaban otros datos, otro ejemplo fue que no reconocía cuando el jugador se quedaba sin dinero y le dejaba comprar quedando en saldo negativo, lo cual fue corregido ,actualmente se corrigió la mayoría de los errores haciendo la aplicación utilizable siendo de los pocos que quedan que el registro de jugadores por partida que antes estaba diferenciado y solo cargaba los jugadores de la partida actual en los cuadros de selección y en el inventario se puede ver los jugadores de otras partidas:

 

Sin embargo, en la tabla de jugadores solo se muestran los jugadores de la partida de la cual se inició sesión

Tabla

Descripción generada automáticamenteInterfaz de usuario gráfica, Aplicación

Descripción generada automáticamente