An open API service indexing awesome lists of open source software.

https://github.com/dnbsammie/reto01

Simulador de Viaje Interplanetario
https://github.com/dnbsammie/reto01

code exercises java space

Last synced: 8 months ago
JSON representation

Simulador de Viaje Interplanetario

Awesome Lists containing this project

README

          

RETO 1 - Simulador de Viaje Interplanetario



Introducción




Issues


Stars


Desarrollar un simulador de viaje interplanetario, donde se gestionará un viaje espacial a diferentes planetas del sistema solar. El usuario obtendrá la experiencia de elegir el destino, gestionar recursos de la nave y resolver conflictos a medida que los eventos se vuelven más complejos.

Puedes encontrar el link de la presentación acá mismo 🎥

Lenguajes y herramientas:





Índice:


  1. 🎯 Objetivos

  2. 🚀 Requerimientos

  3. ⚙️ Metodología

  4. 🎬 Creditos

🎯 Objetivos



  1. Seleccionar Destino interplanetario


    • Permitir al usuario elegir un planeta destino entre una lista de planetas del sistema solar.


  2. Calcular distancia y tiempo de viaje


    • Calcular la distancia entre la tierra y el planeta destino, considerar el tiempo de viaje tomando la velocidad dada.


  3. Gestionar Recursos de la nave


    • Calcular la cantidad de combustible necesario para el viaje y permitir al usuario administrar los recursos (Combustible y oxigeno). Esto variara según los recursos disponibles y necesarios para cierto destino.


  4. Simular eventos aleatorios durante el viaje


    • Introducción de eventos aleatorios que puedan afectar el viaje tanto del entorno como del sistema. El usuario deberá intervenir para resolverlos.


  5. Monitoreo el estado del viaje


    • El usuario podrá ver el progreso del viaje, cantidad de recursos disponibles y tiempo restante para llegar al destino.


🚀 Requerimientos



  1. Selección de Planeta de Destino


    • Presentar al usuario una lista de planetas del sistema solar para elegir el destino del viaje.

    • Solicitar la confirmación del usuario y mostrar información básica del planeta.


  2. Gestión de la Nave Espacial


    • El sistema ofrecerá al usuario una lista de naves espaciales, cada una con características básicas, como la velocidad máxima y la capacidad de pasajeros.

    • El usuario deberá especificar la cantidad de pasajeros que viajarán. El sistema solo verificará que se ingrese un valor positivo, pero no limitará la cantidad máxima.

    • Basado en la velocidad de la nave y la distancia del planeta seleccionado, el sistema calculará la duración estimada del viaje en días.


  3. Simulación del Viaje


    • El sistema mostrará el avance del viaje mediante una serie de mensajes en la consola, indicando el porcentaje completado del trayecto.

    • El progreso se calculará utilizando bucles básicos y se presentaran mensajes condicionales para indicar las etapas clave del viaje, como: "Inicio del viaje", "Mitad del camino", y "Llegada al destino".


  4. Interacción con el Usuario


    • El sistema debe proporcionar un menú interactivo en consola que permita al usuario elegir entre las siguientes opciones:


      • Seleccionar un Planeta de Destino.

      • Seleccionar una Nave Espacial.

      • Iniciar la simulación del viaje.

      • Salir del programa.


    • El sistema debe verificar que el usuario elija una opción válida en el menú. Si el usuario ingresa una opción no válida, se mostrará un mensaje y se volverá a presentar el menú.


  5. Manipulación de Datos


    • Los datos como la distancia al planeta, la velocidad de la nave, y la cantidad de pasajeros se manejarán utilizando tipos de datos básicos como int, double, y String.

    • Los planetas y las naves espaciales se almacenarán en arrays para facilitar su selección e información. Por ejemplo, un array de strings para los nombres de los planetas y otro array para las distancias correspondientes.


  6. Modularidad y Métodos


    • El sistema debe utilizar métodos para separar la lógica de selección del planeta, cálculo de la duración del viaje, y simulación del trayecto. Cada funcionalidad principal se implementará en un método separado.

    • Los métodos aceptarán parámetros para recibir datos del usuario.


⚙️ Metodología


Descripción General del Flujo de Sistema:


  1. Inicio del Programa:


    • El programa se inicia y muestra al usuario un menú interactivo. El usuario puede elegir la acción que desea realizar.


  2. Selección del Planeta y la Nave


    • El usuario elige un planeta de destino de una lista proporcionada por el sistema. El sistema muestra la distancia y una breve descripción del planeta.

    • A continuación, el usuario selecciona una nave para el viaje y específica la cantidad de pasajeros.


  3. Simulación del Viaje


    • Al iniciar la simulación, el sistema muestra el progreso del viaje en intervalos, indicando etapas clave y calculando la duración total del trayecto en función de la velocidad de la nave y la distancia al planeta.


  4. Finalización del Viaje


    • Una vez que el viaje alcanza el 100% de progreso, el sistema muestra un mensaje indicando la llegada exitosa al planeta de destino.


  5. Salir del Programa


    • Si el usuario selecciona la opción para salir, el sistema cierra el programa de manera correcta.


📦 Estructura de Paquetes:

```
spacesimulator/
└── src/
├── controllers/
│ ├── MenuController.java
│ ├── ResourceController.java
│ └── SimulationController.java
├── managers/
│ └── EventManager.java

├── models/
│ ├── Event.java
│ ├── EventContext.java
│ ├── Planet.java
│ ├── Spaceship.java

├── utils/
│ ├── ConsoleUtil.java
│ └── TimeUtil.java

└── App.java
```

🎬 Creditos


Author: Luis Triana

GitHub: https://github.com/luistriana032006



Author: Samuel Rivera

GitHub: https://github.com/dnbsammie

---