Vor kurzem fingen wir in meinem Informatikunterricht in der Schule an an, Programmieren mit Python zu lernen. Dafür nutzen wir Kara, das auf den ersten Blick wie ein Spiel für Kinder aussieht, aber eigentlich ziemlich cool ist. Wem Kara nichts sagt…

Was ist Kara

In Kara verfügt man über ein Gitter welches voreingestellt aus 9 mal 9 Feldern besteht. Auf diesen Feldern kann man entweder einen Baum, einen Pilz, ein Blatt, Kara oder Kara auf einem Blatt platzieren. Kara ist sowohl der Name des Programms als auch des steuerbaren Marienkäfers. Mit Python, Java, JavaScript und möglicherweise ein paar anderen Sprachen kann man Kara bewegen, drehen und andere Dinge machen lassen. Aber Karas Pythonversion ist nicht perfekt.

Das Problem

Kara für Python unterstützt nur Python 2.2, welches zu diesem Zeitpunkt bereits 13 Jahre alt ist. Die aktuellste stabile Version ist 3.3.4. Da ich selbst schon seit vier Jahren programmiere, entschloss ich mich, dies zu beheben. Zuerst versuchte ich, die in Kara enthaltene Jython-Bibliothek zu ersetzen, was aber nicht wirklich funktionierte. Stattdessen entschied ich mich also, alles von Grund auf mit der aktuellsten Version von Python neu zu schreiben. Abgesehen davon ist es denke ich sinnvoll, ein Programm zum Lernen von Python in Python zu schreiben.

Kara neu schreiben

Wie bereits erwähnt entschied ich mich, Python 3 für das Neuschreiben von Kara zu verwenden. Um es so portabel wie möglich zu machen, entschied ich mich außerdem für Tkinter für die grafische Oberfläche. Und da Karas Welten in einem XML-Format gespeichert werden, konnte ich sie unverändert wiederverwenden, was wiederum bedeutete, dass ich Karas Welteneditor nicht neu schreiben musste. Bisher funktioniert das Zeichnen der Welten sowie einige interne Dinge. Natürlich werde ich die Bilder ersetzen müssen, da ich nicht das Urheberrecht an ihnen halte, aber während der Entwicklungsphase werde ich sie weiterhin verwenden. Sobald es programmierbar ist, werde ich ein Update posten und den Quellcode auf GitHub veröffentlichen.

KaraPy

Abbildung 1. KaraPy