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
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.
Let's Play: Programmieren lernen mit Python und Minecraft by Daniel Braun(848)
Hacking Multifactor Authentication by Roger A. Grimes(824)
Datenschutz by Jochen Schneider(821)
Microsoft Windows 8.1 Power-Tipps Das Maxibuch by Günter Born(813)
Microservices mit Go by Kristian Köhler(801)
Praxiswissen TYPO3 CMS 10 LTS by Robert Meyer && Martin Helmich(769)
Reinforcement Learning by Phil Winder Ph. D(764)
Mein Weg zu SAP by Bill McDermott(756)
Twisted Network Programming Essentials by Jessica McKellar and Abe Fettig(749)
Reinforcement Learning by Phil Winder(745)
Exploring Microsoft Word 2019 Comprehensive by Mary Anne Poatsy(744)
Mikrocontroller by Herbert Bernstein(739)
Einstieg in Visual Basic 2010, 2. Auflage by Thomas Theis(738)
Der Paketfilter bei OpenWrt by Mathias Weidner(736)
Open Source Intelligence Investigation by Luke Richards(735)
Taming Big Data by A Tanveer(735)
PowerShell 7 und Windows PowerShell by Tobias Weltner(730)
Das Franzis-Handbuch fur Office 2013 by Saskia Giessen(723)
Vom Monolithen zu Microservices by Sam Newman(722)