Listy obiektów GameMaker

By | 10 kwietnia 2015

Wielokrotnie na tym blogu pisałem o tym, że lubię strukturę danych jaką jest lista, ponieważ jest mega wygodna i okazuj się bardzo szybka. Tak więc również napiszę trochę o tym, że w GameMaker da się korzystać z list, chociaż jest to trochę bardziej skomplikowane niż w C# czy Javie. Jeżeli nie wiesz na czym polegają listy, a chciałbyś się dowiedzieć, to bardzo fajnie wytłumaczone są tutaj.

Warto zacząć od tego jakie funkcje do zarządzania listami są dostępne w GM:

  • ds_list_create()– Tworzy nową listę. Funkcja tworzy wartość Integer (liczba całkowita) jako id (identyfikator) listy w pamięci operacyjnej. Tę wartość wykorzystuje się podczas manipulacji na liście.
  • ds_list_destroy(id)- Usuwa wartości listy z pamięci. Nie zapomnij używać tej funkcji, gdy kończysz pracę z listą.
  • ds_list_clear(id)- Czyści zawartość listy z danych, ale nie usuwa jej z pamięci jak poprzednia.
  • ds_list_copy(id,source)- Kopiowanie zawartości listy do innej listy.
  • ds_list_size(id)- Zwraca ilość elementów zapisanych w liście.
  • ds_list_empty(id)- Zwraca informacje czy lista jest pusta. To samo można sprawdzić za pomocą poprzedniej funkcji, czy wartość jest równa 0.
  • ds_list_add(id,val)- Dodaje wartość na koniec listy.
  • ds_list_insert(id,pos,val)- Dodaje wartość na konkretną pozycję w liście. Pierwszą pozycją jest 0, a ostatnią jest wynik funkcji size pomniejszony o 1.
  • ds_list_replace(id,pos,val)- Zamienia wartość z konkretnej pozycji w liście na nową wartość.
  • ds_list_delete(id,pos)- Usuwa wartość z konkretnej pozycji w liście.
  • ds_list_find_index(id,val)- Odszukuje indeks pozycji szukanej wartości w liście. Jeśli wartość nie zostanie znaleziona, to funkcja zwróci -1.
  • ds_list_find_value(id,pos)- Zwraca wartość zapisaną w podanej pozycji na liście.
  • ds_list_sort(id,ascend)- Sortuje elementy na liście. Kiedy ascend jest true wartości są sortowane rosnąco, jeżeli false, to malejąco.
  • ds_list_shuffle(id)- Tasuje listę, tak aby elementy były rozmieszczone losowo.
  • ds_list_write(id)- Zamienia listę na wartość typu string, dzięki czemu w łatwy sposób można zapisać ją w pliku tekstowym.
  • ds_list_read(id,str)- Odtwarza listę na podstawie wartości typu string. Bardzo pomocne gdy chcemy odtworzyć dane na podstawie tekstu, który został wygenerowany przy pomocy poprzedniej funkcji.

Przykład użycia listy (dodawanie elementów do listy):

list = ds_list_create();
ds_list_add(list, "value 1");
ds_list_add(list, "value 2");
ds_list_add(list, "value 3");
ds_list_add(list, "value 4");
ds_list_add(list, "value 5");
ds_list_add(list, "value 6");
// tutaj możesz dodać inne działania na tej liście
ds_list_destroy(list);

 

Wspomniałem, że można zapisywać listę do pliku tekstowego, ale również ją z niego odczytać, a tutaj jest kod:


//Dla zapisu
var dslist,file;
dslist = ds_list_write([your list id]);
file = file_text_open_write("MyList.dslist");
file_text_write_string(file,dslist);
file_text_close(file);

//Dla odczytu
var dslist,file,str;
dslist = ds_list_create();
file = file_text_open_read("MyList.dslist");
str = file_text_read_string(file);
file_text_close(file);
ds_list_read(dslist,str);

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *