Programmieren mit dem Python-Editor Mu und dem BBC Micro:bit

© Anton Vasiliev, 123RF

Ganz ohne Gift

Mit einem guten Lehrer fällt es nicht schwer, das Programmieren zu erlernen. Der Python-Editor Mu und der Kleincomputer BBC Micro:bit machen den Einstieg besonders leicht.

Python genießt einen guten Ruf als benutzerfreundliche Programmiersprache. Selbst Einsteiger erstellen damit in wenigen Minuten ihr erstes Programm. Experten schätzen die umfangreichen Bibliotheken, die komplexe Sachverhalte zügig bearbeiten und darstellen. Häufig realisieren Entwickler sogenannte Wrapper in Python. Dabei werden zeitkritische Routinen in einer Sprache wie C oder C++ geschrieben und maschinennah compiliert. Eine Python-Oberfläche regelt den Datenaustausch und hält die Module zusammen.

Der auf Python spezialisierte Editor Mu [1] stammt vom Software-Entwickler und Musiker Nicholas Tollervey. Er möchte Kindern und Jugendlichen Spaß am Schreiben von Programmen vermitteln. Seiner Überzeugung nach sollten bereits die ersten Schritte zu beeindruckenden Ergebnissen führen. Anders als Programme wie beispielsweise Scratch [2] möchte Mu auch den Weg in die professionelle Programmierung vorbereiten.

Aktuell liegt das Programm in der Version 1.0 vor, der Nachfolger 1.1 steht kurz vor der Freigabe [3]. Mu ist in Python geschrieben. Bei vielen Systemen gelingt die Installation über PIP (Listing 1). Das Widget-Toolkit Qt5 erkämpft sich allerdings gerade erst den Weg als Standard in die Python-Welt. Auf dem Raspberry Pi liegen noch nicht alle erforderlichen Bibliotheken vor. Möchten Sie nicht alles von Hand zusammenbauen, dann installieren Sie auf dem RasPi eine etwas eingeschränkte Version über Einstellungen | Empfohlene Software aus der Rubrik Programming. Der Aufruf erfolgt dann über das Anwendungsmenü unterhalb des Eintrags Entwicklung.

Listing 1

 

$ pip3 install mu-editor
### falls nur Python3 installiert ist:
$ pip install mu-editor

Python-IDEs

Integrierte Entwicklungsumgebungen (IDEs) für Python decken ein breites Spektrum ab. Da man Python-Programme nicht kompilieren muss, sondern das System die Kommandos zur Laufzeit interpretiert, genügt bereits ein einfacher Texteditor wie zum Beispiel Geany [6], um lauffähige Python-Programme zu schreiben. Etwas mehr Komfort bietet die Python-eigene Umgebung Idle [7]: Sie stützt sich auf das Widget-Toolkit TkInter, das auf der Sprache Tcl/Tk basiert. Der hier vorgestellte Editor Mu [1] wendet sich an Programmieranfänger. Er adressiert eine ähnliche Zielgruppe wie das Programm Thonny [8], bringt aber zusätzlich eingebaute Module mit. Zumindest erwähnt sei an dieser Stelle auch TigerJython [9], eine einfache in Java geschriebene Entwicklungsumgebung. Profis nutzen Spyder [10] oder Pycharm [11], das als quelloffene Community-Version oder kommerziell als Professional Edition angeboten wird. Jupyter Notebook [12] nimmt eine Sonderrolle ein. Die Ein- und Ausgaben verwaltet ein (lokaler) Webserver, der die Ergebnisse sofort in einer druckfähigen HTML-Webseite ausliefert.

Der Mu-Editor im Einsatz

Beim ersten Start verweist Mu auf seine vier Betriebsmodi: Python3, Pygame Zero, BBC Micro:Bit und Adafruit Circuit. Die Auswahl der Modi geschieht über den ersten Button in der Menüleiste des Programms.

Der Modus Python3 bringt vieles von dem mit, was man sich von einer Entwicklungsumgebung erwartet, unter anderem auch eine Syntaxprüfung (Abbildung 1). Das obere Fenster nimmt den Quellcode auf. Nach Aufruf des Check-Buttons ergänzt Mu den Quellcode um Kommentare und hübscht ihn etwas auf.

Abbildung 1: Im Modus Python3 bietet Mu eine Syntaxprüfung an.

