Skip to content

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Pyti Lernumgebung

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.

Funktionen

  • 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

Voraussetzungen

  • Python 3.10 oder neuer
  • PySide6
  • Ein Desktop-System mit Qt-Unterstützung

Installation

git clone <REPOSITORY-URL>
cd pyti_lernprogramm
python -m venv .venv

Linux/macOS:

source .venv/bin/activate

Windows PowerShell:

.venv\Scripts\Activate.ps1

Abhängigkeiten installieren:

python -m pip install --upgrade pip
python -m pip install -r requirements.txt

Start

python main.py

Das Programm lädt die UI-Datei relativ zu main.py. Es kann daher auch aus einem anderen Arbeitsverzeichnis gestartet werden.

Erste Schritte

  1. Wähle rechts ein Level aus.
  2. Schreibe ein Python-Skript in den Editor.
  3. Klicke auf Start.
  4. Beobachte Pyti auf dem Spielfeld.
  5. Platziere zusätzliche Beeper bei Bedarf mit einem Mausklick auf ein Feld.

Beispiel:

while frontClear():
    moveForward()

if onBeeper():
    pickBeeper()

Verfügbare Befehle

Aktionen

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

Sensoren

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.

Projektstruktur

.
├── 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

Tests und lokale Pruefung

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.py

Headless-Start unter Linux:

QT_QPA_PLATFORM=offscreen python main.py

Für einen kurzen Smoke-Test kann der Prozess mit timeout beendet werden:

timeout 2s env QT_QPA_PLATFORM=offscreen python main.py

Sicherheitswarnung

Die 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.

Versionierung

Die aktuelle Version steht in VERSION. Änderungen werden in CHANGELOG.md dokumentiert. Das Projekt verwendet Semantic Versioning:

  • MAJOR: inkompatible Aenderungen
  • MINOR: neue abwaertskompatible Funktionen
  • PATCH: Fehlerkorrekturen

Lizenz

Das Projekt steht unter der MIT-Lizenz. Die vollstaendige Lizenz steht in LICENSE.

GitHub-Check

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.py

Das Projekt benötigt keine Datenbank und keinen Build-Schritt. Die MIT-Lizenz ist bereits als LICENSE-Datei enthalten.

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages