|
Verfasser |
Nachricht |
Neutrosider
Developer
Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010
Status:
Offline
Danke erhalten: 2325
|
[TUT, LUA] Tabellen und deren benutzung
Um Tabellen richtig nutzen zu können, muss man erstmal wissen, wie diese funktionieren und wozu sie gut sind.
Mit Tabellen Kann man mehrere variablen in einer Speichern. Das funktioniert so, dass jede Variable in einer Tabelle eine art Adresse hat. Das kann eine Zahl, aber auch ein Wort oder nur ein Buchstabe sein. Eine Tabelle kann sogar Variablen von verschiedenen Typen gleichzeitig beinhalten.
Eine Tabelle muss im gegensatz zu anderen Variablen erstmal erstellt werden. Mann kann die tabelle direkt beim erstellen, aber auch nachher "füllen". der Code zum alleinigen erstellen einer tabelle sieht z.b. so aus:
Jetzt kennt das Programm eine Tabelle mit dem namen a, welche aber noch keinen Inhalt hat. Wenn ich die Tabelle direkt beim erstellen "befüllen" will, schreibe ich das z.b. so:
a={x=10, y=20, name="Franz", bild=Image.load("bg.jpg"), farbe=Color.new(255,255,255,255)}
Nun kennt die tabelle die Variablen x,y,name,bild und farbe. Um Jetzt eine der Variablen abzufragen schreibt man den namen der Tabelle, dann einen Punkt und dann den namen der abzufragenden Variable in der Tabelle. Wenn man jetzt z.b. den String (=den Text) der unter dem namen name in der tabelle a abgespeichert ist in der Farbe die unter dem namen farbe in der tabelle steht anzeigen will, dann macht man das so:
screen:print(10,10,a.name,a.farbe)
screen:flip()
Das würde dan auf dem Display (in weiss) erscheinen:
man kann auch variablen aus der tabelle in andere variablen speichern. z.b. so:
Wenn man die Tabelle nach dem erstellen befüllen (oder ändern) möchte, geht das genau umgekehrt, z.b. so:
Jetzt kommen wir zur Dritten art der befüllung einer Tabelle und damit zum interesanntesten Teil. Wie am Anfang schon gesagt, kann die Adresse in einer Tabelle auch eine Zahl sein, nur dann funktioniert das "befüllen" und "abfragen" etwas anders. statt namen der Tabelle, dann einen Punkt und dann den namen schreibt man den Namen der Tabelle, den eine Eckige Klammer auf, dann die Zahl (die adresse) und dann eine eckige klammer zu. Wichtig ist, dass aucuh hier die Tabelle vorher erstellt werden muss, undzwar in diesem fall mit a={}
a={}
a[1]=42
a[2]=17
a[3]=56
a[4]="Test-Text"
a[5]=Color.new(0,0,0,255)
So hätte ma die Adressen 1-5 gefüllt. Wenn man jetzt z.b. den inhalt der Adresse 3 mit der Farbe, welche in der Adresse 5 abgespeichert ist aneigen will, macht man das so:
screen:print(10,10,a[3],a[5])
screen.flip()
Das würde dan auf dem Display (in schwarz) erscheinen:
Wenn man nun z.b. die Zahlen 1 bis 50 in eine Tabelle schreiben will, könnte man das z.b. so:
a={}
i=1
while i<=50 do
a[i]=i
i=i+1
end
und wenn man sowas auf dem Display untereinander anzeigen lassen wollte, kann man das z.b. so:
a={}
i=1
while i<=50 do
a[i]=i
i=i+1
end
-------nun ist die tabelle gefüllt und wird jetzt auf ähnliche weise wieder ausgegeben.
weiss=Color.new(255,255,255,255)
i=1
while i<=50 do
screen:print(10,i*10,a[i],weiss)
i=i+1
end
So, Jetzt wisst ihr wie man tabellen erstellt, befüllt und abfragt. Hier kommt jetzt noch eine Zusammenfassung und eine Liste der wichtigsten Befehle, die mit Tabellen zu tun haben.
Zusammenfassung:
Tabelle erstellen: a={}
Tabelle befüllen: a={x=1, y=50}
oder a.x=1
oder a[1]=1
Tabelle abfragen variable=a.x
oder variable=a[1]
Die Wichtigsten Befehle:
table.concat (tabelle , zwischentext , ab wann , bis wo)
--verbindet die Werte einer tabelle.
table.foreach (tabelle, funktion)
--geht alle Felder einer table durch und übergibt sie ggf an eine Funktion.
table.getn (tabelle)
--gibt die Anzhal der Felder einer Tabelle zurück
table.sort (tabelle , funktion)
--sortiert eine table. Ist keine Funktion gegeben wird nach groesser/kleiner Prinzip sortiert.
table.insert (tabelle, position, wert)
--fügt ein Feld in eine vorhandene table ein.
table.remove (tabelle , position)
--loescht ein Feld einer table
table.setn (tabelle, felderanzahl)
--gibt die Anzahl der Felder einer Tabelle vor.
Wo man Tabellen verwenden kann:
Tabellen kann man z.b. bei der darstellung eines menüs gebrauchen. anstatt jeden menüpunkt eineln zu programmieren, muss man nur noch die Tabelle füllen und abfragen. Aber auch Textdateien kann man z.b. Zeile für Zeile in eine Tabelle Speichern und dann ausgeben. Für die die zufällig mein Homebrew AX kennen, bei allen Downloadlisten, bei den Newslisten, der darstellung von Textdateien und dem anzeigen von News hab ich Tabellen benutzt. Ohne sie wäre der quelltext mindestens 10 mal so lang.
1.KOPIEREN NICHT ERLAUBT
2.FRAGEN ABER GERNE
Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2010 19:47 von Neutrosider.
|
|
25.03.2010 20:50 |
|
Folgende User bedanken sich: SIM sk (Sep-2-2014), AirMAX (Jan-13-2013), SparkMonkay (Dec-12-2012), luaprogrammer (Nov-18-2012), taipangr (Jan-10-2012), Kiba113 (Dec-1-2011), DaRkRaPiD (Oct-18-2011), PSPdaddeln (Sep-23-2011), jaydn (Aug-9-2011), The-Chief-069 (Aug-5-2011), secret (Jul-23-2011), TheSnak3 (Apr-28-2011), Norton95 (Jan-24-2011), Nudelsalat (Jan-20-2011), Dark_Monkey (Jan-20-2011), Cha0z (Jan-19-2011), -blue7 (Jan-19-2011), Vladek (Jan-2-2011), notepass (Dec-28-2010), noobie (Nov-22-2010), PSP-ELITE (Nov-9-2010), calligroth (Oct-19-2010), m33 (Oct-18-2010), Camaro8000 (Jul-10-2010), Darktraceur92 (May-21-2010), SwimCSS (Apr-20-2010), pspbricker (Mar-26-2010), Lett1 (Mar-25-2010) |
|
Lett1
Hurr Durr
Beiträge: 548
Gruppe: User
Registriert seit: Nov 2009
Status:
Offline
Danke erhalten: 597
|
RE: [TUT, LUA] Tabellen und deren benutzung
Grandioses Tutorial, ein must read für Anfänger. Weiter so, kriegst ein Danke.
|
|
25.03.2010 20:59 |
|
Folgende User bedanken sich: |
|
Big Daddy
Legende
Beiträge: 1.096
Gruppe: User
Registriert seit: Nov 2009
Status:
Offline
Danke erhalten: 128
|
RE: [TUT, LUA] Tabellen und deren benutzung
Ich muss Lett1 zustimmen echt gutes TUT
2Pac West Coast Rap 4Ever
PSP FAT
5.00m33-6
Chrome Faceplate
8GB
Geiles Design
PS3 Games Spoiler öffnen
PS3 Games/GTA 4
Saints Row 2
Midnight Club Los Angeles
Borderlands
U.V.M
|
|
25.03.2010 21:04 |
|
|
|
Neutrosider
Developer
Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010
Status:
Offline
Danke erhalten: 2325
|
RE: [TUT, LUA] Tabellen und deren benutzung
update: hatte einen kleinen fehler gefunden. hatte bei den code-beispielen, bei denen hohgezählt wird die zeile i=i+1 vergessen. das ist nun behoben.
GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
|
|
10.08.2010 19:50 |
|
Folgende User bedanken sich: |
|
Mobai
Profi
Beiträge: 424
Gruppe: User
Registriert seit: Jan 2011
Status:
Offline
Danke erhalten: 107
|
RE: [TUT, LUA] Tabellen und deren benutzung
Sind das die selben Befehle, wie bei PGE?
Es gibt zwei Arten, Software zu entwerfen: Eine ist, es so einfach zu machen, dass es offensichtlich keine Mängel gibt; die andere ist, es so kompliziert zu machen, dass es keine offensichtlichen Mängel gibt.
--C. A. R. Hoare
|
|
19.01.2011 20:12 |
|
|
|
Neutrosider
Developer
Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010
Status:
Offline
Danke erhalten: 2325
|
RE: [TUT, LUA] Tabellen und deren benutzung
ja, mir fällt so auf anhieb bei den Tabellen kein unterschied zwischen PGE und HM Lua ein.
GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
|
|
20.01.2011 18:27 |
|
|
|
pspbricker
Mod a.D.
Beiträge: 3.428
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 1641
|
RE: [TUT, LUA] Tabellen und deren benutzung
Es gibt keinen Unterschied im Syntax zwischen HM und PGE, nur die Funktionen heißen anders.
Meine PS3 Games : Warhawk , NFS: Pro Street, Motorstorm ,Midnight Club LA, LittleBigPlanet, GTA4, Uncharted 2, Overlord, Killzone2, PES10, Battlefield ´43, Socom: Confrontation,
Forum Regeln Beachten! KEIN ISO Talk! KEINE Beleidigungen! KEINE illegalen Links!
|
|
20.01.2011 18:40 |
|
|
|
Dark_Monkey
Experte
Beiträge: 641
Gruppe: User
Registriert seit: Aug 2009
Status:
Offline
Danke erhalten: 193
|
RE: [TUT, LUA] Tabellen und deren benutzung
Ich würde sagen das sind tables und keine Tabellen!
Würdes du noch ein CodeBeispiel für die SaveGame funktion machen? sonst würde ich das tun xD
durchgestrichen
|
|
20.01.2011 19:31 |
|
|
|
Neutrosider
Developer
Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010
Status:
Offline
Danke erhalten: 2325
|
RE: [TUT, LUA] Tabellen und deren benutzung
Table ist doch nur das englische Wort für Tabelle -.-
GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2011 19:35 von Neutrosider.
|
|
20.01.2011 19:34 |
|
|
|
Mobai
Profi
Beiträge: 424
Gruppe: User
Registriert seit: Jan 2011
Status:
Offline
Danke erhalten: 107
|
RE: [TUT, LUA] Tabellen und deren benutzung
Oder Tisch
Was ist jetzt genau der Unterschied bei den Funktionen?
Es gibt zwei Arten, Software zu entwerfen: Eine ist, es so einfach zu machen, dass es offensichtlich keine Mängel gibt; die andere ist, es so kompliziert zu machen, dass es keine offensichtlichen Mängel gibt.
--C. A. R. Hoare
|
|
20.01.2011 19:53 |
|
|
|
taipangr
Legende
Beiträge: 1.444
Gruppe: User
Registriert seit: Jul 2011
Status:
Offline
Danke erhalten: 397
|
RE: [TUT, LUA] Tabellen und deren benutzung
Danke dir fürs Tutorial will Lua umbedinkt lernen damit ich paar Homebrews entwickeln kann...Werde mir mal das Wochenende dafür nehmen und mal gucken ob ich nur ein bisschen damit klar komme
Danke
|
|
10.01.2012 18:23 |
|
|
|
stchsipe
Neuling
Beiträge: 1
Gruppe: User
Registriert seit: Aug 2014
Status:
Offline
Danke erhalten: 0
|
RE: [TUT, LUA] Tabellen und deren benutzung
Hi Leute,
ich benötige dringend eure Hilfe
ich habe eine Tabelle
local table = {1, 2, 3, 4, 5, 6.....} zum Beispiel
und will aber nicht alle werten der Tabelle ausgeben sondern nur einen Teil (zum Beispiel ab dem 3. oder 5. ausgeben)
wie kriege ich das mit Lua hin
danke im Voraus
Dieser Beitrag wurde zuletzt bearbeitet: 06.08.2014 10:06 von stchsipe.
|
|
06.08.2014 10:05 |
|
|
|
SIM sk
Experte
Beiträge: 632
Gruppe: User
Registriert seit: Sep 2011
Status:
Offline
Danke erhalten: 135
|
RE: [TUT, LUA] Tabellen und deren benutzung
Würdes du noch ein CodeBeispiel für die SaveGame funktion machen? sonst würde ich das tun xD
Ich habe bei meinem Homebrew Dragonball Black auch eine Save-Funktion, die aber wahrscheinlich viel zu umständlich ist. Funktioniert dennoch:
Spielstand.lua:
Du brauchst dann noch im Hauptcode folgende Funktionen:
Script.lua:
1.) spielstand.lua laden.
2.) Beispiel fürs speichern, wenn der Spieler "speichern" drückt.
if pad:cross() and oldpad:cross() ~= pad:cross() and current == 3 then
if spielstand == 1 then
datei = io.open("spielstand.lua","w")
datei:write("spielstand = 1")
datei:close()
elseif spielstand == 2 then
datei = io.open("spielstand.lua","w")
datei:write("spielstand = 2")
datei:close()
elseif spielstand == 3 then
datei = io.open("spielstand.lua","w")
datei:write("spielstand = 3")
datei:close()
end
end
current == 3 steht nur dafür, dass bei meinem Menü die 3.te Option "Speichern" ist und beim drücken von "X" wird dann die Funktion ausgeführt.
wenn der Spielstand = 2 ist, dann überschreibt man natürlich die spielstand.lua in.
die oben gegebene Funktion tut dies von selbst!
3.) eine Funktion, die checkt welcher Spielstand ist und dem entsprechend eine Funktion/en oder Level laden soll:
if spielstand == 1 then
-~-HIER DEINEN CODE EINFÜGEN-~-
end
bei Fragen und Problemen kann man mir auch eine PN schreiben oder einfach hier im Thread
Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2014 11:37 von SIM sk.
|
|
02.09.2014 16:08 |
|
|
|
|