[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
====== Grundlagen ======
Die hier behandelten Themen sollte (muß) eigendlich jeder wissen, der eine Map erstellen will.
===== Variablen =====
* Eine Variable ist ein Speicherplatz (Behälter), in dem man alles mögliche ablegen kann. Und wenn man`s dann braucht weiß man wo es ist; in der Variablen. \\
* Die Variable braucht einen Namen. Das ist ein (fast((Manche Wörter werden vom Programm schon gebraucht und dürfen nicht verwendet werden. \\ Z.B. **end, do, for, while, assert**, und viele mehr))) beliebiges Wort, z.B. foo oder bar oder Chromix oder Oma oder page... \\
* Zu beachten ist dabei vor allem die **Groß- und Kleinschreibung**. So sind foo und Foo zwei unterschiedliche Variablen. \\
* Außerdem dürfen **nur** Buchstaben, Zahlen und der Unterstrich verwendet werden, wobei das erste Zeichen ein Buchstabe oder Unterstrich sein muss.
* Variablen können [[tutorials:globale_und_lokale_variablen|global oder local]] sein. Siehe eigenes Tutorial. \\ \\
**Einige Arten**
| **Art** ^Beschreibung^
^Boolesche Variablen| Sind Elemente einer booleschen Algebra, die **immer einen von zwei Werten annehmen**. Dieses Wertepaar wird je nach Anwendung u.a. als „wahr / falsch“, **„true / false“**(bei uns) oder **„1 / 0“**(für einige Funktionen) bezeichnet.|
^Numerische Variablen| Hierin werden alle Zahlen abgelegt.|
^Text Variablen| Hierin werden beliebige Texte abgelegt.|
^[[tutorials:Tables]]| Sind Variablen die wiederum Variablen enthalten.|
^[[tutorials:Funktionen]]|Ja, Variablen konnen komplette [[tutorials:Funktionen]] beinhalten. Sehr praktisch!|
Variablen können mittels des Gleichheitszeichen **"="** Werte zugewiesen werden. Ein Wert kann eine Zahl, ein String oder ein Table sein. Zahl und String werden gleich erklärt, [[tutorials:Tables]] in einem anderen Tutorial.
allgemein:
Variable = Wert
Beispiele:
| **mit Logik** | **mit Strings** | **mit Zahlen** | **[[tutorials:Tables|table]] ** | **[[tutorials:Funktionen]]** |
|istTot = true
nichtTot = false
|_foo = "bar"
Chromix = "Gott"
Nummer5 = "lebt"
|page = 1
zahl = 0.5
|
Briefing = {}
| vari = function(_a, _b)
return _a + _b;
end
|
Hat man einer Variablen einen Wert zugewiesen, kann man diesen Wert an anderer Stelle durch Angabe des Variablennamen einsetzen.
Einfaches Beispiel:
* Erst einer Variablen einen Wert zuweisen \\ variable = "Hallo Welt"
* Dann den Wert der Variablen irgendwie verwenden \\ [[reference:Message]](variable)
* Auf dem Bildschirm erscheint: **Hallo Welt**
==== Zahlen ====
Eine Zahl kann ganzzahlig oder eine Fließkommazahl sein. Eine Kommazahl schreibt man aber nicht mit einem Komma sondern mit einem Punkt (z.B.: 6.25, 0.123456789, 12.5).
Mit Zahlen kann man aber auch rechnen. Das beste Bespiel kennt ihr bereits aus den BB Tutorials bei Briefings:
page = page + 1
Dort wird zur aktuellen Seite 1 addiert. Auch die anderen Grundrechnenarten - * und / kann man verwenden.
==== Strings ====
Bei einem String muss man beachten, diesen in Anführungszeichen (") zu setzen, da er sonst als Variable angesehen würde (z.B.: "Hallo Welt!", "Dario", "Zehn zahme Ziegen zogen zwanzig Zentner Zucker zum Zug").
Normalerweise sind alle möglichen Zeichen in Strings möglich. Allerdings gibt es zwei Ausnahmen: Das Anführungszeichen (") und der Backslash (\). Möchtet ihr eine dieser Zeichen in einem String verwenden, stellt ihm wiederum einen Backslash voran. Klingt kompliziert, ist es aber nicht. \\ Darum hier wieder ein Beispiel:
Die Sätze: Siedler DEdK Maps kommen in das Verzeichnis: "C:\Programme\Ubisoft\Blue Byte\Die Siedler - Das Erbe der Könige\extra1\shr\maps\user". Man muss aber das AddOn besitzen
wäre als String:
MeinString = "Siedler DEdK Maps kommen in das Verzeichnis: \"C:\\Programme\\Ubisoft\\Blue Byte\\Die Siedler - Das Erbe der Könige\\extra1\\shr\\maps\\user\". Man muss aber das AddOn besitzen"
Strings lassen sich untereinander oder mit Variablen durch 2 Punkte verknüpfen, also ..
Nehmen wir an, wir haben eine Variable counter, welche durch einen Job jede Sekunde um 1 nach oben gezählt wird. Nun könnte man in einem weiteren Job oder einer Funktion den Wert von counter als Message ausgeben.
Die Aufruf
Message("Es wurden bereits "..counter.." Sekunden gespielt")
lässt also nach 200 Sekunden die Nachricht "Es wurden bereits 200 Sekunden gespielt" erscheinen.
Es wurden hier also ein String, eine Variable und noch ein String zu einem Satz verknüpft.
Oder Ihr zählt den counter von einem bestimmten Wert an herunter und gebt dann auf dem Bildschirm aus:
"Noch xx Sekunden bis zum nächsten Angriff"
durch den Aufruf
Message("Noch "..counter.." Sekunden bis zum nächsten Angriff")
Bei so einer Verkettung solltet Ihr aber am Anfang bzw. Ende jedes Strings noch ein Leerzeichen platzieren, da sonst das Verkettete direkt dran geklatscht wird.
==== Funktionen ====
Im Editor werdet ihr ständig mit ihnen konfrontiert und weil die deshalb so wichtig sind, kommen sie nochmal ein einem eigenen Tutorial vor.
Vorab nochmal das Aussehen eine Funktion:
-- hier beginnt die Funktion foo
function foo()
-- hier steht alles was die Funktion machen soll
end
oder auch so möglich:
-- hier beginnt die Funktion foo
foo = function()
-- hier steht alles was die Funktion machen soll
end
-- jetzt ist die Funktion zuende
\\
Die zuletzt genannte Form der Deklaration einer Funktion findet man z.B. bei der sog. Finished-Funktion eines Briefings
\\
-- hier beginnt die Finished-Funktion eines Briefings
briefing.finished = function()
-- was auch immer nach dem Briefing passieren soll
end
-- Ende der Funktion
\\
===== Konstanten =====
Konstanten sollen hier auch noch ihre Erwähnung finden. Im Gegensatz zu Variablen kann man Konstanten nur benutzen und nicht verändern. Wo kämen wir auch hin, wenn jeder sein eigenes PI hätte. Stark gerundet ist das:
math.pi = 3,1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
\\
\\
[[:tutorials:index|Zur Tutorial-Übersicht]]