Skip to content

Repository files navigation

Robot Karol Quest

Der zeitlose Klassiker für den spielerischen Einstieg in die Programmierung.

Übersicht

Robot Karol Online (karol.arrrg.de) ist eine Fortführung der gleichnamigen Programmierumgebung von Ulli Freiberger. Ziel ist die spielerische Einführung in die Algorithmik, insbesondere von Sequenz, Wiederholung mit fester Anzahl, bedingte Wiederholung und bedingte Anweisungen. Diese Themen finden sich in vielen Lehrplänen der Unterstufe.

grafik

Robot Karol stellt einen visuellen (blockbasierten) Editor zur Verfügung.

grafik

Zur Unterstützung der Modellierung kann das Programm zusätzlich als Struktogramm angezeigt werden.

grafik

Eine Bearbeitung im Text-Modus ist ebenfalls möglich. Es kann durchgehend zwischen Text und Blöcken gewechselt werden.

grafik

Programme können in Python geschrieben werden,

grafik

... oder auch in Java.

grafik

Als Web-Anwendung entfällt die Installation. Einfach auf den Link https://karol.arrrg.de/ klicken und schon kann losgearbeitet werden.

Aufgabensammlung

Robot Karol Online enthält eine Sammmlung interaktiver Aufgaben, die für die Übung und zum Selbstlernen geeignet sind. Die Aufgaben fangen mit einfachen Tutorials an und steigern sich bis zu komplexen Algorithmen mit verschachtelten Kontrollstrukturen.

Erhalte eine Übersicht über alle enthaltenen Aufgaben: https://karol.arrrg.de/#OVERVIEW

Für einen maßgeschneiderten Unterricht können im Aufgaben-Editor eigene interaktive Aufgaben erstellt werden und über einen Link wie https://karol.arrrg.de/#3XHV an die Klasse verteilt werden. Die Datei werden dabei auf meinem Server gespeichert, du kannst aber auch die Dateien selber hosten, Beispiel-URL.

Sprache

Anweisungen

grafik

Schritt - Karol geht einen Schritt nach vorne.

Schritt(anzahl) - Karol geht anzahl Schritte nach vorne.

LinksDrehen - Karol dreht sich um 90° nach links (optional mit Anzahl).

RechtsDrehen - Karol dreht sich um 90° nach rechts (optional mit Anzahl).

Hinlegen - Karol legt vor sich einen Ziegel.

Hinlegen(anzahl) - Karol legt vor sich anzahl Ziegel.

Aufheben - Karol hebt einen Ziegel vor sich auf.

Aufheben(anzahl) - Karol hebt anzahl Ziegel vor sich auf.

MarkeSetzen - Karol setzt unter sich eine Marke.

MarkeLöschen - Karol löscht Marke unter sich.

Beenden - Karol beendet an dieser Stelle die Ausführung des Programms.

Hauptprogramm

grafik

Wenn es im Block-Modus mehrere Teilprogramme gibt, dann wird nur das Programm des Hauptprogramm-Blocks ausgeführt. Alle anderen Blöcke sind inaktiv. Wird der Hauptprogramm-Block nicht verwenden und ist das Programm zusammenhängend, dann wird dieses Programm automatisch ausgeführt.

Steuerung

grafik

wiederhole {n} mal {Anweisungen} endewiederhole - Wiederholung mit fester Anzahl

wiederhole solange {Bedingung} {Anweisungen} endewiederhole - Wiederholung mit Bedingung

wiederhole immer {Anweisungen} endewiederhole - Wiederholung bis zum Programmabbruch

wenn {Bedingung} dann {Anweisungen} endewenn - Einseitig bedingte Anweisung

wenn {Bedingung} dann {Anweisungen A} sonst {Anweisungen B} endewenn - Zweiseitig bedingte Anweisung

Bedingungen

grafik

IstWand / NichtIstWand - Karol testet, ob vor ihr eine Wand (oder ein Quader) ist oder nicht.

