pabluuz Opublikowano 3 Września 2009 Udostępnij Opublikowano 3 Września 2009 Witam. Mam kilka pytań nt. pętli instrukcji with. 1. Jeśli w obiekcie gracz zrobię pętle with (sciana) { i=i+1; } to zmieni się zmienna i w każdej instancji obiektu ściana, czy zmienna i w obiekcie gracz? 2. Porównywanie zmiennych. Mam kilka instancji obiektu gracz i kilka instancji obiektu sciana, chce sprawdzic czy zmienna pos_x obiektu gracz jest rowna jakiejs zmiennej pos_x obiektu sciana with (sciana) { if (gracz.pos_x == pos_x ) //tak? jesli tak, to jeszcze problem w tym ze obiekt gracz ma kilka instancji :) { to cos zrob } } mogl by mi ktos to wytlumaczyc? z wiki game_maker_language wyczytalem ze zmienne w pętli instrukcji with są "object independent" i nie za bardzo wiem jak to rozumieć :) Z góry dzięki za pomoc i miłego dnia! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 3 Września 2009 Udostępnij Opublikowano 3 Września 2009 with używasz wtedy, jak chcesz aby kod wykonał się w jakimś innym obiekcie niż w którym został wywołany( jak chcesz konkretną instancje to musisz podać bodaj jej id ). I wtedy wszystko między klamrami będzie dotyczyć tylko tego obiektu czy instancji, którą podałeś w nawiasach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 3 Września 2009 Udostępnij Opublikowano 3 Września 2009 1. SAMO WITH NIE JEST PĘTLĄ! (Chociaż wykonuje takową pętlę podczasz wykonywania kodu w każdym obiekcie) 2. Zmieni się tylko obiekcie ściana, ale nie pisz i=i+1 tylko i+=1 tak jest szybciej ;) Narazie tyle nad drugim pomyśle @ED1: Spóźniełem się :P co do drugiego to jak chcesz, żeby porównywało w with pos_x tego gracza, do którego należy zmienna (nie logicznie to napisałem wiem :P ) to zapisz w jakiejś zmiennej własne id np. swojid=id; i później zamiast gracz.pos_x dajesz swojid.pos_x. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Września 2009 Administratorzy Udostępnij Opublikowano 3 Września 2009 with to nie jest pętla, to jest instrukcja służąca do wykonania kodu przez inny obiekt :) Pętle to: REPEAT, FOR, WHILE, DO/UNTIL WIth działa tak, jakbyś kod wykonał z obiektu podanego w nawiasie, a nie z obiektu w którym ten kod jest. Np. GML with (mama) { x = 12; }//to samo co mama.x = 12;</span> other w tym przypadku posiada ID obiektu który kod WITH wywołał. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pabluuz Opublikowano 3 Września 2009 Autor Udostępnij Opublikowano 3 Września 2009 Dzięki za błyskawiczną pomoc! Ta wiedza mi się przyda :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 3 Września 2009 Udostępnij Opublikowano 3 Września 2009 A ja dodam od siebie, że with w przypadku podania obiektu a nie instancji wykonuje się tyle razy, ile jest aktywnych instancji danego typu w roomie, czyli jeśli masz w roomie 100 obj_cegla, to kod w nim wykona się tyle razy, ile jest tych cegiełek. Przykład zastosowania: GML global.count = 0; //Ustawiam globalna zmienna count na 0 with(obj_cgela) { global.count += 1; //Dodaje do zmiennej 1 - a skoro kod ten wykona się tyle razy, ile jest cegielek w roomie, wiec w praktyce //zmienne ta bedzie tak duza, ile owych cegiel jest. { show_message("Cegielek w roomie jest: "+string(global.count)); Oczywiście, ten od jest czysto abstrakcyjny, aby łatwiej Ci było zrozumieć with - nie korzystaj z niego do liczenia instancji :P Ed: :[ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 3 Września 2009 Udostępnij Opublikowano 3 Września 2009 Co do tego porównywania x_pos to musisz t x_pos gracza zapisać chwilowo do jakiejś zmiennej globalnej po prostu. Wtedy będzie ona widoczna we wszystkich obiektach. I z nią porównujesz. 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ę