Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Tablice wielowymiarowe i ich użycie


  • Zamknięty Temat jest zamknięty
5 odpowiedzi w tym temacie

#1 Svizz

    Zaawansowany

  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 01.05.2011 16:19

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 :D ):
Dołączona grafika

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ć ;P)?

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.
  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 01.05.2011 16:53

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
  • +
  • -
  • 0

#3 Svizz

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 01.05.2011 17:58

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 :)
  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 01.05.2011 18:04

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
  • +
  • -
  • 0

#5 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 01.05.2011 18:12

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

#6 Svizz

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 01.05.2011 18:19

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?:
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 :)

W tym przypadku pierwszy wymiar robi za wiersze

Skoro tak, to taki zapis będzie niepoprawny? :
new b[] = { // tylko jeden wymiar
 "qwe",
 "rty",
 "uio",
 "p[]",
 "asd",
 "fgh",
 "jkl"
}

Użytkownik Svizz edytował ten post 01.05.2011 18:22

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych