Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Die Skriptsprache Lua 17. 4. 2008 Softwaretechnologie II.

Ähnliche Präsentationen


Präsentation zum Thema: "Die Skriptsprache Lua 17. 4. 2008 Softwaretechnologie II."—  Präsentation transkript:

1 Die Skriptsprache Lua Softwaretechnologie II

2 1Überblick Entwicklung seit 1993 an der Pontifical Catholic University in Rio de Janeiro, Brasilien - freie Software (MIT-Lizenz) - Source-Code besteht aus ca Zeilen in C - Interpreter & Lua-Bibliotheken benötigen zusammen nur ca. 400 KB Speicherplatz - keine echte objektorientierte Sprache, stattdessen Meta-Mechanismen zur Implementierung von Klassen und Vererbung

3 2Anwendung - kann auf allen Plattformen, die einen ANSI/ISO C-Compiler besitzen, verwendet werden: Unix / Linux, Windows, Handybetriebssysteme... - laut Entwicklern extrem schnell, sowohl in Benchmarks als auch in komplexen Anwendungen - das API von Lua erlaubt es, Code in Lua in Anwendungen anderer Sprache (C++, Java, Perl...) zu integrieren - Lua kann andersherum auch mit Bibliotheken in anderen Sprachen erweitert werden - viele professionelle Programme und besonders Spiele verwenden Lua, z. B. um mehrere Ebenen der Software zu trennen

4 2 - Lua kann dann den Entwicklern oder den Kunden das Skripten vereinfachen - die Segmente in Lua sind dann vom eigentlichen Spiel abstrahiert und besitzen dafür eine hohe Wiederverwendbarkeit - z. B. können Spieler Konfigurationsdateien in Lua editieren oder simple Add-Ons für das Spiel schreiben, ohne einen tiefen Einblick in die Spiel- Engine zu haben - einige aktuelle Spiele, die Lua nutzen: Crysis, FarCry, World of Warcraft, Die Siedler V, Spellforce u. v. m.

5 2 - für unsere Zwecke ein mögliches Anwendungsgebiet: KI-Routinen in Lua verfassen - denkbar: Aussehen des Interfaces, Beschreibung der Spielwelt, Spielregeln... - Kernteile eines Spieles bestehen dennoch meistens aus C++ Code

6 3Editor - mehrere Editoren verfügbar, z. B. LuaEdit (http://luaedit.luaforge.net)

7 4Basics - case-sensitiv: meineVariable und meinevariable werden unterschieden - keywords: and break do else elseif end false for function if in localnil not or repeat return thentrue until while - tokens: + - * / % ^ # = = ~= = = ( ) { } [ ] ; :,......

8 5Variablen - dynamically typed language - Basistypen : nil, boolean, number, string, function, userdata, thread, table AnzahlEiskugeln = 3 AnzahlEiskugeln = 3.0 AnzahlEiskugeln = drei print ( AnzahlEiskugeln)

9 5 eins = Zwei Strings zwei = verbinden zusammen = eins.. zwei ein_string = bla eine_zahl = 50 ergebnis = ein_string + eine_zahl ichbineinbool = true

10 6Tabellen - ein aggregierter Datentyp, in Lua große Bedeutung - für Listen, Arrays, assoziative Arrays, geschachtelte Tabellen - werden auch zum Simulieren von Objekten benötigt tab = { value = 123, text = "hello" } print( x.value) print( x.text)

11 6 - geschachtelte Tabellen tab = { t_eins = { name="Pi", value= }, t_zwei = { name="light speed", value=3e8 } }

12 7Funktionen - analog zu C++ function meineFunktion( summand1, summand2) ausgabe = summand1 + summand2 print( ausgabe) return ausgabe end meine Funktion( summand1, summand2)

13 8Typen - zur Identifizierung eines Typs ichBinEinString = "123" print( type( ichBinEinString)) - viele nützliche vordefinierte Funktionen in der Lua-Bibiliothek (siehe Online-Dokumentation / mitgeliefertes Handbuch)

14 9Blöcke - Lua arbeitet den Code in Blöcken ab - Block beginnt immer mit einem Schlüsselwort und endet mit end - Ausnahme: repeat - Kennzeichnung eines Blockes mit { }, wie in C++, nicht nötig if Bedingung thenrepeat... Block Block... end until Bedingung

15 10Kontrollstrukturen - if / then / else / elseif, for, while, repeat for variable = anfang, ende, sprungWeite do... Block... end

16 11Metatables - Tabellen oder auch den userdata Objekten können Metatabellen zugeordnet werden - Beispiel: es wäre ohne Metatabelle nicht möglich, zwei Tabellen zu addieren vek1 = { x = 3, y = 0, z = 0 } vek2 = { x = 0, y = 1, z = 2 } neu = vek1 + vek2 wäre ohne zugehörige Metatabelle NICHT möglich (vek1 und vek2 würden jeweils nur eine globale Position der Tabelle zurückgeben)

17 11 metaTab = { } metaTab.__add = function( table1, table2 )... wie soll diese Methode aussehen... end - Metatabelle muss mit der Tabelle verknüpft werden setmetatable(Tabelle, metaTab)


Herunterladen ppt "Die Skriptsprache Lua 17. 4. 2008 Softwaretechnologie II."

Ähnliche Präsentationen


Google-Anzeigen