Tablice wielowymiarowe i ich użycie
Svizz
01.05.2011
Witam, PAWN'a już trochę kumam, ale w tablicach jestem zielony. Piszę swojego "moda" (oczywiście nie na poważnie, tylko na nim ćwiczę) i chcę aby były 3 klasy do wyboru, gdy wbije się x level twoja klasa "ulepsza się" do następnej, a później po osiągnięciu y levela ma się do wyboru 2 drogi rozwoju, a potem znowu po osiągnięciu z levela postać przechodzi na następną. Wygląda to tak (sorry za painta ):
Chciałbym klasy przechować w tablicy, ale nie wiem w jaki sposób ją skonstruować. Istnieje coś takiego jak tablica trójwymiarowa lub czworowymiarowa(nie wiedziałem jak to napisać )?
Chodzi mi o to, czy mogę zrobić coś takiego:
A może będzie działać coś takiego prostego:
Proszę o dokładne wytłumaczenie tego, przede wszystkim dużo o tablicach wielowymiarowych, bo nie za bardzo to rozumiem Z góry dzięki, daje plusy każdemu, kto pomoże.
Chciałbym klasy przechować w tablicy, ale nie wiem w jaki sposób ją skonstruować. Istnieje coś takiego jak tablica trójwymiarowa lub czworowymiarowa(nie wiedziałem jak to napisać )?
Chodzi mi o to, czy mogę zrobić coś takiego:
new const klasy[2][2][2] klasy[0][0] = "Nic" klasy[1][0] = "Agresywna" klasy[1][1] = "Strzelec" klasy[1][1][0] = "Zabojca" klasy[1][1][1] = "Masakrator" // Klas będzie później więcej, będą 3 grupy klas ;p
A może będzie działać coś takiego prostego:
new const klasy[5] = {
"Nic",
"Agresywna",
"Strzelec",
"Zabojca",
"Masakrator"
}
Proszę o dokładne wytłumaczenie tego, przede wszystkim dużo o tablicach wielowymiarowych, bo nie za bardzo to rozumiem Z góry dzięki, daje plusy każdemu, kto pomoże.
DarkGL
01.05.2011
new const klasy[][] = {
"Nic",
"Agresywna",
"Strzelec",
"Zabojca",
"Masakrator"
}
new tab[64] - jednowymiarowa
new tab[64][64] - dwuwymiarowa
new tab[64[64][64] - trójwymiarowa
new tab[64][64][64][64] - czterowymiarowa
i tak dalej w praktyce nie uzywa się tablic wieksze niz trójwymiarowa
"Nic",
"Agresywna",
"Strzelec",
"Zabojca",
"Masakrator"
}
new tab[64] - jednowymiarowa
new tab[64][64] - dwuwymiarowa
new tab[64[64][64] - trójwymiarowa
new tab[64][64][64][64] - czterowymiarowa
i tak dalej w praktyce nie uzywa się tablic wieksze niz trójwymiarowa
Svizz
01.05.2011
new const klasy[][] = { "Nic", "Agresywna", "Strzelec", "Zabojca", "Masakrator" }
Ta sa dwa wymiary? Dlaczego i po co każdy? Tak jak mówię w tablicach jestem całkiem zielony
DarkGL
01.05.2011
kurs c++ : tablice
Tablice w jezyku C++ - Sciaga.pl
Tablice w C++
Guide C++ :: Tablice
każde pole tabeli to jeden znak gdybys dał tablice jednowymiarowa moglbys wpisac tylko jedna nazwe
wyobraz sobie tabele z x kolumnami i 1 wierszem wpiszesz tam tylko jeden wyraz
tablica dwuwymiarowa to tabela z x kolumnami i x wierszami wiec mozesz wpisac wiecej wyrazow
Tablice w jezyku C++ - Sciaga.pl
Tablice w C++
Guide C++ :: Tablice
każde pole tabeli to jeden znak gdybys dał tablice jednowymiarowa moglbys wpisac tylko jedna nazwe
wyobraz sobie tabele z x kolumnami i 1 wierszem wpiszesz tam tylko jeden wyraz
tablica dwuwymiarowa to tabela z x kolumnami i x wierszami wiec mozesz wpisac wiecej wyrazow
Ortega
01.05.2011
Wyobraź sobie to tak w prosty sposób:
[0]["Nic"]
[1]["Agresywna"]
[2]["Strzelec"]
[3]["Zabojca"]
[4]["Masakrator"]
Zakładając, że chcesz mieć poukładane łańcuchy znaków ( i tak zawsze język programowania zakłada to za programistę ) musisz mieć odpowiednie pola, żeby wyrazić umiejscowienie danych łańcuchów, bądź zmiennych. W tym przypadku pierwszy wymiar robi za wiersze natomiast drugi wymiar, który jest relatywny do pierwszego zawiera dany element. W drugim wymiarze jest zawarta ilość elementów łańcucha bądź w/w wartość zmiennej/łańcucha. Dlatego też możesz operować na tej tablicy jak na zwykłym łańcuchu, a wybierasz ten który jest Ci aktualnie potrzebny, poprzez numer wiersza( 0 - 4 ), zależny od wielkości tablicy.
Ciężko to opisać na chłopski rozum ale może coś się dowiedziałeś.
Ale rzeczywiście lepiej będzie jak poczytasz kursy patrz post DarkGL.
[0]["Nic"]
[1]["Agresywna"]
[2]["Strzelec"]
[3]["Zabojca"]
[4]["Masakrator"]
Zakładając, że chcesz mieć poukładane łańcuchy znaków ( i tak zawsze język programowania zakłada to za programistę ) musisz mieć odpowiednie pola, żeby wyrazić umiejscowienie danych łańcuchów, bądź zmiennych. W tym przypadku pierwszy wymiar robi za wiersze natomiast drugi wymiar, który jest relatywny do pierwszego zawiera dany element. W drugim wymiarze jest zawarta ilość elementów łańcucha bądź w/w wartość zmiennej/łańcucha. Dlatego też możesz operować na tej tablicy jak na zwykłym łańcuchu, a wybierasz ten który jest Ci aktualnie potrzebny, poprzez numer wiersza( 0 - 4 ), zależny od wielkości tablicy.
Ciężko to opisać na chłopski rozum ale może coś się dowiedziałeś.
Ale rzeczywiście lepiej będzie jak poczytasz kursy patrz post DarkGL.
Svizz
01.05.2011
Guide C++ :: Tablice
Ok dzięki, czyli teraz już wiem, o co chodzi Drugi wymiar to tak jakby powiększenie pierwszego wymiaru, a trzeci wymiar to powiększenie drugiego.
Czyli jakby się uparł już przy tablicach wielowymiarowych to takie coś będzie działało?:
Dobrze zrobiłem? Nawet jeśli, to może zwykła tablica z klasami (jak np. z cod moda) będzie lepsza?
Edit:
@ Ortega, byles szybszy
Użytkownik Svizz edytował ten post 01.05.2011 18:22
Ok dzięki, czyli teraz już wiem, o co chodzi Drugi wymiar to tak jakby powiększenie pierwszego wymiaru, a trzeci wymiar to powiększenie drugiego.
Czyli jakby się uparł już przy tablicach wielowymiarowych to takie coś będzie działało?:
new a[4][4][2] a[0] = "Nic" // to jest dozwolone? ustawia "Nic" dla calego wiersza [0] ? a[1][0][0] = "Agresywna" a[1][1][0] = "Wojownik" a[1][2][0] = "Strzelec" a[1][2][1] = "Snajper" a[1][3][0] = "Strzelec Wyborowy" a[1][3][1] = "Snajper Wyborowy" // cd. [2],[3]
Dobrze zrobiłem? Nawet jeśli, to może zwykła tablica z klasami (jak np. z cod moda) będzie lepsza?
Edit:
@ Ortega, byles szybszy
Skoro tak, to taki zapis będzie niepoprawny? :W tym przypadku pierwszy wymiar robi za wiersze
new b[] = { // tylko jeden wymiar "qwe", "rty", "uio", "p[]", "asd", "fgh", "jkl" }
Użytkownik Svizz edytował ten post 01.05.2011 18:22