Vasto_Lorde 5 Napisano 27 Stycznia 2019 Korzystanie z enum 1. Uproszczone wprowadzenie "enum" jest to struktura przez którą możemy zamiast surowych liczb wprowadzać nazwy i dzięki temu jest nam łatwiej z nich korzystać. Najprostszym przykładem będzie tutaj zbiór broni w sourcemodzie, gdzie każda broń ma swój numer i swoją enumową nazwę (zobacz też pełny temat dotyczący spisu broniHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!): enum CSWeaponID { CSWeapon_NONE = 0, CSWeapon_P228, CSWeapon_GLOCK, CSWeapon_SCOUT, CSWeapon_HEGRENADE //(..) }; Powyższy kod jest deklaracją enuma o nazwie CSWeaponID, gdzie jego zawartością są kolejno CSWeapon_NONE, CSWeapon_P228 i tak dalej. Można zauważyć, że do pierwszej nazwy przypisane jest 0, i taką będzie przyjmować wartość CSWeapon_NONE = 0. Następne nazwy mają domyślnie wartość o jedną więcej, czyli jest to ciąg liczb naturalnych (0, 1, 2, 3, 4 i tak dalej). W taki sposób możemy korzystać z funkcji takich jak CS_GetWeaponPriceHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! bez zapamiętywania poszczególnych numerów broni. Przykładowo osobiście nie mam pojęcia który numer w enumie ma broń AWP, ale mogę po prostu posłużyć się tym: CSWeapon_AWP. 2. Numeracja i licznik Jak już zostało wspomniane, domyślnie licznik enuma działa jak ciąg liczb naturalnych. Każda następna wartość jest większa od poprzedniej o jeden. Dlatego w tym przypadku: enum { wartosc1 = 0, wartosc2 = 10, wartosc3, wartosc4 = 30 } wartosc3 będzie równa 11. Dzieje się tak, ponieważ nawet jeśli manualnie "ustawimy" liczenie na co 10, kompilator nie będzie wiedział co mamy na myśli. Musimy użyć następującego sposobu: enum (+=10) { wartosc1 = 0, wartosc2, wartosc3 } W takim wypadku wartosc2 jest równa 10, a wartosc3 20. Możemy tak również zrobić w przypadku mnożenia na przykład: (*=2) Bibliografia https://amxx.pl/topic/1699-troche-o-enum/Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! https://forums.alliedmods.net/showthread.php?t=140103Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! i własne doświadczenie Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
plx211 1 Napisano 28 Stycznia 2019 enum to nie struktura! to jest błąd karygodny ? enum to typ wyliczeniowy https://pl.m.wikipedia.org/wiki/Wyliczeniowy_typ_danychHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
plx211 1 Napisano 29 Stycznia 2019 (edytowane) Enum struct (miło wiedzieć że coś takiego dodali ? ) to nie struktura a lukier składniowy na tablice i enum'a imitujący strukture. Żeby nie było nie czepiam się poradnika, bo dobrze że ktoś napisał, brakuje tutaj jedynie przykładu z przesunięciem bitowym (przydaje się) ? +1 za link ? p.s. Z tego co widzę mogą się pojawić tutaj problemy z tablicami/"stringami" w tym Edytowane 29 Stycznia 2019 przez plx211 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Vasto_Lorde Napisano 30 Stycznia 2019 W razie wolnego czasu uzupełnię o wyżej wymienione zagadnienie ^^ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach