Misiek999 Opublikowano 31 Października 2007 Udostępnij Opublikowano 31 Października 2007 Napisałem ten artykuł z myślą o początkujących użytkownikach GM :D STACKS W Game Makerze występuje 6 różnych typów struktur danych. Możemy w nich zapisywać różne wartości, aby w przyszłości je odczytać, w każdej chwili możemy je usunąć, wyczyścić oraz sprawdzić ile akurat mamy przypisanych wartości. W tym artykule napiszę o najprostszym oraz najmniej skomplikowanym typie : o stosach. Czym one w ogóle są ? Tak naprawdę zrozumienie na czym to wszystko polega jest bardzo proste. Załóżmy, że na biurku położyłeś małą karteczkę na której było napisane „1”. Następnie położyłeś na tę kartkę kolejną z napisem „2” a później jeszcze jedną z napisem „3”. W taki sposób utworzyłeś „stos”. Teraz na szczycie tego stosu znajduje się karteczka z napisem „3”, więc będzie również pierwszą karteczką którą zdejmiesz, natomiast ostatnią którą zdejmiesz będzie ta na samym spodzie a więc „1”. Po przeczytaniu tego prostego przykładu, mam nadzieje że już rozumiesz co to są Stacks w GML’u , gdyż działają na tej samej zasadzie. Oczywiście do stosu możemy dodawać o wiele więcej takich „karteczek”. A oto funkcje które przydadzą się nam podczas tworzenia stosów. ds_stack_create() – Dzięki tej funkcji stworzymy nowy stos. Najlepiej zapisać to w taki sposób : stack1 = ds_stack_create(); , gdyż ta funkcja zwraca indeks stosu ( w skrócie id lub ind ) - jego unikalny identyfikator , który będzie potrzebny do innych funkcji. Gdybyśmy napisali tylko ds_stack_create(), musielibyśmy ręcznie pisać indeks, co jest bardzo uciążliwe. Oczywiście możemy tworzyć więcej stosów. Jak łatwo się domyśleć możemy to zapisać tak : stack2 = ds_stack_create(); stack3 = ds_stack_create(); Teraz mamy już gotowy stos. Jak dodać do niego jakąś wartość ? użyjemy do tego funkcji ds_stack_push(id,val) . W pole oznaczone id wpisujemy indeks stosu (na przykład chcesz stos drugi to wpisujesz stack2, albo inną zmienną)W pole val wpisujesz jakąś wartość – może to być na przykład 5. Równie dobrze możesz tam wpisać nazwę zmiennej np. mana. Wtedy jeśli na przykład mana = 256 wtedy na szczyt stosu zostanie dodana wartość 256. Funkcja ds_stack_top(id) , zwróci nam jaka wartość znajduje się na szczycie stosu ( czyli tą, jaką dodaliśmy jako ostatnią ) , natomiast jeśli chcemy aby wartość była zwrócona i usunięta, wtedy używamy funkcji ds_stack_pop(id). Do usunięcia stosu przeznaczona jest funkcja : ds_stack_destroy(id), Do wyczyszczenia stosu ( usuwa z niego wszystkie wartości ale sam stos zostaje ) : ds_stack_clear(id) Fukcja ds_stack_size(id) zwraca wielkość stosu ( wielkość zależy od tego ile jest w nim zapisanych wartości ). jeśli chcemy na przykład aby zmienna AA miała wartość równą wielkości drugiego stosu to wtedy piszemy : AA = ds_stack_size(stack2); . funckja ds_stack_empty(id) sprawdza czy stos jest pusty ( jak łatwo się domyśleć zwraca 0 albo 1 ) . Ćwiczenie : Włącz Game Makera, stwórz nowy stos i dodaj do niego kilka wartości Niech wartość zmiennej AA będzie równa wartości na szczycie stosu Niech w lewym górnym rogu ekranu będzie widoczna wielkość stosu Po naciśnięciu klawisza ENTER niech stos się wyczyści Jeśli stos jest pusty, niech gra się wyłączy. Mam nadzieję, że choć trochę spodobał Ci się ten artykuł i pomógł Ci zrozumieć jak korzystać ze stosów. Proszę o komentarze i pisanie o ewentualnych błędach w artykule. :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 31 Października 2007 Udostępnij Opublikowano 31 Października 2007 Opisałeś to, co najmniej ważne w stosach. Nic o regułach, wyjątkach, 3/5 to maksymalna ocena. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Saus Opublikowano 31 Października 2007 Udostępnij Opublikowano 31 Października 2007 O, nie wiedzialem o tym a ostatnio myslalem jak zrobic zeby cos zwracalo nam ostatnia wartosc xD. Przyda sie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 31 Października 2007 Udostępnij Opublikowano 31 Października 2007 Hmm, bo ja wiem - ze stosow to ja nie kozystam (znam je ale listy przydaja mi sie bardziej), ale dodales obrazki, to pomaga zrozumiec. Niech inni mnie zbesztaja, jak chca, ale dam 4/5 bo gdybym byl poczatkujacym to latwo bym zrozumial. Co prawda, brakuje tu jakiegos przykladu do konkrentnych zastosowan w grach/programach bo to co podales za cwiczenie to troche odstrasza brakiem konkretyzacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 31 Października 2007 Autor Udostępnij Opublikowano 31 Października 2007 to jest moj pierwszy artykul i jak latwo sie domyslec nie jestem w tym dobry :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 31 Października 2007 Udostępnij Opublikowano 31 Października 2007 A mi się art podoba - prosty przejrzysty - są podstawy, ale dobrze wyjaśnione :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się