User manual
Heute im Adventskalender
1 LED blau mit eingebautem Vorwiderstand
Steve lässt es schneien
Das Experiment des 4. Tags lässt es auf jedem Feld schneien, das die Spielfi-
gur Steve betritt. In der Minecraft
TM
-Welt gibt es für diesen Tag keine Num-
mer. Bewegen Sie die Spielfigur auf eine möglichst freie Fläche, bevor Sie
das Programm starten.
Auf allen Feldern, die die Spielfigur betreten hat, liegt Schnee.
Bauteile
1 Steckbrett
1 LED blau mit eingebautem Vorwiderstand
2 GPIO-Verbindungskabel
Das Programm
Das Programm 04mc_schnee01.py legt Schnee auf jedes Feld, das die
Spielfigur Steve betritt.
#!/usr/bin/python
import mcpi.minecraft as minecraft
import mcpi.block as block
import RPi.GPIO as GPIO
import time
mc = minecraft.Minecraft.create()
LED = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT, initial=False)
try:
while True:
p = mc.player.getTilePos()
mat = mc.getBlock(p.x, p.y, p.z)
if mat!=block.SNOW.id:
GPIO.output(LED, True)
time.sleep(0.1)
GPIO.output(LED, False)
mc.setBlock(p.x, p.y, p.z, block.SNOW)
except KeyboardInterrupt:
GPIO.cleanup()
Die blaue LED zeigt an, dass die Spielfigur ein Schneefeld angelegt hat.
So funktioniert das Programm
import mcpi.block as block
Zusätzlich zu den bereits bekannten Bibliotheken wird die Bibliothek mcpi.
block importiert, die die Materialien für Minecraft
TM
-Blöcke im Klartext ent-
hält, sodass man sich keine Nummern zu merken braucht.
LED = 18
Der GPIO-Pin für die LED wird wieder in einer Variablen gespeichert, um die
Schaltung leichter umbauen zu können.
GPIO.setup(LED, GPIO.OUT, initial=False)
Dieser Pin wird als Ausgang definiert und die LED am Anfang ausgeschaltet.
try:
while True:
p = mc.player.getTilePos()
mat = mc.getBlock(p.x, p.y, p.z)
Auch dieses Programm besteht aus einer Endlosschleife, die in jedem Durch-
lauf die Position der Spielfigur in der Variablen p und das Material des Blocks
in der Variablen mat speichert. Schnee ist kein vollständiger Block, sondern
nur eine dünne Schicht, die auf einem anderen Block liegt. Um zu prüfen,
ob die Spielfigur im Schnee steht, wird deshalb das Material des Blocks aus-
gelesen, der die Koordinaten der Spielfigur hat, und nicht das Material des
Blocks darunter.
Immer wenn die Spielfigur nicht im Schnee steht, soll die LED kurz aufblin-
ken, und dann soll das Feld mit Schnee bedeckt werden. Man könnte auch
einfach das Feld, auf dem die Spielfigur steht, immer mit Schnee bedecken,
unabhängig davon, ob vorher Schnee darauf lag. Die LED würde dann aber
auch immer leuchten.
if mat!=block.SNOW.id:
Diese if-Abfrage prüft, ob das gespeicherte Material ungleich dem Materi-
al block.SNOW.id aus der Bibliothek mcpi.block ist. Die Zeichenfolge
!= steht in Python für ungleich.
GPIO.output(LED, True)
time.sleep(0.1)
GPIO.output(LED, False)
Ist das der Fall, wird die LED für 0,1 Sekunden eingeschaltet und danach wie-
der aus.
mc.setBlock(p.x, p.y, p.z, block.SNOW)
Jetzt wird ein Block an den aktuellen Koordinaten gesetzt. Das verwende-
te Material block.SNOW entspricht der Material-ID 78. Danach startet die
Endlosschleife den nächsten Durchlauf und überprüft erneut, ob Steve auf
Schnee steht. Das Programm läuft, bis der Benutzer in der Python-Shell die
Tastenkombination [Strg]+[C] drückt. Zum Schluss werden die GPIO-Pins
zurückgesetzt.
Laufen Sie, nachdem Sie das Programm ausprobiert haben, über das Feld
und schlagen Sie die Schneeblöcke mit dem Schwert wieder weg, um eine
freie Spielfläche zu bekommen.










