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}`); });