84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
const express = require('express');
|
|
const cors = require('cors');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const app = express();
|
|
const PORT = process.env.PORT || 3000;
|
|
const TASKS_FILE = path.join(__dirname, 'tasks.json');
|
|
|
|
// Middleware
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
app.use(express.static('public'));
|
|
|
|
// Lade Aufgaben
|
|
function loadTasks() {
|
|
try {
|
|
const data = fs.readFileSync(TASKS_FILE, 'utf8');
|
|
return JSON.parse(data);
|
|
} catch (error) {
|
|
console.error('Fehler beim Laden der Aufgaben:', error);
|
|
return [];
|
|
}
|
|
}
|
|
|
|
// Speichere Aufgaben
|
|
function saveTasks(tasks) {
|
|
fs.writeFileSync(TASKS_FILE, JSON.stringify(tasks, null, 2));
|
|
}
|
|
|
|
// API: Hole alle Aufgaben
|
|
app.get('/api/tasks', (req, res) => {
|
|
const tasks = loadTasks();
|
|
res.json({ tasks });
|
|
});
|
|
|
|
|
|
// API: Prüfe Antwort
|
|
app.post('/api/check-answer', (req, res) => {
|
|
const { taskId, answer } = req.body;
|
|
|
|
if (!taskId || answer === undefined) {
|
|
return res.status(400).json({ error: 'taskId und answer sind erforderlich' });
|
|
}
|
|
|
|
const tasks = loadTasks();
|
|
const taskIndex = tasks.findIndex(t => t.id === taskId);
|
|
|
|
if (taskIndex === -1) {
|
|
return res.status(404).json({ error: 'Aufgabe nicht gefunden' });
|
|
}
|
|
|
|
const task = tasks[taskIndex];
|
|
const userAnswer = parseInt(answer);
|
|
const correctAnswer = parseInt(task.answer);
|
|
const isCorrect = userAnswer === correctAnswer;
|
|
|
|
// Initialisiere attempts Counter falls nicht vorhanden
|
|
if (tasks[taskIndex].attempts === undefined) {
|
|
tasks[taskIndex].attempts = 0;
|
|
}
|
|
|
|
// Erhöhe Versuchszähler bei jeder Antwortprüfung
|
|
tasks[taskIndex].attempts += 1;
|
|
|
|
// Speichere Antwort, isCorrect und Timestamp in der Task
|
|
tasks[taskIndex].userAnswer = userAnswer;
|
|
tasks[taskIndex].isCorrect = isCorrect;
|
|
tasks[taskIndex].answerTimestamp = new Date().toISOString();
|
|
saveTasks(tasks);
|
|
|
|
res.json({
|
|
correct: isCorrect,
|
|
correctAnswer: correctAnswer,
|
|
points: isCorrect ? task.points : 0
|
|
});
|
|
});
|
|
|
|
|
|
// Starte Server
|
|
app.listen(PORT, () => {
|
|
console.log(`MathQuest Server läuft auf http://localhost:${PORT}`);
|
|
});
|