Skocz do zawartości

Operacje "globalne"


Rekomendowane odpowiedzi

Są to moje pierwsze pytania dotyczące GMa, jeżeli są proste prosiłbym o przeniesienie ich do innego działu.

 

1. Co to jest global? Obiekt, czy zasięg modułowy? Dlaczego musimy używać operatora wyłuskania (kropka) przy definiowaniu zmiennych globalnych?

2. Czy do zmiennej można przypisać wartość global :P , np. by uprościć sobie kod:

g = global;
g.zmienna = 0;     //definiowanie zmiennej

3. Czy używanie zmiennych globalnych ma wpływ na pamięć? To znaczy czy zmienne lokalne zajmują mniej miejsca w pamięci, niż globalne? Ile zajmują zmienne globalne, a ile lokalne? Czy wielki wpływ na to mają wartości tych zmiennych?

 

Pytania może są dziwne, ale jestem bardzo ciekawy odpowiedzi. Prosiłbym o konkretne i złożone odpowiedzi. Prosiłbym także, aby nie było odpowiedzi typu: "nie wiem" .

 

Pozdrawiam,

Misztrzunio.

Odnośnik do komentarza
Udostępnij na innych stronach

zmienne globalne są po to byś mógł z każdego obiektu odczytać wartość jakiejś zmiennej, tzn. aby odczytać wartość zmiennej nie musi być danego obiektu/instancji w roomie, tak jak to masz przy zmienych lokalnych.

 

Przykład: chcesz by jakąś zmienną mógł odczytać każdy obiekt niezależnie od tego czy właściciel zmiennej istnieje w roomie, wiec zapisujesz zmienna do global.

 

Mam nadzieje że nie namieszałem :P

Odnośnik do komentarza
Udostępnij na innych stronach

Oczywiście. To tak jak byś miał obiekt o nazwie globalne i się odwoływał globalne.zmienna. Wychodzi na to samo - oczywiście pomijamy fakt, że global jest tylko zwykłym kontenerem na zmienne, a nie normalnym obiektem GMowskim.

 

EDIT

Nie wiem czy byś nawet znalazł jakieś wyjątki. =P

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

1. Zasięg. Zmienne globalne są dostępne w czasie całego toku gry, a lokalne należą tylko do danych obiektów.

 

2. Nie wiem czy da się tak, ale skoro Tymon potwierdza... Tak czy siak nie polecam takiego sposobu, ponieważ nie masz wtedy jasnego rozróżnienia co jest zmienną globalną, a co obiektem.

 

3. Pewnie tyle samo. Poza tym spokojna głowa, wystarczy że do gry dasz jakiś duży rysunek i będzie on zajmował zazwyczaj parokrotnie więcej miejsca niż wszystkie zmienne w całej twojej grze. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dobrze. Zadam jeszcze jedno pytanie, aby nie zakładać nowego tematu.

 

1. Czy room to także klasa/obiekt?

2. Czy mogę brać roomy za tablice (nie elementy tablic). Np. mam trzy roomy. I ich nazwy:

1 - r[0]

2 - r[1]

3 - r[2]

I dla przykładu:

liczba = round(random(2));
room_goto(r[liczba]);

Czy kod ten przeniesie mnie do jednego z 3 roomów, czy przejdzie do rooma o nazwie r[liczba] ?

Odnośnik do komentarza
Udostępnij na innych stronach

1. Nie.

2. Tak, ale musisz zrobić ich listę:

    next = room_first;
    roomsCount = 0;
    while( next != -1 )
    {
        rooms[roomsCount] = next;
        roomsCount += 1;
        
        show_message( string( roomsCount ) + ' ' + string( next ) );
        
        next = room_next( next );
    }

W tablicy rooms masz indexy roomów, a w roomsCount ich ilość w tablicy.

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm, a ta lista to mi na co :D ? Bo ja nie rozumiem xD . Zaraz się dokładnie przyjrzę i przeanalizuję ;) .

 

Skoro roomy to nie obiekty, to co? Zmienne?

 

@Edit: Aha, już się bardziej przyjrzałem. W takim razie mogę teraz spokojnie napisać:

room_goto( rooms[round( random( roomsCount ) )] );

Tak?

Odnośnik do komentarza
Udostępnij na innych stronach

No bo GM nie oferuje takiej listy, a o taką Ci chodziło. Prawda?

 

Np. tablice? Zmienne? W końcu to tylko kontenery na obiekty.

Choć kto wie co to jest, mogą to być obiekty, ale nic mi na to nie wskazuje.

 

EDIT

Tak.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Room'y to tylko zmienne trzymające numer identyfikacyjny zasobu nadawany automatycznie przez GM'a. Tak samo jest ze wszystkimi typami zasobów z drzewka (za wyjątkiem obiektów, które są dodatkowo obiektami :)).

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ę...