edu-boardgame-generator/README.md
2026-03-14 22:25:25 +01:00

181 lines
No EOL
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Spiel-Generator
### PH Weingarten · Medien- und Bildungsmanagement & Informatik (Lehramt)
---
## Was ist das?
Ein browserbasierter **Brettspiel-Generator** für einen Workshop an der PH Weingarten, der sich an Schülerinnen und Schüler der ca. 8. Klasse richtet. Kinder erstellen ihr eigenes digitales Brettspiel mit Mini-Games ganz ohne Programmierkenntnisse. Im Hintergrund wird dabei live gültiger **Python-Code** generiert, der das Spielkonzept als Quellcode abbildet und den Schülerinnen und Schülern das Gefühl gibt, wirklich zu programmieren.
Das Projekt besteht aus zwei Dateien:
| Datei | Funktion |
|-------|----------|
| `editor.html` | 5-Schritte-Editor-Wizard zur Spielerstellung |
| `game.html` | Das fertige spielbare Brettspiel |
---
## Projektstruktur & Architektur
- **Technologie:** Reines HTML + CSS + JavaScript (keine Abhängigkeiten, kein Build-Prozess)
- **Hosting:** Gedacht für GitHub Pages
- **Datenaustausch:** Spielkonfiguration wird via `localStorage.gameConfig` gespeichert; `game.html` liest daraus beim Start
- **Keine Serverpflicht:** Alles läuft clientseitig
---
## Aktueller Stand
### Vollständig funktionierend
#### Editor (`editor.html`)
- **Schritt 1 Grundinfos:** Entwicklername, Spielname, Beschreibung, Namensvorschläge, Live-Vorschau-Karte
- **Schritt 2 Gestaltung:** 12 Spielfiguren, 12 Hintergründe/Welten, Live-Kombi-Vorschau
- **Schritt 3 Spielfeld & Regeln:**
- Würfeln vs. Einzel-Schritt
- Leben-System vs. Punkte-System
- Feldanzahl (620) mit +/- Steuerung
- Drag-&-Drop Palette → Spielfeld (funktioniert ✅)
- Klick-to-Place für Mini-Games
- Erzähltexte vor/nach Feldern mit Emoji-Picker
- Board-Builder mit visueller Felddarstellung
- **Schritt 4 Quiz:** Pro Quiz-Feld eine Karte mit Frage + 4 Antworten + richtiger Antwort; Autofill-Beispiele
- **Schritt 5 Testen:** Review-Timeline, Launch-Button zu `game.html`, 8-Fragen-Feedback-Auswertung
#### Python-Live-Code (Split-Screen rechts)
- Progressiver Aufbau: Code erscheint **Schritt für Schritt** wenn Felder angeklickt/befüllt werden
- Beginn: Leerer Code mit Hinweiskommentar
- Fokus-getriggert: Jedes Feld/Button enthüllt genau den zugehörigen Codeabschnitt
- **Korrekte Python-Syntax** mit echtem Syntaxhighlighting (Keywords, Strings, Funktionen, Kommentare)
- Dynamischer Dateiname: `spielname_von_entwicklername.py`
- Resizer-Balken: Split-Breite per Maus verschiebbar
- Zeilennummern, Statusanzeige (`● Live` / `● Bereit`)
- Dateiname-Header mit macOS-Stoplight-Dots
#### Allgemein
- PH Weingarten Logo + Studiengänge im Header
- Sticky Progress-Bar (volle Breite) mit 5 Schritt-Dots
- Zusammenfassungs-Banner beim Vorwärtsnavigieren
- `localStorage`-Persistenz (Zustand bleibt nach Reload)
- **↺ Reset-Button** zum sauberen Neustart (löscht localStorage)
- Responsiv: Code-Panel blendet sich unter 900px aus
- Scrollbar-Styling einheitlich (lila, schlank)
---
#### Spiel (`game.html`)
- Vollständiges animiertes Spielfeld mit Canvas-Rendering
- Thema-abhängige Farben & Partikel (12 Hintergründe/Themen)
- Spielfigur mit Bounce-Effekt und Glow
- Farbkodierte Felder pro Mini-Game-Typ
- Besuchter-Pfad leuchtet auf
- HUD: Feld-Position, Leben oder Punkte
- Würfel-Animation
- Story-Overlay (Erzähltexte)
- Mini-Game-Overlay mit Beschreibung und Steuerungshinweis
- Win-Screen und Game-Over-Screen mit Statistiken
---
### 🎮 Mini-Games Überblick
#### Im Spiel (`game.html`) vollständig spielbar
| Mini-Game | Status |
|-----------|--------|
| 🐍 Snake | ✅ Vollständig |
| 🐦 Flappy Bird | ✅ Vollständig |
| 🃏 Memory | ✅ Vollständig |
| ❓ Quiz | ✅ Vollständig (nutzt eigene Fragen aus Schritt 4) |
| ⚡ Reaktionstest | ✅ Vollständig |
| Alle anderen 7 | ⚠️ Platzhalter (zeigen Emoji + „bald verfügbar"-Button) |
#### Im Editor (`editor.html`) Test-Popup (▶ TEST)
| Mini-Game | Status |
|-----------|--------|
| 🐍 Snake | ✅ Vollständig |
| 🐦 Flappy Bird | ✅ Vollständig |
| 🃏 Memory | ✅ Vollständig |
| ⚡ Reaktionstest | ✅ Vollständig |
| ❓ Quiz | ✅ Demo (nutzt eigene Fragen wenn vorhanden) |
| 🏀 Basketball | ✅ Vollständig |
| 🍎 Äpfel fangen | ✅ Vollständig |
| 🌀 Labyrinth | ✅ Vollständig |
| 🔴 Simon Says | ✅ Vollständig |
| ⌨️ Tipp-Rennen | ✅ Vollständig |
| 🧩 Rätsel | ⚠️ Stub (Platzhalter-Demo) |
| 🔍 Fehler finden | ⚠️ Stub (Platzhalter-Demo) |
---
## 🔧 Bekannte offene Aufgaben
### Hoch-Priorität
| Aufgabe | Beschreibung |
|---------|--------------|
| 🎮 **7 Mini-Games im Spiel implementieren** | Basketball, Äpfel fangen, Labyrinth, Simon Says, Rätsel, Fehler finden, Tipp-Rennen sind im Editor testbar, aber in `game.html` noch Platzhalter |
| 🔗 **URL-System / Veröffentlichung** | `doPublish()` zeigt nur Alert. Ziel: Config als Base64 in URL kodieren, QR-Code generieren, direkter GitHub-Pages-Link |
### Mittel-Priorität
| Aufgabe | Beschreibung |
|---------|--------------|
| 📱 **Mobile-Optimierung** | Drag-&-Drop auf Touch-Geräten (aktuell nur Maus) |
| 🔄 **Zurück-Navigation** | `window.scrollTo` scrollt ggf. falsch beim Schritt-Zurückspringen |
| 🧩 **Rätsel-Mini-Game** | Vollständiges Zahlen-Puzzle implementieren |
| 🔍 **Fehler-finden-Mini-Game** | Vollständige Implementierung (zwei Bilder, Unterschiede suchen) |
### Niedrige Priorität / Nice-to-have
| Aufgabe | Beschreibung |
|---------|--------------|
| 📦 **GitHub Pages Setup** | Repository anlegen, Dateien hochladen, Pages aktivieren |
| 🎨 **Mehr Figuren/Welten** | Aktuell 12+12; erweiterbar |
| 🌍 **Sprachoptionen** | Aktuell nur Deutsch |
| 🏆 **Highscore-System** | Optional für Mehrfach-Spielen |
| 📊 **Feedback-Auswertung exportieren** | Schritt 5 wertet aus, aber kein Export |
---
## Workflow-Empfehlungen
- Der Generator läuft vollständig **offline/lokal** einfach `editor.html` im Browser öffnen
- **Reset:** Button „↺ Reset" oben links im Header, oder in der Browser-Konsole:
```javascript
localStorage.removeItem('gameConfig'); location.reload();
```
- **Cache leeren** in Vivaldi/Chrome: `Ctrl+Shift+R` (Hard Reload), oder DevTools öffnen → Network → „Disable cache"
- Bei Entwicklung: Syntax-Checks via Node.js möglich
---
## Technische Hinweise
- Der Python-Code im Split-Screen ist **didaktisch korrekt** aber nicht ausführbar (kein `boardgame_engine`-Modul existiert). Das ist bewusst es geht ums Erleben des Programmierens.
- Der State (`ST`-Objekt) wird bei jeder Eingabe in `localStorage` gesichert.
- `game.html` wird via `window.open()` aus dem Editor geöffnet und liest aus `localStorage.gameConfig`.
- Das `roundRect`-Canvas-API hat einen Polyfill für ältere Browser.
---
## Geschätzter Restaufwand
| Bereich | Aufwand |
|---------|---------|
| 7 Mini-Games in game.html fertig implementieren | ~35 Tage |
| URL/QR-Code Veröffentlichungs-System | ~12 Tage |
| Mobile Touch-Drag | ~1 Tag |
| GitHub Pages + Deployment | ~24 Stunden |
| Testing & Bugfixing für Workshop | ~12 Tage |
| **Gesamt** | **~610 Tage** |
---
*Stand: März 2026 · Entwicklung im Workshop mit Claude (Anthropic)*