Bienvenido a Apocalypse Event Manger, una herramienta de gestión de supervivencia diseñada para administrar recursos y eventos en un refugio postapocalíptico.
- 🌐 Dominio del Proyecto
- 🧟 Eventos y Recursos
- 🛠️ Funcionalidades y Mecánicas
- 🌳 Árbol de directorios
- 🚀 Ejecución y Uso
- 🖥️ Guía de la Interfaz
El dominio elegido es un Apocalipsis Zombie.
¿Por qué? Este escenario permite explorar la gestión de recursos limitados bajo presión, la toma de decisiones estratégicas y la planificación de eventos críticos. Combina la lógica de inventario con una narrativa de supervivencia inmersiva, ofreciendo un desafío interesante tanto a nivel de programación como de experiencia de usuario.
Al ser un tema icónico en la cultura popular —presente en cine, videojuegos y literatura—, resulta fascinante colocar al usuario en el rol de líder de un refugio postapocalíptico. Este programa actúa como un gestor de eventos administrativo, cuyo propósito es brindar la interfaz necesaria para organizar misiones y administrar los recursos vitales para la supervivencia. Todo ello enmarcado en una realidad distópica donde la humanidad enfrenta la extinción a causa de un hongo parásito que transforma a sus huéspedes en criaturas hostiles.
Los eventos, también denominados aventuras, son situaciones que planificaría el líder para asegurar la supervivencia del refugio. Se clasifican en 3 tipos: Defensa, Refugio y Supervivencia.
- Defensa: Actividades orientadas a la protección del perímetro, eliminación de amenazas cercanas y mantenimiento del arsenal bélico.
- Refugio: Tareas internas de mantenimiento y reparación de las instalaciones del refugio.
- Supervivencia: Expediciones peligrosas al exterior para la recolección de suministros, rescate de supervivientes y exploración de zonas desconocidas.
A continuación se listan los eventos predefinidos disponibles en el sistema. Estos eventos cuentan con un conjunto mínimo de recursos necesarios para su ejecución; no obstante, es posible asignar recursos adicionales si se considera oportuno. Además, el sistema permite la creación de eventos personalizados, que permiten al usuario elegir libremente sus recursos y especificaciones.
- Aniquilamiento en la vecindad: Salidas rutinarias para limpiar los alrededores del refugio de infectados.
- Expedición al búnker abandonado: Misiones peligrosas para reducir la amenaza de ataques masivos desde el búnker del sur.
- Limpieza de carreteras: Despejar las rutas cercanas para asegurar una vía de escape en caso de emergencia.
- Preparar el armamento: Mantenimiento preventivo de las armas en el cuarto de armamento.
- ¡Vuélvete tramposo!: Instalación y mejora de trampas en el patio exterior para la defensa del refugio.
- Podar el jardín: Despejar el perímetro del refugio cuando los infectados rompen la cerca electrificada.
- Bombillas defectuosas: Mantenimiento de las torres de iluminación.
- Tapar los agujeros: Reparación de fisuras en puertas y ventanas para evitar intrusiones.
- Depurar H2O: Cambio de filtros en el módulo de purificación para asegurar agua potable.
- Ir de compras: Expediciones a supermercados abandonados para conseguir víveres.
- Pasaje a lo desconocido: Exploración de las fronteras de la ciudad en busca de nuevos horizontes.
- Eliminar colmena: Ataques directos a los epicentros de infección (Área 0) para reducir drásticamente la amenaza.
- Recetas de plomo: Búsqueda de medicinas y reactivos en hospitales abandonados.
- Buscar chatarra: Recolección de materiales y piezas en cementerios de autos.
- Rescatar supervivientes: Misiones humanitarias en refugios infectados para encontrar aliados.
- Visita programada: Defensa activa contra hordas provenientes del vecindario de lujo cercano.
- Control de bugs: Diagnóstico y reparación preventiva de anomalías dentro del refugio.
- Atender cultivos: Cuidado de los huertos en el patio exterior para asegurar alimento fresco.
Cada evento tiene un nivel de peligro, una ubicación y una lista de recursos necesarios asignada. Adicionalmente, cada evento tendrá una fecha y hora de inicio y fin, con una duración mínima de 24 horas.
Nota: Las etiquetas de peligro y ubicación son más que nada elementos de ambientación y no influyen en la lógica del gestor.
Los recursos son los bienes materiales y humanos disponibles en el refugio. Cada recurso pertenece a un tipo específico y tiene una cantidad limitada.
En este mundo hostil, la gestión inteligente del inventario es la clave para no perecer. Los recursos no son simples objetos aislados; interactúan entre sí de formas que pueden salvarte la vida o condenarte.
Recurso Complementario: Es aquel recurso indispensable para que otro funcione. Imagina intentar disparar un arma sin balas o conducir un vehículo sin gasolina; en el apocalipsis, un objeto incompleto es solo peso muerto.
Recurso Excluyente: Es aquel recurso que no puede coexistir con otro en la misma misión. Ya sea por rivalidades personales (como la de los emigrantes y los perros), limitaciones de espacio en el transporte o incompatibilidad técnica.
Complementariedad (Se necesitan mutuamente):
- Escopeta de caza y Balas de escopeta: Un arma sin munición es inútil contra los infectados.
- Raciones enlatadas y Abrelatas: Para consumir las provisiones durante una expedición, es indispensable la herramienta para abrirlas.
- Pathfinder y Galón de gasolina: El vehículo modificado requiere combustible para realizar los viajes de exploración.
Exclusión (No pueden ir juntos):
- Emigrante cubano y Husky del refugio: Los emigrantes tienen una fuerte aversión a los perros, lo que genera conflictos en el grupo.
- Escopeta de caza y Baby Shark: Por cuestiones de logística y peso, no es viable cargar con ambos arsenales simultáneamente.
- Kit de Mantenimiento (KMR) y Kit de Seguridad (KSR): Se debe priorizar un enfoque de reparación (mecánico o estructural) para no sobrecargar el inventario con herramientas redundantes.
Nota: En algunos casos, un recurso puede tener más de un recurso complementario. Esto significa que para poder utilizarlo, es necesario llevar al menos uno de los recursos listados como complementarios.
- Gestión de Eventos: Planificación y seguimiento de misiones críticas con fechas de inicio, fin y duración.
- Visualización Temporal: Generación de Diagrama de Gantt con Matplotlib para visualizar la duración y solapamiento de las misiones en el tiempo.
- Sistema de Inventario Lógico: Manejo de recursos mediante pools de cantidad limitada, junto con reglas complejas de complementariedad y exclusión.
- Persistencia y Portabilidad: Capacidad de cargar y guardar el estado completo de la lista de eventos en archivos JSON, permitiendo respaldos y gestión manual de archivos.
- Interfaz Gráfica (GUI): Construida con Kivy, ofreciendo una experiencia visual interactiva y temática.
- Ambientación Inmersiva: Textos y descripciones diseñados para sumergir al usuario en la narrativa de supervivencia.
A continuación se detalla la estructura de carpetas y archivos principales del proyecto, organizada para separar la lógica, la interfaz de usuario y los datos.
Event-Manager-Apocalipsis/
├── assets/ # Imágenes, iconos y recursos gráficos
├── core/ # Lógica central del sistema
│ ├── event_creation.py # Lógica para instanciar nuevos eventos
│ └── event_manager.py # Gestión del ciclo de creación de los eventos
├── data/ # Almacenamiento de datos JSON
│ ├── dynamic/ # Datos persistentes
│ │ ├── current_event.json # Datos temporales del evento en configuración
│ │ ├── running_events.json # Lista de eventos activos
│ │ ├── selected_resources.json # Inventario actual del usuario
│ │ └── selected_resources_event.json # Recursos asignados a un evento específico
│ └── static/ # Datos estáticos
│ ├── events.json # Definiciones de tipos de eventos predefinidos
│ └── resources.json # Catálogo de recursos y sus propiedades
├── fonts/ # Fuentes tipográficas personalizadas
├── modules/ # Módulos y librerías personalizadas
│ ├── styles/
│ │ └── ui_utils.kv # Estilos de componentes reutilizables
│ ├── modules.py # Definiciones de módulos
│ ├── ui_utils.py # Componentes de UI comunes y animaciones
│ └── utilities.py # Funciones de ayuda generales
├── screens/ # Pantallas de la interfaz
│ ├── event_configuration/ # Configuración del evento
│ │ ├── styles/
│ │ │ └── configuration.kv # Estilos de la pantalla de configuración
│ │ ├── widgets/ # Elementos del panel (calendario, mochila)
│ │ │ ├── styles/
│ │ │ │ ├── calendar_widget.kv # Estilos del calendario interactivo
│ │ │ │ ├── editable_event.kv # Estilos para edición de eventos personalizados
│ │ │ │ └── resource_widgets.kv # Estilos para el panel de información de recurso
│ │ │ ├── calendar_widget.py # Lógica del calendario interactivo
│ │ │ ├── configuration_buttons.py # Botones de control para la configuración
│ │ │ ├── configuration_widgets.py # Widgets generales de configuración
│ │ │ ├── editable_event.py # Lógica para crear eventos personalizados
│ │ │ └── resource_widgets.py # Lógica del panel de información de recurso
│ │ └── configuration.py # Controlador principal de la pantalla de configuración
│ ├── event_list/
│ │ ├── graphic/
│ │ │ └── plot.py # Generación del diagrama de Gantt con Matplotlib
│ │ ├── styles/
│ │ │ └── events.kv # Estilos de la lista de eventos
│ │ └── events.py # Controlador de la pantalla de lista de eventos
│ └── init_menu/
│ ├── styles/
│ │ ├── face.kv # Estilos del menú de inicio
│ │ └── file_selector.kv # Estilos del selector de archivos
│ ├── face.py # Lógica del menú de inicio
│ └── file_selector.py # Lógica del selector de archivos
├── main.kv # Estilo del inventario de recurso y estructura de la aplicación
├── main.py # Lógica principal de la aplicación y del selector de recursos
├── requirements.txt # Dependencias del proyecto
└── README.md # Documentación
Sigue esta guía paso a paso para descargar, configurar y ejecutar el Event Manager Apocalipsis en tu ordenador.
Nota: Para ejecutar este proyecto necesitas tener Python instalado en tu sistema. Si no lo tienes, puedes descargarlo desde su sitio web oficial.
Lo primero es obtener una copia de los archivos del proyecto en tu computadora.
- Abre tu terminal o línea de comandos (CMD, PowerShell o Terminal).
- Navega hasta la carpeta donde quieras guardar el proyecto.
- Ejecuta el siguiente comando para descargar los archivos:
git clone https://github.com/SJopez/Event-Manager-Apocalipsis.git- Entra en la carpeta que se acaba de crear:
cd Event-Manager-ApocalipsisUn entorno virtual es como una caja aislada donde instalaremos las herramientas que necesita este programa sin afectar a otros programas en tu PC.
En Windows:
# Crear el entorno
python -m venv venv
# Activar el entorno
.\venv\Scripts\activateEn Linux / macOS:
# Crear el entorno
python3 -m venv venv
# Activar el entorno
source venv/bin/activateAhora que estamos dentro del entorno virtual, necesitamos instalar las librerías que usa el programa, como Kivy.
Ejecuta este comando:
pip install -r requirements.txtFinalmente necesitamos instalar de forma independiente la librería KivyMD, para ello ejecuta en la terminal los siguientes comandos:
# Clona el repositorio
git clone https://github.com/kivymd/KivyMD repo
# Extrae kivymd hacia el directorio
mv repo/kivymd .¡Todo listo! Ahora solo queda iniciar el programa.
Asegúrate de estar en la carpeta raíz del proyecto (donde está el archivo main.py) y ejecuta:
python main.pyA continuación, se presenta una guía detallada para navegar y utilizar las diferentes secciones de la aplicación.
Al ejecutar la aplicación, te encontrarás con el Menú de Inicio, tu punto de partida en el apocalipsis. Aquí encontrarás las siguientes opciones:
- Comenzar: Te lleva directamente a la sección principal de gestión, donde podrás administrar tus recursos y eventos.
- Cargar JSON: Abre un explorador de archivos que te permite navegar por tus directorios locales para cargar un archivo JSON con eventos previamente guardados o configuraciones externas. Nota: El archivo debe cumplir con la estructura de datos esperada por la aplicación.
- Guardar JSON: Guarda el estado actual de tus aventuras y eventos en curso en un archivo JSON, permitiéndote respaldar tu progreso cómodamente para usarlo luego sin tener que manejar los archivos manualmente.
- Salir: Cierra la aplicación de forma segura.
Además, en la esquina inferior izquierda, encontrarás un campo de texto donde puedes ingresar tu Nombre de Usuario, personalizando así tu experiencia como líder del refugio.
Tras pulsar Comenzar en el menú anterior, accederás a esta ventana, el corazón logístico de tu refugio.
- Navegación: En la esquina superior izquierda encontrarás un botón de Volver para regresar al menú de inicio.
- Panel Central:
- Líder del Refugio (Izquierda): Muestra tu apariencia como líder y, justo encima, el nombre que elegiste en el menú anterior (opcional).
- Inventario (Derecha): Despliega todos los recursos disponibles.
- Selección: Al hacer clic sobre un recurso, el color de su borde cambiará para indicar que ha sido seleccionado.
- Deselección: Si vuelves a tocar un recurso seleccionado, sus bordes recuperarán el color original, indicando que ha sido deseleccionado.
Si pasas el cursor por encima de cualquier recurso en el inventario, aparecerá un panel en la esquina superior izquierda con información detallada sobre el mismo (nombre, descripción, tipo, etc.).
Al colocar el cursor sobre el área inferior, cercana a la pequeña flecha que apunta hacia arriba, se desplegará este panel inferior que contiene los botones de Ver Aventuras y Seleccionar Recursos.
- Ver Aventuras: Este botón te lleva a la lista de eventos (aventuras) que están planificados en este momento.
- Seleccionar Recursos: Al usar este botón, se toman los recursos que has seleccionado y avanzas a la sección de Configuración de Aventura.
Una vez seleccionados tus recursos, llegarás a la pantalla de Configuración de Aventura. Aquí es donde definirás los detalles cruciales de tu misión antes de partir.
El panel central se encuentra dividido en dos secciones:
En esta sección encontrarás primeramente un selector desplegable con el cual puedes elegir entre aventuras predefinidas o personalizar la tuya propia.
Dentro de las aventuras predefinidas, se muestra información de la misma:
- Nombre y Descripción: Detalles sobre la misión.
- Tipo de Aventura: Clasificación del evento (ej. Defensa, Refugio, Supervivencia).
- Nivel de Peligro: Indicador de riesgo basado en la escala de peligros (ej. "Pan comido", "Muerte segura").
- Ubicación: El lugar donde se desarrollará el evento.
Recursos Necesarios: Lista de suministros requeridos.
Además, por comodidad, dispones de un botón para seleccionar automáticamente los recursos necesarios, evitando que tengas que volver a la ventana anterior para buscarlos manualmente.
Por último, encontrarás los controles para establecer la duración de tu aventura:
- Selección de Fecha: Al pulsar los botones de Inicio/Final, se abrirá una ventana interactiva de calendario en el centro de la pantalla. Para seleccionar un día específico, basta con navegar hasta él usando las flechas de la parte inferior y hacer clic sobre el mismo. La ventana se cerrará y el día quedará registrado en el espacio correspondiente debajo de los botones de Inicio/Final.
- Selección de Hora: Al igual que en la fecha, para seleccionar la hora se dispone de un widget interactivo de tipo reloj. Puede elegir el horario deseado pulsando en la rueda de la derecha y a su vez alternar entre AM/PM u hora/minutos.
Si te sientes con el coraje de moldear tu propia aventura entonces este es tu lugar. Primeramente te encontrarás con campos de texto y selectores desplegables donde especificarás:
- Nombre
- Descripción
- Tipo
- Nivel de Peligro
- Ubicación
Por supuesto, tu aventura debe tener una imagen horrorosa que represente lo peligrosa que puede llegar a ser. Para ello, puedes pulsar en el botón Seleccionar debajo de la imagen y se abrirá un selector de archivos con el cual podrás navegar por tus directorios y seleccionar cualquier imagen que desees en formato .png/.jpg. ¡Asegúrate de que sea lo suficientemente horrenda! 🐱
Para mayor personalización, se añadió la opción de seleccionar un color que identifique cada aventura, facilitando así su visualización en el Diagrama de Gantt (consulte la última sección para más detalles).
Por último, y al igual que para las aventuras predefinidas, tenemos la sección de selección de fecha y hora. No se hará hincapié en la misma pues ya fue descrita arriba (ver Aventura Predefinida ⬆️).
Este panel es algo menos complicado que el anterior. Aquí encontrarás una lista con los recursos seleccionados para la aventura. En la esquina inferior derecha de cada recurso se puede ver la cantidad seleccionada.
A continuación, se listan las acciones disponibles:
- Evento de Toque: Al pulsar un recurso, este se selecciona igual que en la ventana anterior. Un icono de cesto de basura se mostrará sobre el recurso; para eliminarlo de los seleccionados, basta con pulsar de nuevo sobre él.
- Evento de Hover: Al colocar el cursor sobre un recurso, e igualmente como en la ventana anterior, se muestra el panel de información en la esquina superior izquierda y se hace focus a la entrada de texto numérica que representa la cantidad. De esta forma, puedes escribir directamente la cantidad que deseas asignar al recurso.
Al igual que en la ventana anterior, este panel se muestra al colocar el cursor cerca de la zona inferior. La diferencia en este es que un nuevo botón ha aparecido: Crear aventura. Al pulsarlo, se comprueba la información introducida y se procede a crear la aventura en caso de ser válida.
Ahora que has creado tu primera aventura, seguramente deseas verla en algún lugar. Para ello tenemos esta ventana; puedes acceder a ella desde el menú de inventario o el menú de configuración de evento mediante el botón de Ver Aventuras situado en el panel inferior.
Veamos entonces cómo se encuentra estructurada nuestra ventana:
- A la derecha:
- Barra de búsqueda: Permite buscar eventos por el nombre.
- Botón de ordenamiento: Permite ordenar los eventos por su ID.
- A la izquierda:
- Botón de Gráfica: Muestra la gráfica o Diagrama de Gantt.
- Botón Volver: Permite regresar a la ventana anterior.
Aquí encontrarás una lista con todos los eventos planificados actualmente. Cada evento en la lista es modelado como una tarjeta.
Cada tarjeta contiene información básica del evento (nombre, descripción, etc.), además de 2 botones para interactuar con el mismo:
- Botón de Ver detalles: Al pulsarlo se abre la Ventana Emergente que muestra la información detallada del evento.
- Botón de Borrar evento: Al pulsarlo se borra el evento correspondiente.
Tras pulsar el botón de Ver detalles en alguna de las tarjetas, se abrirá esta ventana que nos muestra toda la información del evento.
Los iconos en el tipo corresponden a:
- Defensa: Revólver 🔫
- Refugio: Casa 🏠
- Supervivencia: Hoguera 🔥
Nota: En la esquina superior derecha se representa el color escogido para su aventura!
Este gráfico contiene información detallada visual sobre los distintos eventos planificados y su solapamiento. En el eje X se encuentran cada uno de los días hasta la fecha máxima en que se ha planificado un evento, mientras que en el eje Y tenemos los eventos (aventuras) representados por su ID.
Cada evento predefinido tiene un color único, mientras que los eventos personalizados tienen un color elegido por el usuario.
Mediante las flechas del teclado es posible navegar por el gráfico:
- Eje X (Tiempo): Flechas izquierda y derecha ⬅️ ➡️
- Eje Y (Eventos): Flechas arriba y abajo ⬆️ ⬇️
Las instrucciones de cómo acceder al gráfico se encuentran en la sección anterior.
Nota: Por conveniencia para el estilo visual del gráfico, se limitó la duración mínima de un evento a 1 día.
Sobrevive, gestiona y prospera.
Autor: 👨💻 Sergio Jorge Montero López
Pd: Gracias por llegar hasta aquí; acabarlo en la fecha prevista me costó la nota de un TC de análisis y uno de álgebra, espero que las estrellitas valgan la pena 🐱





