IstZiegel / NichtIstZiegel - Karol testet, ob vor ihr Ziegel liegen oder nicht.

IstMarke / NichtIstMarke - Karol testet, ob sie auf einer Marke steht oder nicht.

IstZiegel(anzahl) / NichtIstZiegel(anzahl) - Karol testet, ob vor ihr genau anzahl Ziegel liegen oder nicht.

IstNorden / NichtIstNorden / IstOsten / NichtIstOsten / IstSüden / NichtIstSüden / IstWesten / NichtIstWesten - Karol testet, ob sie in diese Richtung schaut oder nicht. (Norden = oben)

Eigene Anweisungen

grafik

<name> - Führe eigene Anweisung aus

Anweisung <name> {...} endeAnweisung - Definiere eine eigene Anweisung

Kommentare

grafik

// Kommentar - Nutze Kommentare, um den Code zu gliedern und die Struktur zu erklären.

Textmodus

Im textbasierten Editor werden alle obigen Anweisungen und Kontrollstrukturen unterstützt, außerdem gibt es noch folgende Möglichkeiten:

  • Die meisten Befehle erlauben eine objektorientiere Schreibweise der Form karol.Schritt(4) oder ohne Parameter in der Form karol.LinksDrehen().
  • Die alte Syntax mit *wiederhole, *wenn und *Anweisung wird weiterhin unterstützt.
  • Außerdem können weiterhin Kommentare mit { Kommentar } geschrieben werden. Alternative Syntax für mehrzeilige Kommentare ist /* Kommentar */.
  • Zur Abgrenzung von Befehlen kann ein Semikolon verwendet werden: Hinlegen; Schritt; LinksDrehen. Das Semikolon wird beim Parsen ignoriert.

Links

Robot Karol 3.0 (Java Version)

Neue Technologien erlauben es, auch alte Software im Browser zu nutzen. So kannst du unter https://entkenntnis.github.io/rk3.0/ die unmodifizierte Original-Version von Robot Karol ausprobieren (ohne Garantie der Funktion). Für Nostalgie pur.

Ähnliche Projekte

Es gibt neben diesem Repository noch weitere Projekte, die den Karol in das Web portieren:

Bildquellen

Hintergrundbild: Bild von rawpixel.com auf Freepik

Farbkleckse: Bild von starline auf Freepik

Trivia

Karol verwendet alle Pronomen! Sie/ihr, er/ihm, they/them, Neo-Pronomen ... wähle dir die Anrede aus, mit der du am meisten resonierst.

Entwicklung

Installiere node.js und git. Um das Repo dann zum Laufen zu bringen, benötigt es folgende Schritte:

git clone https://github.com/Entkenntnis/robot-karol-online.git
cd robot-karol-online
npm install
npm run dev

Danach ist die lokale Version auf localhost:3000 verfügbar.

Betrieb

Das Projekt kann mit npm run build gebaut werden, das Ergebnis ist im Ordner dist zu finden und kann über einen Webserver bereitgestellt werden. Damit der Python-Profi-Modus funktioniert, wird Cross-Origin-Isolation benötigt, außerdem ein Catch-All für Sub-Paths. Verwende zum Beispiel diese .htaccess-Datei:

Header set Cross-Origin-Embedder-Policy "require-corp"
Header set Cross-Origin-Opener-Policy "same-origin"
AddType text/javascript .mjs


# I-Frames erlauben
# Header set Content-Security-Policy "frame-ancestors *"


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]

<Files "index.html">
    Header set Cache-Control "no-cache"
    Header set Pragma "no-cache"
    Header set Expires 0
</Files>

Das Backend findet sich in https://github.com/Entkenntnis/stats-karol. Passe die Endpunkte in backend.ts an. Das Impressum kann in impressum.ts angepasst werden.

About

Der zeitlose Klassiker für den spielerischen Einstieg in die Programmierung.

Topics

Resources

Stars

28 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages