Skocz do zawartości

ds_map czy array 2d?


blondi

Rekomendowane odpowiedzi

Robiąc ostatnio swojego rpg'a chciałem zrobić questloga który by sprawdzał czy mam maksymalną liczbe questów (5 maks) i ewentualnie dodawał,jak jak sie mieści w tej liczbie,i ze względu ze chce zrobić też poboczne nie wiem jak i co bedzie łatwiej czy ds_map czy tablice,prosze o pomoc i wskazówki:)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

wszelkie struktury danych ds_ są wygodniejsze, bo możesz policzyć ile ich jest i dokonywać na nich pewnych operacji, jak przeszukiwanie itd. po kluczu, bez bawienia się w pętle for - tablice w GM są bardzo słabe, więc ja bym skorzystał ze struktur tutaj - tym bardziej, ze np. w mapę ( ds_map...) możesz wsadzić kolejną mapę i w ten sposób popakować różne informacje :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

pamiętaj, że każda mapa ma swoje ID, zatem tworząc ją, dostaniesz to ID:

 

GML
global.mapa;

global.mapa= ds_map_create();

 

potem możesz wsadzić ją w inną mapę

 

GML
var inna;

inna = ds_map_create();

 

ds_map_add(global.mapa,'wsadzona_mapa',inna);

 

a potem, żeby odzyskać id tej wsadzonej mapy:

 

GML
var id_innej;

id_innej = ds_map_find_value(global.mapa,'wsadzona_mapa');

 

var costam;

costam = ds_map_find_value(id_innej,'jakas_wartosc....');

...

 

W ten sposób można pakować mapy w mapy, pamiętając jedynie ID tej głównej (warto przypisać do zmiennej globalnej, chyba, że jakiś obiekt istnieje całą grę właściwą).

 

Jak może się to przydać?

Ot, mamy np. w grze kilku bohaterów, każdy z nich ma quest. Tworzymy więc mapę, gdzie klucze to imiona, a wartości to ID ich map z questami. Mapa z questem jako klucze ma np. 'nazwa','czy_wykonany','nagroda'. Wtedy rozmawiając z postacią szukamy w global.mapa wartości 'imie_postaci' (ds_map_find_value), pobieramy jej wartość do zmiennej (nawet tymczasowej), i mamy dostęp do informacji o queście (mamy ID struktury, jej referencję). Oczywiście w mape można wsadzić listę, kolejkę itd. i na odwrót. Warto pamiętać, że o ile zmienna var znika, to sama struktura nie zniknie, ponieważ zmienna var ma tylko jej identyfikator (referencję), a struktura znika dopiero przy zamykaniu gry lub poprzed ds_xxxx_destroy();

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...