Skocz do zawartości
szymex

Od zera do LUA Mastera - Tabelki

Rekomendowane odpowiedzi

Witam Was ponownie w kolejnym poradniku. Dzisiaj postaram się omówić tabele. Żeby było łatwiej podzielimy je na dwie kategorie: tabele jednowymiarowe i dwuwymiarowe.

Tabele jednowymiarowe to na prosty rozum kilka zmiennych ukrytych pod jedną nazwą. Aby łatwiej zrozumieć tabelki posłużymy się przykładami z programu Excel. Tabele jednowymiarowe posiadają nieskończenie wiele kolumn(A,B,C,D...) ale jeden wiersz(1). Przykład:

local tabelka = {}  -- tworzymy tabele lokalną jednowymiarową
tabelka[1] = 5  -- przyporządkowujemy tabelce o kolumnie '1' wartość 5 (Excel: A1)
tabelka[2] = 4  -- przyporządkowujemy tabelce o kolumnie '2' wartość 4 itd. (Excel: B1)
tabelka[3] = 3 -- (Excel: C1)
(( LUB ))
local tabelka = {5,4,3}

print (tabelka[1]) -- wyświetli na konsoli 5

Kolejne kolumny możemy oznaczać nie tylko liczbami ale także wyrazami(ciągami znaków), na przykład:

local dane = {}
dane["imie"] = "Jan"  -- przyporządkowujemy tabelce o kolumnie 'imie' wartość string "Jan" (Excel: A1 - zamieniamy tak jakby nazwę kolumny z "A" na "imie")
dane["wiek"] = 15  -- (Excel: B1)

print(dane["imie"]) -- wyświetli na konsoli "Jan"

Tabele dwuwymiarowe różnią się tym, że posiadają nie jeden, a nieskończenie wiele wierszy. Przykład:

local tabelka = {}  -- tworzymy tabele lokalną jednowymiarową
tabelka[1] = {}  -- dodajmy do tabelki kolejny wiersz jednocześnie tworzymy tabele dwuwymiarową
tabelka[1]["imie"] = "Jan"  -- przyporządkowujemy wierszowi '1' w kolumnie 'imie' wartość "Jan" (Excel: A1)
tabelka[1]["wiek"] = 15   -- przyporządkowujemy wierszowi '1' w kolumnie 'wiek' wartość 15 (Excel: B1)
tabelka[2] = {}  -- dodajemy do tabelki kolejny wiersz 
tabelka[2]["imie"] = "Franek"  -- przyporządkowujemy wierszowi '2' w kolumnie 'imie' wartość "Franek" (Excel: A2)
tabelka[2]["wiek"] = 18   -- przyporządkowujemy wierszowi '2' w kolumnie 'wiek' wartość 18 (Excel: B2)

print(tabelka[2]["imie"]) -- wyświetli na konsoli "Franek"

Rozmiar tabelek możemy sprawdzić wykorzystując operator length ( "#" ) - ten sam, którego używaliśmy do sprawdzania długości stringu.

 

Zastosowania
1. Kordy, X,Y,Z kilku graczy.


local kord = {}  -- tworzymy tabelkę 'kord'
kord[1] = {}  -- dodajemy wiersz / tworzymy drugi wymiar / dodajemy gracza
kord[1]["X"] = 125.42  -- przyporządkowujemy graczowi '1' kord 'X'
kord[1]["Y"] = 456.12  -- przyporządkowujemy graczowi '1' kord 'Y'
kord[1]["Z"] = 12.45  -- przyporządkowujemy graczowi '1' kord 'Z'
kord[2] = {}  -- dodajemy drugi wiersz / dodajmy kolejnego gracza
kord[2]["X"] = 345.88  -- przyporządkowujemy graczowi '2' kord 'X'
kord[2]["Y"] = 456.86
kord[2]["Z"] = 1002.12

Dzięki takiemu rozwiązaniu unikamy tworzenia mnóstwa zmiennych, a w przypadku gdy liczba graczy jest nie znana omijamy wiele zbędnych problemów. Oczywiście całe to powyższe przyporządkowanie możemy sprowadzić do krótkiej i prostej pętli - popróbujcie sami ;)
2. Podstawowe dane graczy z wykorzystaniem pętli

local dane = {}  -- tworzymy tabelkę 'dane' 
for k, v in ipairs(getElementsByType("player")) do  -- pętla, dzięki której sprawdzimy wszystkich graczy
      dane[k] = {} -- dodajemy wiersz / tworzymy drugi wymiar / dodajemy gracza
      dane[k]["nick"] = getPlayerName(v)  -- przyporządkowujemy graczowi 'k' jego 'nick'
      dane[k]["money"] = getPlayerMoney(v)
      dane[k]["ping"] = getPlayerPing(v)
end
(( 'k' jest zmienną przechowującą liczbę, która wzrasta o jeden po każdym obwodzie pętli - tak samo jak wartość i z poprzedniego poradnika ))

Podsumowując tabelki to bardzo prosta i przydatna rzecz. W kolejnym poradniku zaczniemy już robić coś więcej i omówimy sobie zdarzenia (eventy) oraz funkcje.
Przykłady Excel podałem tylko po to, aby łatwiej było Wam pojąć definicję tabeli oraz ich strukturę i działanie.
Pytajcie, jeżeli czegoś nie rozumiecie, albo brakuje Wam przykładów...

Autor: szymex
Zakaz kopiowania i rozpowszechniania bez mojej zgody!

Edytowane przez szymex

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzięki, szczerze czekałem na kontynuacje tego poradnika. Ciekawie byłoby gdyby był tylko aktualizowany nieco częściej, ale oczywiście to twój poradnik, twoje tempo. ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Literówka:

local dane = {}
dane["imie"] = "Jan"  -- przyporządkowujemy tabelce o kolumnie 'imie' wartość string "Jan" (Excel: A1 - zamieniamy tak jakby nazwę kolumny z "A" na "imie")
dane["wiek"] = 15  -- (Excel: B1)

print(tabelka["imie"]) -- wyświetli na konsoli "Jan"
Zamiast tabelka powinno być dane. :)

A co do artykułu: dobry dla początkujących. :-)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×