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

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.