Skocz do zawartości

Zatrzymanie gry


Ice Cube

Rekomendowane odpowiedzi

Cześć

chce w grze zrobić coś w stylu show_message ale po swojemu

chodzi o to by wyświetlic napis i zatrzymać gre na tak długo,aż np. nie nacisne myszką na okienko OK lub nie nacisne esc.

 

roumiem,że będe potrzebować jakiegoś loopa i skoku (programowałem kiedyś w basicu i asm tam takie cos było :P )coś w stylu:

 

1 wyswietl napis

2 jezeli nacisniete esc lub myszka na ok skocz do 4

3 jump do 1

4 dalsza czesc programu

 

próbowałem kombinować coś z while ,ale zawieszała mi sie gra ..

poprosze o jakies sugestie

 

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Cześć, musisz przyblokować wykonywanie się kodu innym obiektom, pętla while Ci nie zadziała ze względu na to, jak działa pętla główna Game Makera. Jak używasz pętli while, to GameMaker nie przetwarza systemowych zdarzeń jak np. kliknięcie myszką czy klawisza.

 

Żeby przyblokować wykonywanie kodu w obiektach, możesz stworzyć np. zmienną globalną jak:

global.is_paused = false;

A potem w każdym z obiektów w Step Event, przed blokiem całego kodu dodaj po prostu taką linijkę:

if (global.is_paused) exit;

Jak chcesz zapałzować grę, to po prostu ustawiasz zmiennej global.is_paused na true, analogicznie odblokowujesz grę po ustawieniu global.is_paused na false.

Odnośnik do komentarza
Udostępnij na innych stronach

Godzinę temu, Konrad-GM napisał:

Cześć, musisz przyblokować wykonywanie się kodu innym obiektom, pętla while Ci nie zadziała ze względu na to, jak działa pętla główna Game Makera. Jak używasz pętli while, to GameMaker nie przetwarza systemowych zdarzeń jak np. kliknięcie myszką czy klawisza.

 

Żeby przyblokować wykonywanie kodu w obiektach, możesz stworzyć np. zmienną globalną jak:


global.is_paused = false;

A potem w każdym z obiektów w Step Event, przed blokiem całego kodu dodaj po prostu taką linijkę:


if (global.is_paused) exit;

Jak chcesz zapałzować grę, to po prostu ustawiasz zmiennej global.is_paused na true, analogicznie odblokowujesz grę po ustawieniu global.is_paused na false.

powaznie nie ma innego sposobu?,mam chyba z 1000 obiektów  ;/ nie idzie jakos całości zatrzymać np.przy pomocy keyboard wait() ?,albo przy pomocy ukrytego show_message,by tylko zatrzymało gre ?

 

 

 

ps. ale klikniecie myszka,wyswietlanie napisu było by własnie w petli,ewentualnie zamiast myszki

zrobiłbym klawiature

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz jeszcze użyć dezaktywacji obiektów, ale trzeba pamiętać, aby obiekt popup-a był aktywny, bo inaczej nie będzie można wrócić do gry ;) W Create Event obiektu obj_popup daj taki kod:

instance_deactivate_all();
instance_activate_object(obj_popup);

Ale pamiętaj też o aktywacji obiektów po zniknięciu komunikatu, np. w Event Destroy obiektu obj_popup daj:

instance_activate_all();

 

Edit:

Godzinę temu, Ice Cube napisał:

ps. ale klikniecie myszka,wyswietlanie napisu było by własnie w petli,ewentualnie zamiast myszki

zrobiłbym klawiature

 

GameMaker nie udostępnia funkcji do przetworzenia zdarzeń systemowych -> pętla w grze po prostu Ci nie zadziała, bo nie będziesz w stanie obsłużyć żadnego kliknięcia, nawet krzyżyka na belce okna. Jeżeli pisałeś kiedykolwiek aplikacje na Windowsa, to jest tam taka funkcja jak GetMessage/PeekMessage, GameMaker nie udostępnia swojego odpowiednika ;) Pętla musiałaby wyglądać tak:


1. obsłuż zdarzenia systemowe

2. jezeli nacisniete esc lub myszka na ok skocz do 6<- tutaj można sprawdzić, czy esc/myszka została naciśnięta bo zdarzenia systemowe zostały zinterpretowane

3. wyswietl napis

4. swap buffers - wyświetl na ekran wygenerowany obraz

5. skocz do 1

6. <kontynuuj program>

 

Ale w GameMakerze jest to niemożliwe. Przynajmniej nie znalazłem funkcji do obsługi systemowych zdarzeń.

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