In Entwicklerkreisen wurde heftig darüber diskutiert, ob Arbeitsumgebungen für Anfänger eine Autovervollständigung mitbringen sollten. In den Augen des Autors sollten sie es, um an die große Zahl möglicher Funktionen heranzuführen. Die Anzeige des Hilfetexts zur Funktion unterstützt dabei. So lernt man am Beispiel aus Abbildung 2, dass eine Print-Anweisung in Python 3 typischerweise mit einem Zeilenvorschub (\n) endet. Die Anweisung end = " " würde ihn durch ein Leerzeichen ersetzen und entspricht dem Komma in der Schreibweise von Python 2.

Abbildung 2: Bei Bedarf lassen sich Anweisungen automatisch vervollständigen.

Der Knopf Debug lässt Anweisungen im Einzelschrittmodus durchlaufen und listet dabei alle Variablen mit ihren Werten auf. Die Abkürzung REPL steht für Read, Evaluate, Print, Loop, also eingeben, berechnen, ausgeben und neue Eingabe erwarten. Hinter dem gleichnamigen Button verbirgt sich eine interaktive IPython-Notebook-Umgebung. Sie kann die Ein- und Ausgaben im HTML-Format speichern, eventuell erzeugte Bilder muss man hingegen manuell abspeichern.

Spiele entwickeln mit Mu

Mu möchte angehende Programmierer schnell zu Erfolgserlebnissen führen und die Anwender nicht mit Verwaltungsangelegenheiten behelligen. Der zweite Modus – Pygame Zero – verdeutlicht das Konzept. Er integriert Pygame Zero [4], eine vereinfachte Version der Python-Bibliothek Pygame. Das Programmbeispiel in Listing 2 erklärt sich nahezu von selbst und funktioniert auf Anhieb (Abbildung 3).

Listing 2

 

alien = Actor('alien')
alien.topright = 0, 10
WIDTH = 500
HEIGHT = alien.height + 20
hit = False
def draw():
  screen.clear()
  alien.draw()
def update():
  global hit
  if hit:
    pass
  else:
    alien.left += 2
    if alien.left > WIDTH:
      alien.right = 0
def on_mouse_down(pos):
  global hit
  if alien.collidepoint(pos):
    print("Getroffen")
    hit=True
    sounds.eep.play()
    alien.image = 'alien_hurt'
  else:
    print("Verpasst!")
Abbildung 3: Es braucht nur wenige Zeilen Code – fertig ist das erste Spiel.

Pygame ist ereignisgesteuert: Es verharrt in einer Dauerschleife und reagiert auf Eingaben, hier auf Mausklicks. Die erste Zeile des Demoprogramms legt das Bild einer Spielfigur fest. Das Programm setzt voraus, sie im Unterverzeichnis ~/mu_code/images/ als PNG-Bild zu finden. Mit der Definition des Canvas hält sich Pygame Zero nicht lange auf. Die Zuordnung der Größe an die zwei reservierten Variablen WIDTH und HEIGHT genügt.

Pygame Zero ruft die interne Funktion update() so oft auf wie möglich. Ist die Variable hit gesetzt, passiert nichts. Andernfalls führt das Programm das Männchen (den Actor mit der Bezeichnung alien) von links nach rechts über den Bildschirm. Die Aktualisierung des Bildschirms übernimmt die Funktion draw(). Damit nicht immer neue Spielfiguren erscheinen, löscht sie vorab die alte Darstellung.

Wenn Pygame eine gedrückte Maustaste erkennt, holt es sich die Anweisungen aus der Funktion on_mouse_down(). Die Methode collidepoint() bemerkt, wenn das zugehörige Objekt angeklickt wurde. In diesem Fall steuert die globale Variable hit in update(), ob sich das Männchen weiterbewegt. Der Befehl sounds.eep.play() unterlegt den Treffer mit dem Abspielen der Sounddatei ~/mu_code/sounds/eep.wav. Die Datei fehlt in der aktuellen Mu-Installation auf einem Raspberry Pi, was zu einem Abbruch des Spiels führt. Sie reparieren diesen Fehler mit der Anweisung aus Listing 3.

Listing 3

 

$ wget https://pygame-zero.readthedocs.io/en/stable/_static/eep.wav -P ~/mu_code/sounds

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • Macro-Mini-Micro-Bit

    Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.