Antwort schreiben  Thema schreiben 
Seiten (2): « Erste [1] 2 Nächste > Letzte »
Verfasser Nachricht
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #1
xPSP  [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:

Code:
a={}

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:

Code:
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:

Code:
screen:print(10,10,a.name,a.farbe)
screen:flip()

Das würde dan auf dem Display (in weiss) erscheinen:

Code:
Franz

man kann auch variablen aus der tabelle in andere variablen speichern. z.b. so:

Code:
hintergrundbild=a.bild

Wenn man die Tabelle nach dem erstellen befüllen (oder ändern) möchte, geht das genau umgekehrt, z.b. so:

Code:
a.name="Heinz"


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={}

Code:
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:

Code:
screen:print(10,10,a[3],a[5])
screen.flip()

Das würde dan auf dem Display (in schwarz) erscheinen:

Code:
56


Wenn man nun z.b. die Zahlen 1 bis 50 in eine Tabelle schreiben will, könnte man das z.b. so:

Code:
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:

Code:
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
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
Beitrag: #2
RE: [TUT, LUA] Tabellen und deren benutzung

Grandioses Tutorial, ein must read für Anfänger. Weiter so, kriegst ein Danke.


Der PSPKing Android Megathread
Kommt rein und plaudert ein bisschen Big Grin
25.03.2010 20:59
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Vladek (Jan-2-2011)
Big Daddy
Legende
*****


Beiträge: 1.096
Gruppe: User
Registriert seit: Nov 2009

Status: Offline
Danke erhalten: 128
Beitrag: #3
xPSP  RE: [TUT, LUA] Tabellen und deren benutzung

Ich muss Lett1 zustimmen echt gutes TUTthumb


2Pac West Coast Rap 4Ever



PSP FAT
5.00m33-6
Chrome Faceplate
8GB
Geiles Design

PS3 Games Spoiler öffnen

Spoiler: (anzeigen)
25.03.2010 21:04
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #4
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Vladek (Jan-2-2011)
Mobai
Profi
****


Beiträge: 424
Gruppe: User
Registriert seit: Jan 2011

Status: Offline
Danke erhalten: 107
Beitrag: #5
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #6
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
pspbricker
Mod a.D.
*


Beiträge: 3.428
Gruppe: User
Registriert seit: May 2008

Status: Offline
Danke erhalten: 1641
Beitrag: #7
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Dark_Monkey
Experte
****


Beiträge: 641
Gruppe: User
Registriert seit: Aug 2009

Status: Offline
Danke erhalten: 193
Beitrag: #8
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #9
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Mobai
Profi
****


Beiträge: 424
Gruppe: User
Registriert seit: Jan 2011

Status: Offline
Danke erhalten: 107
Beitrag: #10
xPSP  RE: [TUT, LUA] Tabellen und deren benutzung

Oder Tisch siesta

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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
taipangr
Legende
*****


Beiträge: 1.444
Gruppe: User
Registriert seit: Jul 2011

Status: Offline
Danke erhalten: 397
Beitrag: #11
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 Big Grin

Danke

10.01.2012 18:23
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
stchsipe
Neuling
*


Beiträge: 1
Gruppe: User
Registriert seit: Aug 2014

Status: Offline
Danke erhalten: 0
Beitrag: #12
xGames  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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
SIM sk
Experte
****


Beiträge: 632
Gruppe: User
Registriert seit: Sep 2011

Status: Offline
Danke erhalten: 135
Beitrag: #13
xGames  RE: [TUT, LUA] Tabellen und deren benutzung

Dark_Monkey :
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:

Code:
spielstand = 1


Du brauchst dann noch im Hauptcode folgende Funktionen:

Script.lua:
1.) spielstand.lua laden.

Code:
dofile("spielstand.lua")


2.) Beispiel fürs speichern, wenn der Spieler "speichern" drückt.

Code:
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.

Code:
spielstand = 2

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:

Code:
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 Wink

Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2014 11:37 von SIM sk.

02.09.2014 16:08
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Seiten (2): « Erste [1] 2 Nächste > Letzte »
Antwort schreiben  Thema schreiben 

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang