Aktuelle Version: 1.1.0
Eine lokale Lernumgebung für Python und algorithmisches Denken. In einer grafischen PySide6-Anwendung programmiert man den Roboter Pyti, navigiert durch ein 15x15-Spielfeld und löst Level mit Wänden und Beepern.
- Interaktives 15x15-Spielfeld
- 50 vorgefertigte Level mit Missionen
- Ansteigender Schwierigkeitsgrad von Einzelwänden bis zum Labyrinth
- Automatische Prüfung, ob der Ziel-Beeper aufgenommen wurde
- Editor mit Zeilennummern, Python-Syntax-Highlighting und Tab-Unterstuetzung
- Optionales Beispiele-Fenster mit Inhalten aus
EXAMPLES.md - Roboterbewegung mit sichtbarer Richtungsanzeige
- Wände, Randkollisionen und Beeper
- Beeper aufnehmen und ablegen
- Sensorfunktionen für Bedingungen und Schleifen
- Beeper koennen per Mausklick auf dem Spielfeld platziert oder entfernt werden
- Responsive Oberfläche mit grossem Editorbereich
- Python 3.10 oder neuer
- PySide6
- Ein Desktop-System mit Qt-Unterstützung
git clone <REPOSITORY-URL>
cd pyti_lernprogramm
python -m venv .venvLinux/macOS:
source .venv/bin/activateWindows PowerShell:
.venv\Scripts\Activate.ps1Abhängigkeiten installieren:
python -m pip install --upgrade pip
python -m pip install -r requirements.txtpython main.pyDas Programm lädt die UI-Datei relativ zu main.py. Es kann daher auch aus einem anderen Arbeitsverzeichnis gestartet werden.
- Wähle rechts ein Level aus.
- Schreibe ein Python-Skript in den Editor.
- Klicke auf
Start. - Beobachte Pyti auf dem Spielfeld.
- Platziere zusätzliche Beeper bei Bedarf mit einem Mausklick auf ein Feld.
Beispiel:
while frontClear():
moveForward()
if onBeeper():
pickBeeper()| Befehl | Beschreibung |
|---|---|
moveForward() |
Einen Schritt in Blickrichtung gehen |
turnLeft() |
90 Grad nach links drehen |
turnRight() |
90 Grad nach rechts drehen |
turnAround() |
180 Grad drehen |
pickBeeper() |
Beeper vom aktuellen Feld aufnehmen |
dropBeeper() |
Einen Beeper aus dem Inventar ablegen |
| Sensor | Rückgabe |
|---|---|
onBeeper() |
True, wenn auf dem aktuellen Feld ein Beeper liegt |
beeperAhead() |
True, wenn direkt vor Pyti ein Beeper liegt |
frontClear() |
True, wenn das Feld vor Pyti frei ist |
leftClear() |
True, wenn das Feld links frei ist |
rightClear() |
True, wenn das Feld rechts frei ist |
anyBeeperInBag() |
True, wenn Pyti mindestens einen Beeper traegt |
Da der Editor Python-Code ausführt, können auch if, while, Variablen und Funktionen verwendet werden.
.
├── main.py # Anwendungseinstieg und UI-Aufbau
├── game_window.ui # Qt-Grundfenster
├── commands.py # Pyti-Befehle und Skriptausführung
├── pyti.py # Roboter, Bewegung und Beeper-Inventar
├── playing_field.py # Raster, Rendering, Level- und Sensorlogik
├── editor.py # Code-Editor mit Zeilennummern
├── highlighter.py # Python-Syntax-Highlighting
├── EXAMPLES.md # Beispielprogramme und Programmiermuster
├── level.py # Leveldefinitionen
├── requirements.txt # Python-Abhängigkeiten
├── VERSION # Aktuelle Version
├── CHANGELOG.md # Versionshistorie
├── ROADMAP.md # Geplante Erweiterungen
├── LICENSE # MIT-Lizenz
└── docs/
└── ARCHITECTURE.md # Technische Architektur
Automatisierte Verhaltenstests sind derzeit noch nicht enthalten. Die folgenden Befehle prüfen die Python-Syntax und den Start der Anwendung.
Syntaxpruefung:
python -m py_compile main.py commands.py playing_field.py pyti.py editor.py highlighter.py level.pyHeadless-Start unter Linux:
QT_QPA_PLATFORM=offscreen python main.pyFür einen kurzen Smoke-Test kann der Prozess mit timeout beendet werden:
timeout 2s env QT_QPA_PLATFORM=offscreen python main.pyDie Anwendung verwendet in commands.py exec(), damit Lernende normalen Python-Code mit den bereitgestellten Pyti-Befehlen schreiben können. Die Ausführung erfolgt im Prozess der Anwendung und hat Zugriff auf die verfügbaren Python-Builtins. Dadurch kann ein Skript grundsätzlich auch Dateien lesen oder verändern und Prozesse starten. Führe deshalb nur vollständig vertrauenswürdige Skripte aus. Die Anwendung ist keine Sandbox für fremden oder nicht vertrauenswürdigen Code.
Die aktuelle Version steht in VERSION. Änderungen werden in CHANGELOG.md dokumentiert. Das Projekt verwendet Semantic Versioning:
MAJOR: inkompatible AenderungenMINOR: neue abwaertskompatible FunktionenPATCH: Fehlerkorrekturen
Das Projekt steht unter der MIT-Lizenz. Die vollstaendige Lizenz steht in LICENSE.
Vor dem ersten Push sollten diese lokalen Pruefungen erfolgreich sein:
python -m py_compile main.py commands.py playing_field.py pyti.py editor.py highlighter.py level.py
QT_QPA_PLATFORM=offscreen timeout 2s python main.pyDas Projekt benötigt keine Datenbank und keinen Build-Schritt. Die MIT-Lizenz
ist bereits als LICENSE-Datei enthalten.