Let's Play: Programmieren lernen mit Python und Minecraft by Daniel Braun

Let's Play: Programmieren lernen mit Python und Minecraft by Daniel Braun

Autor:Daniel Braun [Daniel Braun]
Die sprache: eng
Format: epub
Herausgeber: mitp Verlag
veröffentlicht: 2020-07-15T16:00:00+00:00


1 class B: 2 a = 5 3 4 def func1: 5 global a 6 a = 6 7 8 def func2: 9 global a 10 a = 10 11 12 def func3: 13 a = 5

Listing 10.17: Globale Variablen

Globale Variablen müssen zunächst einmal global, also außerhalb einer speziellen Funktion, festgesetzt werden, wie in Zeile 2 gezeigt. Jede Funktion, die auf die globale Variable zugreifen möchte, muss außerdem, bevor sie das tun kann, den Befehl global​ gefolgt vom Variablennamen enthalten. In func1 und func2 wird also im Beispiel auf dieselbe Variable zugegriffen und die Werte können sich gegenseitig überschreiben. Also obwohl der Wert für a in func1 auf 6 gesetzt wird, kann er später 10 sein, wenn func2 aufgerufen wird, die den Wert überschreibt. In der Funktion func3 fehlt dagegen die Zeile mit dem Stichwort global, deshalb handelt es sich hier um eine lokale Variable, deren Wert unabhängig von der globalen Variable ist, trotz gleichem Namen.

In unserem Schilder-Plugin in Listing 10.15 benötigen wir die globale Variable, da die Liste zuerst in der onEnable-Funktion in Zeile 7 als leere Liste angelegt und später aus der onCommand-Funktion in Zeile 30 befüllt wird.

In Zeile 17 findest du außerdem den ersten Einsatz der soeben erlernten len-Funktion. Du hast bereits öfters mit Plugins gearbeitet, die erwarten, dass mit dem Befehl ein Parameter übergeben wird, wie zum Beispiel Breite und Höhe beim Mauer-Plugin. Solange der Spieler die Befehle korrekt benutzt und alle Parameter mit angibt, gibt es keine Probleme. Wenn du allerdings versuchst, das Mauer-Plugin ohne entsprechende Parameter aufzurufen, dann wird es einfach einen Fehler produzieren. Um das zu vermeiden, kannst du mithilfe des len-Befehl überprüfen, ob beziehungsweise wie viele Parameter mit einem Befehl übergeben wurden, da jeder übergebene Parameter einen zusätzlichen Eintrag in der Liste args bedeutet. Wird kein Parameter mit dem /schild-Befehl übergeben, so zeigt das Plugin »Bitte Schild-Befehl angeben!« an. Wird ein anderer Parameter als »bauen« übergeben, so zeigt das Plugin dem Spieler folgende Meldung an: »Unbekannter Schild-Befehl!«

Gibt der Spieler jedoch wie erwartet den Befehl /schild bauen ein, so wird ab Zeile 20 in gewohnter Weise ein Schild vor dem Spieler platziert. In Zeile 30 wird dieses Schild dann mit dem append-Befehl der Liste aller Schilder hinzugefügt und in Zeile 31 wird mithilfe des index-Befehls dem Spieler die ID des soeben platzierten Schildes mitgeteilt.

Auf den ersten Blick ist der erste Teil des Plugins damit bereits umgesetzt: Ein Schild wird gebaut, es wird in der Liste aller Schilder gespeichert und dem Spieler wird per Chat-Nachricht die ID mitgeteilt. Besonders praxistauglich ist das Plugin so allerdings noch nicht, denn alle Schilder werden immer in die gleiche Richtung, nämlich nach Süden, ausgerichtet. Viel besser wäre es natürlich, wenn man das Schild ganz nach Belieben in jede mögliche Richtung ausrichten könnte.

Die aus Sicht des Programmierers einfachste Lösung wäre, dem Befehl einfach einen zusätzlichen Parameter für die Drehung zu übergeben. Dafür würde man lediglich eine zusätzliche Anweisung der Form str(args[1]) benötigen, schon wäre das Problem gelöst. Für den Spieler wäre das allerdings alles andere als bequem, wer möchte sich schon 16 verschiedene Rotationen merken.



Download



Haftungsausschluss:
Diese Site speichert keine Dateien auf ihrem Server. Wir indizieren und verlinken nur                                                  Inhalte von anderen Websites zur Verfügung gestellt. Wenden Sie sich an die Inhaltsanbieter, um etwaige urheberrechtlich geschützte Inhalte zu entfernen, und senden Sie uns eine E-Mail. Wir werden die entsprechenden Links oder Inhalte umgehend entfernen.