Juego de rol por turnos en Python con guardado en base de datos MySQL y un menú de posada.
Este proyecto es un RPG de consola con un sistema básico de combate por turnos, tres clases jugables y una integración inicial con base de datos para guardar y cargar personajes.
- Crear un personaje nuevo de clase
Mago,BerserkeroStrider. - Cargar personajes guardados desde la base de datos.
- Visitar la posada y elegir entre:
- Descansar y recuperar vida/magia/stamina.
- Entrar a la tienda para comprar y vender objetos.
- Ver estadísticas, habilidades y objetos del personaje.
- Salir de aventuras para obtener botín (objetos o habilidades).
- Sistema de combate por turnos disponible en
app/engine/batalla.py. - Manejo de efectos sobre tiempo, como
Quemado. - Guardado de inventario y habilidades en la base de datos.
- Clonar el repositorio.
- Desde la carpeta raíz ejecutar:
docker compose up --build
- Cuando termine la preparación, salir con
Ctrl+C. - Detener y limpiar el servicio (solo la primera vez):
docker compose down
- Iniciar los contenedores en segundo plano:
docker compose up -d
- Ejecutar el juego dentro del contenedor:
docker exec -it rpg_game python main.py
- El juego pide si deseas crear un personaje nuevo o cargar uno existente.
- Si eliges crear, se ingresa nombre y clase, y el personaje se guarda en la base de datos.
- Si eliges cargar, el sistema muestra los personajes guardados y carga inventario/habilidades.
- Luego se ingresa a la posada, donde se puede descansar, comprar/vender, revisar estado o salir de aventuras.
app/main.py: punto de entrada. Controla la creación/carga de personajes y arranca la posada.app/bd/bd_manager.py: gestiona conexión MySQL, guardado y carga de personajes, inventario y habilidades.app/engine/batalla.py: lógica de combate por turnos.app/engine/posada.py: menú principal del juego una vez iniciado el personaje.app/engine/tienda.py: tienda de compra/venta de objetos.app/engine/objetos.py: definición de objetos y pociones.app/engine/habilidad.py: definición de habilidades y reglas de uso.app/engine/efectos.py: efectos continuos comoQuemado.app/engine/cofre.py: generación de botín aleatorio.app/entidades/personaje.py: clase basePersonajey métodos comunes.app/entidades/berserker.py,app/entidades/mago.py,app/entidades/strider.py: clases de personaje concretas.app/entidades/factoryClases.py: fábrica para crear/cargar personajes.app/entidades/factoryHabilidades.py: fábrica para cargar habilidades desde la base de datos.app/entidades/factoryObjetos.py: fábrica para cargar objetos desde la base de datos.
Este proyecto también incluye un diagrama de clases en class_diagram.mmd.
classDiagram
Personaje <|-- Mago
Personaje <|-- Berserker
Personaje <|-- Strider
Personaje o-- Habilidad : posee
Personaje o-- Objeto : posee
Personaje o-- Efecto : posee
Batalla --> Personaje : combate
Posada --> Personaje : administra
Posada --> Tienda : crea
Tienda --> Personaje : sirve a
DBManager --> Personaje : guarda/carga
- El sistema de batalla existe, pero en
main.pyactualmente se inicia la posada en lugar de la pelea directa. - La base de datos se espera disponible como servicio
dben Docker. - Las habilidades y objetos se guardan en la base de datos usando el nombre de la clase.
- Añadir más habilidades específicas por clase.
- Implementar más efectos de estado (hemorragia, aturdimiento, veneno, etc.).
- Permitir volver a entrar en batallas desde la posada.
- Añadir equipo y armaduras.
- Mejorar la interfaz de usuario de consola.