Proyecto de aprendizaje para estudiantes de Ingeniería de Sistemas.
Este proyecto implementa un quiz interactivo sobre números primos y compuestos usando HTML, CSS y JavaScript vanilla.
Aprender y practicar:
- Separación de responsabilidades (HTML / CSS / JS)
- Manipulación del DOM
- Manejo de eventos
- Estado de una aplicación
- Estructuras de datos (arrays de objetos)
- Renderizado dinámico de elementos
- Buenas prácticas de organización de código
- Uso de Git
primos-compuestos/
├── index.html → Estructura de la página
├── css/
│ └── styles.css → Todos los estilos
├── js/
│ ├── questions.js → Solo los datos de las preguntas
│ └── app.js → Lógica de la aplicación
├── README.md → Este archivo
└── .gitignore
| Archivo | Responsabilidad |
|---|---|
index.html |
Solo estructura (semántica) |
styles.css |
Solo presentación visual |
questions.js |
Solo datos (fácil de modificar) |
app.js |
Solo lógica y comportamiento |
Esta separación se conoce como Separation of Concerns y es fundamental en el desarrollo de software.
- Abre la carpeta en Visual Studio Code
- Instala la extensión Live Server
- Haz clic derecho en
index.html→ Open with Live Server
Simplemente abre el archivo index.html con tu navegador.
Nota: Algunas funciones (como módulos ES6) pueden requerir un servidor local.
Abre el archivo js/questions.js y agrega un nuevo objeto al array:
{
id: 13,
text: "Tu pregunta aquí",
options: ["Opción A", "Opción B", "Opción C", "Opción D"],
correctIndex: 0, // Índice de la respuesta correcta (empieza en 0)
explanation: "Explicación que se muestra después de responder"
}No necesitas tocar el resto del código.
-
DOM Manipulation
document.getElementById,createElement,appendChild,innerHTML,classList -
Eventos
addEventListener('click', ...) -
Estado
Objetostateque guarda la pregunta actual, puntaje, etc. -
Arrays y objetos
Las preguntas están modeladas como un array de objetos -
Funciones
Cada responsabilidad tiene su propia función (renderQuestion,handleOptionClick, etc.) -
Flujo de la aplicación
Pantallas: Inicio → Quiz → Resultados
- Guardar el mejor puntaje con
localStorage - Agregar un temporizador por pregunta
- Permitir diferentes tipos de pregunta (completar, verdadero/falso, etc.)
- Convertir a módulos ES6 (
import/export) - Agregar modo oscuro
- Hacer que las preguntas se muestren en orden aleatorio
- Agregar animaciones más elaboradas
- Crear una versión con descomposición paso a paso interactiva
Proyecto de aprendizaje – Ingeniería de Sistemas
Basado en el contenido de matemáticas: Números primos y compuestos.