Ein interaktives 3D-Lernspiel zum Erlernen von Tensoren und Tensor-Operationen in C++. Entwickelt mit Raylib für moderne Grafik und intuitive Visualisierung.
- Lektion 1: Was sind Tensoren? - Grundlagen, Rang, Shape, Skalare, Vektoren, Matrizen
- Lektion 2: Tensoren erstellen - Factory-Methoden (zeros, ones, random, range, identity)
- Lektion 3: Tensor-Operationen - Mathematische Operationen, Matrixmultiplikation, Reduktionen
- Lektion 4: TensorDB - Tensoren speichern, laden und verwalten
- Lektion 5: Broadcasting - Shape-Manipulation und Broadcasting-Regeln
- Lektion 6: Neuronale Netze - Grundlagen neuronaler Netze mit Tensoren
Sieben verschiedene Visualisierungsmodi für Tensoren:
- Cubes - 3D-Würfel für jeden Tensor-Wert
- Spheres - Kugeln mit größenbasierter Skalierung
- Points - Punktwolken-Darstellung
- Heatmap - Farbbasierte Wertdarstellung
- Bars - Balkendiagramm-Stil
- Network - Netzwerk-Visualisierung für neuronale Netze
- Memory - Lineare Speicher-Layout-Ansicht
- Multiple-Choice-Fragen
- Tensor-Shape-Rätsel
- Tensor-Wert-Berechnungen
- Code-Vervollständigung
- Wahr/Falsch-Fragen
- Animiertes Feedback und Punktesystem
- 40+ Achievements in 7 Kategorien
- 5 Stufen: Bronze, Silber, Gold, Platin, Diamant
- Fortschrittsverfolgung
- Persistente Speicherung
- Syntax-Highlighting für C++ und Tensor-Methoden
- Auto-Vervollständigung
- Live-Tensor-Vorschau
- Vorlagen für häufige Muster
- Undo/Redo-Funktionalität
- Freies Experimentieren mit Tensoren
- Interaktive Tensor-Erstellung
- Echtzeit-Operationen
- Konsole mit Befehlen
- CMake 3.16 oder höher
- C++17-kompatibler Compiler (GCC 8+, Clang 7+, MSVC 2019+)
- OpenGL-Unterstützung
# Repository klonen
git clone https://github.com/es-ist-leon/TensorGame.git
cd TensorGame
# Build-Verzeichnis erstellen
mkdir build && cd build
# CMake konfigurieren (Raylib wird automatisch heruntergeladen)
cmake ..
# Kompilieren
cmake --build . -j$(nproc)
# Ausführen
./TensorGamemkdir build && cd build
cmake .. -G "Visual Studio 17 2022"
cmake --build . --config ReleaseTensorGame/
├── CMakeLists.txt
├── README.md
├── src/
│ ├── main.cpp # Einstiegspunkt
│ ├── tensor/
│ │ ├── Tensor.hpp/.cpp # Tensor-Klasse
│ │ └── TensorDB.hpp/.cpp # Tensor-Datenbank
│ ├── gui/
│ │ ├── Colors.hpp # Farbpalette
│ │ ├── TensorVisualizer.hpp/.cpp # 3D-Visualisierung
│ │ ├── UIComponents.hpp/.cpp # UI-Elemente
│ │ └── Application.hpp/.cpp # Hauptanwendung
│ ├── lessons/
│ │ ├── Lesson.hpp # Basis-Klasse
│ │ ├── LessonManager.hpp/.cpp # Lektionsverwaltung
│ │ └── Lesson1-6_*.cpp # Einzelne Lektionen
│ ├── quiz/
│ │ └── Quiz.hpp/.cpp # Quiz-System
│ ├── progress/
│ │ └── Achievements.hpp/.cpp # Achievement-System
│ ├── editor/
│ │ └── CodeEditor.hpp/.cpp # Code-Editor
│ └── sandbox/
│ └── Sandbox.hpp/.cpp # Sandbox-Modus
- ESC - Zurück / Menü
- Maus - UI-Interaktion
- Linke Maustaste + Ziehen - Kamera rotieren
- Mausrad - Zoom
- WASD - Kamera bewegen
- Q/E - Kamera hoch/runter
- 1-7 - Visualisierungsmodus wechseln
- Space - Animation pausieren/fortsetzen
- R - Ansicht zurücksetzen
- Strg+Z - Rückgängig
- Strg+Y - Wiederholen
- Strg+C - Kopieren
- Strg+V - Einfügen
- Tab - Auto-Vervollständigung akzeptieren
- F5 - Code ausführen
// Verschiedene Erstellungsmethoden
Tensor scalar = Tensor::zeros({}); // Skalar
Tensor vector = Tensor::ones({5}); // Vektor
Tensor matrix = Tensor::random({3, 3}); // Matrix
Tensor tensor3d = Tensor::range({2, 3, 4}); // 3D-Tensor
Tensor identity = Tensor::identity(4); // Einheitsmatrix// Element-weise Operationen
Tensor c = a + b;
Tensor d = a * b;
// Matrix-Operationen
Tensor result = a.matmul(b);
Tensor transposed = a.transpose();
Tensor reshaped = a.reshape({2, 6});
// Reduktionen
float sum = a.sum();
float mean = a.mean();
float max = a.max();TensorDB db;
db.store("weights", tensor, {"neural_net", "layer1"});
Tensor loaded = db.get("weights");
auto results = db.findByTag("neural_net");
db.saveToFile("model.tdb");- C++17 - Moderne C++-Features
- Raylib 5.0 - Grafik und Fenster-Management
- CMake - Build-System mit FetchContent für Abhängigkeiten
MIT License - siehe LICENSE-Datei für Details.
Beiträge sind willkommen! Bitte erstelle einen Pull Request oder öffne ein Issue für Vorschläge und Fehlerberichte.
Entwickelt mit Leidenschaft für Bildung und Tensor-Mathematik.