Loading repository data…
Loading repository data…
LIUNKS / repository
Proyecto Final para el curso de Algoritmos y Estructuras de Datos.
Un emocionante juego educativo que combina diversión y aprendizaje de física a través de la historia de Isaac Newton y sus famosas leyes.
Newton's Apple Quest es un juego educativo interactivo desarrollado en Java con JavaFX que enseña conceptos fundamentales de física de manera divertida y engaging. Los jugadores controlan a Newton recolectando manzanas que caen del árbol mientras aprenden sobre fórmulas físicas esenciales como la gravedad, velocidad, energía y aceleración.
El juego enseña las siguientes fórmulas fundamentales de la física:
| Fórmula | Descripción | Aplicación en el Juego |
|---|---|---|
F = m × g | Fuerza de gravedad | Velocidad de caída de las manzanas |
v = d / t | Velocidad media | Cálculo de movimiento del jugador |
U = m × g × h | Energía potencial | Energía de las manzanas en altura |
K = ½ × m × v² | Energía cinética | Energía de objetos en movimiento |
a = (vf - vi) / t | Aceleración | Cambios de velocidad en el juego |
Clonar el repositorio
git clone https://github.com/LIUNKS/AlgoritmosYEstructurasDeDatos.git
cd AlgoritmosYEstructurasDeDatos/newtons-quest
Configurar la base de datos
newtons_questConexionDB.javaInstalar dependencias
lib/:
mysql-connector-j-8.4.0.jaritextpdf-5.5.13.2.jarEjecutar el proyecto
# Desde NetBeans: Clic derecho en el proyecto > Run
# O desde terminal:
java -cp "lib/*:build/classes" Main._Main
El proyecto sigue una arquitectura MVC (Model-View-Controller) bien definida con separación clara de responsabilidades:
newtons-quest/
├── src/
│ ├── 🎮 Controlador/ # CAPA DE CONTROL
│ │ ├── 📁 componentes/ # Gestores especializados del juego
│ │ ├── 📁 constants/ # Constantes y configuraciones globales
│ │ ├── 📁 dialogs/ # Ventanas emergentes y diálogos
│ │ ├── 📁 navigation/ # Sistema de navegación entre vistas
│ │ ├── 📁 utils/ # Utilidades y herramientas auxiliares
│ │ ├── 📄 GameController.java
│ │ ├── 📄 LoginController.java
│ │ ├── 📄 MainController.java
│ │ ├── 📄 MapController.java
│ │ ├── 📄 QuizController.java
│ │ ├── 📄 QuizResultController.java
│ │ └── 📄 RegisterController.java
│ │
│ ├── 📊 Modelo/ # CAPA DE DATOS
│ │ ├── 📁 dao/ # Acceso a datos (Data Access Objects)
│ │ │ ├── 📄 QuizDAO.java
│ │ │ ├── 📄 RankingDAO.java
│ │ │ └── 📄 UsuarioDAO.java
│ │ ├── 📁 dto/ # Objetos de transferencia de datos
│ │ │ ├── 📄 Apple.java
│ │ │ ├── 📄 Player.java
│ │ │ ├── 📄 Potion.java
│ │ │ ├── 📄 QuizQuestion.java
│ │ │ ├── 📄 QuizResult.java
│ │ │ └── 📄 RankingEntry.java
│ │ └── 📄 ConexionDB.java # Gestión de conexiones a BD
│ │
│ ├── 🖼️ Vista/ # CAPA DE PRESENTACIÓN
│ │ ├── 📁 resources/ # Recursos de estilo
│ │ ├── 📄 Game.fxml # Interfaz del juego principal
│ │ ├── 📄 Login.fxml # Pantalla de inicio de sesión
│ │ ├── 📄 Main.fxml # Menú principal
│ │ ├── 📄 Map.fxml # Mapa de progreso
│ │ ├── 📄 Quiz.fxml # Interfaz del quiz
│ │ ├── 📄 QuizResult.fxml # Resultados del quiz
│ │ └── 📄 Register.fxml # Registro de usuarios
│ │
│ ├── 🎨 recursos/ # ASSETS Y RECURSOS
│ │ ├── 📁 certificado/ # Plantillas para certificados PDF
│ │ ├── 📁 imagenes/ # Imágenes del UI y fondos
│ │ ├── 📁 musica/ # Archivos de música de fondo
│ │ ├── 📁 sonidos/ # Efectos de sonido
│ │ ├── 📁 sprites/ # Sprites de personajes y objetos
│ │ └── 📁 videos/ # Videos educativos
│ │
│ └── 🚀 Main/ # PUNTO DE ENTRADA
│ ├── 📄 _Main.class # Clase compilada
│ └── 📄 _Main.java # Clase principal de la aplicación
│
├── 📚 lib/ # LIBRERÍAS EXTERNAS
│ ├── itextpdf-5.5.13.2.jar # Generación de PDFs
│ └── mysql-connector-j-8.4.0.jar # Conector MySQL
│
└── 🔨 build/ # ARCHIVOS COMPILADOS
└── classes/ # Bytecode Java compilado
| Componente | Responsabilidad | Descripción |
|---|---|---|
GameController | Motor del juego | Gestiona el bucle principal, colisiones y mecánicas |
QuizController | Sistema educativo | Maneja preguntas, respuestas y progreso del quiz |
LoginController | Autenticación | Validación de credenciales y gestión de sesiones |
MapController | Navegación | Control del mapa de progreso y desbloqueables |
componentes/: Managers especializados
AppleManager - Generación y física de manzanasAudioManager - Sistema de audio y músicaPlayerManager - Control del personaje NewtonScoreManager - Puntuaciones y rankingRenderManager - Renderizado gráficoconstants/: Configuraciones estáticas
GameConstants - Constantes del juegodialogs/: Interfaces emergentes
RankingDialog - Tabla de puntuacionesRulesDialog - Reglas del juego| Tipo | Propósito | Archivos |
|---|---|---|
| DAO | Acceso a base de datos | QuizDAO, RankingDAO, UsuarioDAO |
| DTO | Objetos de datos | Apple, Player, QuizQuestion, etc. |
| Conexión | Gestión de BD | ConexionDB |
Archivos FXML que definen las interfaces gráficas:
Game.fxml - Canvas del juego principalQuiz.fxml - Interfaz de preguntas interactivasMap.fxml - Mapa de progreso visualLogin.fxml / Register.fxml - Autenticación| Categoría | Tecnología | Propósito |
|---|---|---|
| Core | Java 8+ | Lenguaje principal de desarrollo |
| UI Framework | JavaFX | Interfaces gráficas modernas |
| UI Definition | FXML | Definición declarativa de interfaces |
| Styling | CSS | Estilos y temas visuales |
| Database | MySQL 8.0+ | Persistencia de datos |
| DB Connector | JDBC | Conectividad con base de datos |
| PDF Generation | iText 5.5.13.2 | Certificados en PDF |
| Build System | Apache Ant | Compilación y construcción |
| IDE | NetBeans | Entorno de desarrollo integrado |
| Patrón | Implementación | Beneficio |
|---|---|---|
| MVC | Separación Controlador/Modelo/Vista | Mantenibilidad y escalabilidad |
| Manager | *Manager classes | Responsabilidades específicas |
| DAO | Acceso a datos abstraído | Independencia de la BD |
| Observer | Callbacks en managers | Comunicación entre componentes |
| Singleton | Gestores únicos | Control de instancias |
| Factory | Creación de objetos del juego | Flexibilidad en instanciación |
Diagrama completo del flujo de datos y arquitectura del sistema Newton's Apple Quest
✅ Modularidad: Cada componente tie