Blender - Handbuch zur Spiel-Engine: Python Syntax und Befehle


Diese Seite bezieht sich auf Blender v2.46

Die Pythonsyntax und Befehle sind recht einfach. Da es bei Wikibooks bereits eine Pythondokumentation gibt, möchte ich nur kurz das wichtigste erklären.

Aktivieren des Skriptes Bearbeiten

Um das Skript zu aktivieren brauchen wir einen Pythoncontroller, der mit einem Always-Sensor verbunden ist. Im Controller wird nun der Name des Skriptes eingetragen, welches ihr im Texteditor schreibt. Drückt ihr nun [P] startet das Spiel und das Ergebnis des Skriptes könnt ihr euch in der Konsole ansehen.

Zu beachten Bearbeiten

Python benötigt kein Zeichen wie Semikolon am Ende einer Zeile, allein der Zeilenumbruch genügt, um das Ende einer Zeile zu definieren. Zeileneinrückungen dürfen allerdings nicht willkürlich vorgenommen werden, da man sonst eine Fehlermeldung erhält. Man muss Variablen auch nicht vorneweg deklarieren, sondern kann sie, wo immer man möchte, einfügen und mit Werten füttern. Kommentare kann man hinter einem Rautesymbol [#] verfassen, die bis zum Ende der Zeile gültig sind. Anhand folgenden Codes kann man einige Eigenschaften der Sprache gut erkennen:

Variable1 = 3

Variable2 = 5

print(Variable1+Variable2)

Die wichtigsten mathematischen Operatoren sind "+"(Addition), "-"(Subtraktion), "*"(Multiplikation) und "/"(Division). Der "print"-Befehl gibt den dahinter genannten Wert oder das hinter ihm genannte Ergebnis einer Rechnung in der Blender-Konsole aus. Im Beispielcode wird zuerst zwei Variablen ein Wert zugewiesen, diese werden dann in der "print"-Anweisung addiert.

Variablen Bearbeiten

Python kann mit den Variablentypen Float(Gleitkommazahl), Integer(Natürliche Zahl) und String(Zeichenkette) umgehen. Außerdem stehen uns Listen und Tupel zur Verfügung, was folgender Beispielcode zeigt:

liste = [1,2,3]
tupel = (1,2,3)
ergebnis = liste[2]*tupel[2]

print ergebnis

Der Unterschied zwischen Listen und Tupeln ist, dass man Tupeln NUR lesen und nicht wie Listen schreiben kann. Die verschiedenen Werte einer solchen Liste oder eines Tupels erhält man über einen Index. Wie im Code zu sehen, erreicht man einen einzelnen Wert, indem man eckige Klammer mit einer Zahl (0 ist der erste Wert der Liste oder des Tupels, 1 der Zweite, 2 der Dritte usw.) direkt hinter den Variablennamen setzt.
Möchte man einen bestimmten Wert einer Liste beschreiben, funktioniert es genauso.

Vergleichsoperatoren Bearbeiten

Des weiteren existieren folgende Vergleichsoperatoren, die aber erst bei Bedingungsabfragen interessant werden:

"<" kleiner;

">" größer;
"<=" kleiner oder gleich;
">=" größer oder gleich;
"==" gleich;
"!=" ungleich;

Bedingungsabfragen und Schleifen Bearbeiten

Bei einer Bedingungsabfrage wird ein Befehl erst ausgeführt, wenn, wie der Name sagt, Bedingungen erfüllt sind. Hier ein Beispiel mit einer if-then-else Schleife:

Wert1 = 3

Wert2 = 3
if Wert1 == Wert2:

print("stimmt")

else:

print("stimmt nicht")

Sehr wichtig sind der Doppelpunkt nach der Bedingung und die Einrückung der Anweisung, weil in Python Anweisungsblöcke nicht mit geschweiften Klammern ({}) umgeben werden, sondern durch Einrückungen symbolisiert werden. Mit "and", "not" und "or" kann man verschiedene Bedingungen in Beziehung stellen. Das Letzte, das ich jetzt noch schnell vorstellen möchte, ist die for i Schleife. Mit ihr kann man einen Vorgang wiederholen, der sonst jedesmal einzeln programmiert werden müsste. Doch erstmal ein Beispiel:

Die for i Schleife Bearbeiten

Nun möchte ich noch eine Schleife vorstellen, die oft benutzt wird, wenn bestimmte Dinge wiederholt werden sollen. Sie heißt "for i Schleife".

for i in range(8):
print i
print("hallo")

Hier werden die eingerückten Befehle sooft ausgeführt, wie es die Zahl in der Klammer von "range()" vorschreibt. Bei jedem Durchlauf wird i um eins erhöht und in der Konsole mit dem Wort "hallo" ausgegeben.

Die while-Schleife Bearbeiten

Eine weitere Schleife ist die while-Schleife. Mit ihr können Anweisungen solange ausgeführt werden, solange eine Bedingung wahr ist.

i = 0

while i < 10:

i = i + 1
print ("hallo")

Das Beispiel macht genau dasselbe, wie das Beispiel für die for-Schleife. Eine wichtige Anwendung für while-Schleifen ist das unendliche Ausführen von Befehlen. Dazu muss als Bedingung nur True angegeben werden.

while True:
print ("hallo")

Hier wird unendlich mal "hallo" ausgegeben. Nicht sehr sinnvoll in dem Fall, doch diese Version der while-Schleife ist nützlich für die Hauptschleife in einem Spiel, in der Dinge ständig wiederholt werden müssen (z.B. Position der Spieler abfragen -> Spieler bewegen -> Siegesbedingung abfragen -> Position der Spieler abfragen -> ...).

In Blender ist die unendliche while-Schleife aber nicht zu empfehlen, da sich in dem Fall Blender aufhängt.

Schluss Bearbeiten

Mit diesem Wissen können wir nun anfangen, Python für unsere Spieleprogrammierung zu nutzen.