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

Pytania o enum oraz tablice.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 fexus

    Zaawansowany

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:87
  • Lokalizacja:a
Offline

Napisano 19.09.2012 06:16

Więc tak, po poście Benia w moim ostatnim temacie zacząłem czytać o enum'ach i tablicach, lecz po spędzonym wieczorze na czytaniu dalej nie rozumiem ich działania.. Jeżeli ktoś byłby na tyle uprzejmy i mógłby mi je jakoś wytłumaczyć to bym bardzo prosił.
  • +
  • -
  • 0

#2 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 19.09.2012 07:35

Dzięki enum możesz zastąpić liczby znakami. W sensie, możesz zastąpić cyfrę 1234 wybranym ciągiem znaków, np. Cyferki.
Najprostsze zastosowanie:
enum {
CYFRA0, //0
CYFRA1, //1
CYFRA2, //2
CYFRA3 //3
}

client_print(id,print_chat,"Twoja cyfra to: %d",CYFRA2);


W tym przykładzie zostanie wypisana cyfra 2.
W takim przykładzie każdy ciąg znaków ma kolejną liczbę, CYFRA0 - 0, CYFRA1 - 1, CYFRA3 - 3.
Oczywiście enuma można rozszerzyć aby np. liczenie będzie się zaczynało od innej liczby, lub liczba będzie się zwiększała np. o 3.
Przykład:

enum (+=3) {
CYFRA1, //3
CYFRA2, //6
CYFRA3 //9
}

W tym przypadku ciąg CYFRA1 jest jako liczba 3, kolejne ciągi mają wartości zwiększające się o 3.
Można także używać niestandardowych enumów, czyli dla każdego ciągu znaków przypisać dowolną liczbę, niezależną od poprzedniej. Przykład:

enum {
CYFRA1 = 4,
CYFRA2 = 7,
CYFRA3 = 22
}


Tablic na razie ci nie opiszę bo jestem w szkole i średnio mi się chce ;)
  • +
  • -
  • 2
Zapraszam na http://zapalka.net.pl

#3 fexus

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:87
  • Lokalizacja:a
Offline

Napisano 19.09.2012 15:01

No to czekam na resztę :) Tylko mam takie pytanie. Jak w diablo jest enum {none=0, Mag, Mnich, Paladyn[...] } to jaka jest zależność ze player_class[id] działa z tym enum'em ? Bo trochę tego nie rozumiem
  • +
  • -
  • 0

#4 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 19.09.2012 16:33

A czy tam nie ma przypadkiem przypisania player_class[id]=Mag ? Czyli to poprostu zapisuje numer klasy, w tym wypadku 1. Potem możesz w if'ie sprawdzać player_class[id] == Mag

Czyli zamienisz w tym wypadku mało mówiące Ci numery kolejnych klas na ich "nazwę".
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#5 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 19.09.2012 17:57

Co do diablo, to jest w nim tak jak w moim pierwszym przykładzie. Mianowicie, none=0 bo klasa z id 0 nie istnieje, później są dodawane nazwy klas i im klasa jest dalej tym ma większe id, czyli Mag będzie miał 1, Mnich 2, Paladyn 3. A wykorzystuje się to tak jak byś normalnie wpisywał cyferkę(0 dla braku klasy, 1 dla Maga itd.) Czyli obojętne jest czy napiszesz player_class[id]=1 czy player_class[id]=Mag. Wychodzi na to samo, bo Mag też ma id 1.

A te tablice opiszę ci jutro jeśli nie zapomnę ;P
  • +
  • -
  • 1
Zapraszam na http://zapalka.net.pl

#6 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 19.09.2012 19:37

Tablica jest to zbiór zmiennych tego samego typu, np. zamiast dla każdego gracza robić osobną zmienną

new zmienna1, zmienna2, zmienna3, zmienna4, zmienna5; //itd.


można zebrać te zmienne do "kupy" (wygodniejsze :P)

new tablica[33] //max 32 graczy +1(dla wygody ponieważ tablica indeksowana jest od 0, czyli indeksy tej tablicy
//to 0,1,2,3,4,...,32 i na tym koniec, czyli razem 33 indeksy)
//i możemy sobie przypisać dane
tablica[4] = 5
tablica[id] = 99 //pod id kryje się index gracza, czyli od 1 do 32 i 0 jako serwer


Oczywiście można też zrobić tablice wielowymiarowe, lecz obrazowo Ci tego nie przedstawie (coś ala arkusz w Excel'u, czyli masz wymiar x i y, np. wykres drogi od czasu z fizyki :D)[poszukaj sobie jakiś poradnik o tablicach wielowymiarowych dla c++, tam powinny być obrazki dla lepszego ogaru]
I tu przykład, aby nie robić kilku osobnych zmiennych tego samego typu dla jednego gracza można utworzyć tablicę dwu wymiarową

new tablica[33][4] //chcemy aby dla każdego gracza zapisywało 4 różne wartości

//przypisanie wartości (przykład)
tablica[id][0] = 2
tablica[id][1] = 22
tablica[id][2] = 222
tablica[id][3] = 2222


Oczywiście można połączyć ze sobą enum i tablice (po prostu zamienisz nic nie mówiące Ci liczby na nazwy które skojarzysz)

enum {none=0, Mag, Mnich, Paladyn}
new exp_kazdej_klasy[33][4] // W tutorialu o strukturach jest lepiej opisane połączenie enum+tablic
//(daję tylko najprostszy przykład)
exp_kazdej_klasy[id][none] = 0
exp_kazdej_klasy[id][Mag] = 5424
exp_kazdej_klasy[id][Mnich] = 1564
exp_kazdej_klasy[id][Paladyn] = 348

Użytkownik K!113r edytował ten post 19.09.2012 19:39

  • +
  • -
  • 1

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#7 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 16.10.2012 17:40

Domyślna wartość pierwszego wyrazu enum to 0, a wyrażenie następnika to domyślnie +1.
Te dane, jak również wartości poszczególnych wartości, mogą być modyfikowane.




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

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