Nasze strony: gmclan.org gameonly.pl ps-plus.pl gameswithgold.pl n-switch.pl hmt.pl
Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Akademia GMCLANu
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy GML
Treść artykułu
Warunki i pętle w GM
autor: Tymon (7.12.05) | czas czytania: 4 minuty, 59 sekund
W warunkach bądź pętlach potrzebna będzie ci znajomość operatorów porównania takich jak 'A równe B' albo 'A mniejsze od B', pewnie znasz je z lekcji matematyki. Używamy w GMLu takich oto operatorów:
== - jeśli A jest równe B. Dość często użytkownicy GMLa stawiają pojedynczy znak '=', lecz program nie traktuje tego jako przypisania wartości zmiennej tylko jako znak równości, ale jest tak tylko w warunkach i pętlach (w PHP pojedynczy znak '=' zawsze oznacza przypisanie wartości zmiennej).
< - jeśli A jest mniejsze od B.
> - jeśli A jest większe od B.
>= - jeśli A jest większe równe od B. Pamiętaj ze zapis '=>' jest błędem!
<= - jeśli A jest mniejsze równe od B. Pamiętaj ze zapis '=<' jest błędem!
!= - jeśli A nie jest równe B.

Co to warunek? W GML jest to element który musi zostać spełniony aby wykonać jakieś instrukcje. Aby sprawdzić czy warunek jest spełniony (bądź nie) używa się 'if' (Pol. jeżeli), konstrukcja wygląda tak:
gml:if (<warunek>) <instrukcja>; Instrukcja zostanie wykonana jeśli warunek został spełniony. Przy sprawdzaniu warunków potrzebne są operatory porównania.
Razem z 'if' można używać 'else' (Pol. w przeciwnym razie) czyli jeśli warunek nie został spełniony to mają być jakieś inne instrukcje. Konstrukcja wygląda tak:gml:if (<warunek>)
{ <instrukcje_1>; }
else
{ <instrukcje_2>; }
Możesz też łączyć np. dwa warunki za pomocą takich znaków (operatorów logicznych):
&& - oznacza 'and' (jeśli oba warunki są spełnione).
|| - oznacza 'or' (jeśli jeden z warunków jest spełniony).
^^ - oznacza 'xor' (jeśli tylko jeden z warunków jest spełniony).
Teraz mały przykład:
gml://Wykona tylko jeśli wszystkie warunki są spełnione
if (wiek>=0)
&& (zycie<=0)
&& (imie=='Jasio')
{ /* Akcja */ }

//Wykona tylko jeśli jeden z warunków zostanie spełniony
if (wiek==100)
|| (zycie==0)
{ /* Akcja */ }
Wszystko jasne? Jeśli nie to zapraszam do przeczytania artykułu Sadama ;)
Przy każdej grze pojawia się naprawdę dużo tego typu warunków np. czy gracz wcisną klawisz albo czy ma 0 żyć. Wiec znajomość konstrukcji 'if' jest podstawa =] Podam jeszcze kilka przykładów żebyś zobaczył jak to wygląda w praktyce:
gml:if (energia<=0) { /*Akcja*/ } else { /*Inna akcja*/ }
if (imie!='Jasio') { /*Akcja*/ }
if (czas==100) && (zycia>0) { /*Akcja*/ }
Przyjrzyjmy się jeszcze takiemu przykładowi:
gml:if (posiada_przedmiot) { /*Akcja*/ }Zostanie tutaj sprawdzone czy warunek nie ma wartość 'false' (fałsz). Jeszcze jedna ciekawostka, nie musisz używać nawiasów '(' i ')' choć tak wygląda to czytelniej =)
Kolejnym typem warunku jest 'switch' (Pol. przełącznik). Jego konstrukcja wygląda tak:gml:switch (<warunek>)
{
case <wartosc_1>: <instrukcje_1>; ... ; break;
case <wartosc_2>: <instrukcje_2>; ... ; break;
...
default: <instrukcje>;
}
Jego działanie wygląda następująco:
1. Sprawdza <warunek> dla <wartosc_1>.
2. Jeśli jest spełniony to wykonuje <instrukcje_1>.
3. Kończy sprawdzanie kolejnych wartości dla warunku jeśli po instrukcjach znajduje się 'break' w przeciwnym wypadku powtarza kroki 1-3 aż do skończenia się wartości.
4. Jeśli żaden z warunków nie został spełniony to wywołuje instrukcje znajdujące się po 'default' (Pol. domyślne).

Pętla jest w pewnym stopniu warunkiem tylko ze tutaj instrukcje są wykonywane dopóki warunek jest spełniony. W pętlach używamy dwóch poleceń: break i continue. break przerywa wykonywanie pętli a continue zaś ją kontynuuje. Pierwsze z pętli która chce omówić jest pętla 'while' (Pol. dopóki). Jej konstrukcja wygląda tak:gml:while (<warunek>) <instrukcje>;Instrukcje w pętli będą wykonywane do momentu nie spełnienia warunku bądź przerwania pletli.
Kolejna pętla jest 'do until' (Pol. rób dopóki). Jej struktura wygląda tak:gml:do <instrukcje> until (<warunek>)Do tej pętli bardzo podobna jest pętla 'while' lecz jest jedna wielka różnica, w pętli 'while' najpierw sprawdzane są warunki a potem wykonywane instrukcje, zaś w 'do until' najpierw wykonywana instrukcja a potem sprawdzany warunek (wiec instrukcje zostaną przynajmniej 1 raz wykonane).
Najprostsza z pętli jest 'repeat' (Pol. powtarzaj). Powtarza ona po prosu jakieś X razy instrukcje. Jej konstrukcja wygląda tak:gml:repeat(<ilosc powtorzen>) <instrukcje>;Jest jeszcze pętla 'for' (Pol. dla). Jest dość trudna do zrozumienia, sam długi okres czasu nie mogłem dojść jak działa. Jej konstrukcja wygląda następująco:gml:for(<wartosc_poczatkowa>;<warunek>;<instrukcja>;) <inne instrukcje>;W działaniu wygląda ona tak:
1. Tworzy zmienną o wartości <wartosc_poczatkowa>.
2. Sprawdza <warunek>.
3. Wykonuje <instrukcja>.
4. Powtarza kroki 2-4 aż do momentu gdy warunek nie zostanie spełniony.
Teraz mały przykład:gml:for(n=1;n<10;n+=1;) { /*Jakas akcja*/ }Instrukcja będzie wykonywana dopóki zmienna n będzie mniejsza od 10. Ważne są tutaj te średniki wiec pamiętaj żeby zawsze je postawić gdzie trzeba =D

To tyle jak narazie =] Teraz włącz sobie Game Makera i przećwicz wszystko kilka razy ;)
głosów: 11 | ocena: 6.09 oceń zasób | dodał: Tymon
Komentarze
stron: 21

2


av

Matthew (16:04, 2.11.2006)

while = dopóki

av

Maximal (16:40, 2.11.2006)

Łał, geniusz z Ciebie

av

Marmot (21:18, 2.11.2006)

A ja nadal będę wam spamował, żebyście kurcze blade dali ten mój artykuł o gml na gmclan!

av

Patrysław (9:01, 3.11.2006)

Wyślij mi PM żebym nie zapomniał, to dzisiaj po południu dodam.

av

Matthew (16:03, 3.11.2006)

Quote
[Łał, geniusz z Ciebie ]
Dzięki, wiedziałem, że jestem geniushem Byłem po prostu zbyt skromny...

av

Markuz (17:19, 28.06.2010)

Błąd w ostatnim kodzie:
for(n=1;n<10;n+=1 { /*Jakas akcja*/ ) - zamiast nawiasu ) powinna być klamra }

av

Tymon (19:42, 28.06.2010)

Jesteś genialny! Znalazłeś błąd w kodzie sprzed 5 lat.

av

gnysek (20:05, 28.06.2010)

Myślę, że komentarz w Twoim awatarze mówi wszystko na ten temat

av

Markuz (8:03, 29.06.2010)

Heh ludzie nadal korzystają z tych tutków, ale jak chcecie ....

av

Tymon (9:08, 29.06.2010)

Jakbym mógł to sam bym dawno poprawił ten artykuł.

av

Garry692 (11:06, 29.06.2010)

Markuz: jeśli są tak głupi, że nie rozumieją errora "} expected" to ich problem

av

PolskiFrancuz (9:14, 10.04.2012)

W pętli for jest błąd "{ /*Jakas akcja*/ )"
Użyto jako zakończenie, nawiasa zwykłego zamiast klamrowego. Powinno chyba być tak: { /*Jakas akcja*/ }

av

Tymon (11:29, 10.04.2012)

Tak jakby 2 lata temu ktoś już o tym wspominał, wiesz?

av

PolskiFrancuz (16:06, 10.04.2012)

ale chyba nikt niezauważył bo nic się niezmieniło D

av

Tymon (23:39, 10.04.2012)

Przeczytaj to co jest napisane wyżej, będziesz wiedział czemu.

stron: 21

2



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
3 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 2, ukrytych: 0
Nirvan, SimianVirus7
Użytkownicy na czacie discord
Wojo (9:07, 7.12.19):
Ah, ta gmclanska zawisc.
ANtY (13:36, 5.12.19):
sukces by był jakby dawalo tyle kasy, że mógłby full-time to robić
Threef (12:32, 5.12.19):
Ale nikt tego sukcesem nie nazwie.
Threef (12:31, 5.12.19):
Almora na mobilki coś tam ma już fanów i przynosi jakieś zyski ze sprzedarzy w becie
Threef (12:31, 5.12.19):
Wydał? More like wypuścił i pobrało 100 osób na GMClanie
nowy_user (12:18, 5.12.19):
Hm... Czy Borek nie wydał Hidden Swords oraz Alliens attack on colony, ze swoim studiem Gear Studio? Teraz chyba Borek szykuje prawdziwą bombę, widziałem nowy filimik almory na jego FB, gra rozwali system.
Threef (12:00, 5.12.19):
ANtY przecież samo Unity. Borek robi poza branżą gier
Danielus (23:43, 4.12.19):
Python, wcześniej microserwisy, teraz niby jestem Data Engineer. Ostatnio mnie zaskoczyli na LinkedInie bo oferta na python developera do game devu za 15-18k netto + vat na B2B. Zazwyczaj game dev ma dużo niższe stawki niż reszta branży ale może w końcu coś się zacznie zmieniać.
nowy_user (16:50, 2.12.19):
Bez Unity też można osiągnąć sukces w GameDevie - patrz TeeGee, Buziol, Borek, Anty.
gnysek (16:47, 2.12.19):
Jakbym znał Unity, to bym GMCLANu nie prowadził
Chell (11:29, 2.12.19):
Danielus, w czym pracujesz?
Wojo (21:33, 1.12.19):
Powiem, ze ogarnialem projekty w turbopascalu, VBSie i batchu
Wojo (21:32, 1.12.19):
Cos u was slabo. Ja dostawalem 32k miesiecznie w pierwszej pracy, ale to byla gruba przesada wiec sie zwolnilem -.-
Danielus (18:43, 1.12.19):
Senior jest trochę zdewaluowanym pojęciem teraz. Spodziewam się być seniorem w rok albo dwa. Co mogę polecić to na początku jak najczęściej zmienać pracę. Żadna firma nie chce dawać podwyżek, więc lepiej skakać i zdobywać doświadczenie w różnych miejscach. Mi zajęło osiągnięcie tego 4 lata i 4 różne firmy(po roku w każdej) a zaczynałem od 4k brutto jako junior jeszcze na studiach.
nowy_user (18:38, 1.12.19):
O kurde, to za 5 lat jak dojdziesz do seniora to będziesz miał ok 25k miesięcznie. Brawo, to są niezłe zarobk, można związać koniec z końcemi! Szkoda, że za znajomość GMLa tyle nie płacą.
Danielus (18:34, 1.12.19):
6k netto to grosze - Tyle dostanie każdy mid w najgorszych korpo. Ja rok temu magisterkę skończyłem i teraz mam 13.5k na rękę na umowę o pracę. Nie w GameDevie oczywiście :d
Chell (22:15, 30.11.19):
przedwczoraj dostalem na linkedinie propozycje z 8-12k net na b2b ;p
Sutikku (17:53, 29.11.19):
6k jako junior, zapomniałem dodać
nowy_user (17:20, 29.11.19):
To są dobre wieści. Ostatnio zastanawiałem się nad bootcampem programistycznym, skoro więc w tej branży są takie pieniądze to chyba nie ma się co dłużej zastanawiać
ANtY (16:46, 29.11.19):
>ciezko mi wueirzyć w 6k dla programisty xDDDDDDDDDDD
Konrad-GM (13:58, 29.11.19):
6k senior? raczej mid w korpo, senior to spokojnie wyciągnie 10-15k
nowy_user (10:52, 29.11.19):
Ciężko mi w to uwierzyć, ale kto wie, może dla jakiegoś super seniora.
Sutikku (9:32, 29.11.19):
niektórzy mają większe ambicje, ostatnio widziałem ofertę dla programisty c++ za 6k netto
Wojo (17:48, 28.11.19):
baca tutaj wstawiał screeny jak jego aplikacje są topowe bodajże w wietnamie
nowy_user (15:07, 28.11.19):
W gamedevie też można bardzo dobrze zarobić. W zeszłym tygodniu widziałem ofertę dla Unity developera za 5k netto.
Chell (14:32, 28.11.19):
jak lubi zarabiac kasiore to pewnie nie ;p
Konrad-GM (13:09, 28.11.19):
Może @gnysek wcale nie szuka pracy w gd
nowy_user (23:08, 26.11.19):
Wygląda bardzo fajnie. Swoją drogą to dziwię się że z Twoim skillem nie możesz znaleźć pracy w Gamedevie.
gnysek (14:47, 25.11.19):
www.yoyogames.c...xions-promotion (tutaj tylko dodatkowe etapy)
gnysek (14:41, 25.11.19):
Usunęli je
nowy_user (14:36, 20.11.19):
Wow, nie wiedziałem, nigdy się tym nie chwaliłeś. Myślałem, że w YoYo zajmowałeś się rozwijaniem społeczności użytkowników. Podesłałbyś linki do screenów lub opisów tych gier?
gnysek (11:30, 20.11.19):
Teraz czekam na te zmiany w YYC i wracam do zabawy, w tym czasie inny projekt robię, stronę.
gnysek (11:29, 20.11.19):
Ja na trzech grach dla YYG zarobiłem jakoś 40 tysięcy.
ANtY (16:01, 19.11.19):
nowy_user (19:57, 18.11.19):
Chociaż szkoda, że nie wyszła pełna wersja Przygód Glutexa (wyszło tylko demo), bo możliwe, że wtedy Anaconda wskoczyłby do TOP3.
nowy_user (19:40, 18.11.19):
@Chell, nie uwzględniłem ANtY'ego, bo on tworzy w Unity. No chyba, że Warlocks było robione w GMie, to wtedy wskoczy on na 3 miejsce - o ile mi wiadomo, Warlocksi sprzedali się lepiej niż Borkowa Almora.
Wojo (19:20, 18.11.19):
Był tu gość co swoją grę sprzedawał chyba przez chomikuj
Chell (18:20, 18.11.19):
biedny ANtY
nowy_user (17:38, 18.11.19):
Chyba nie, ale jakby wziął się za sprzedaż Tripa lub Spartana to pewnie byłby na 4 miejscu Gmclanowiczów, co zarobili na grach ( oczywiście za TeeGee, Buziolem i Borkiem).
gnysek (9:43, 18.11.19):
Propa jakąś grę sprzedawał ?
SimianVirus7 (18:51, 17.11.19):
jak dostałem maila, że -50% na export android to jechałem do domu z myślą, że go zakupię, ale okazało się, że to wciąż 400zł
nowy_user (16:11, 17.11.19):
Jakbym był TeeGee, Borkiem lub Propaganją, to bym tyle zapłacił, bo wiedziałbym, że ta kasa zwróci mi się z nawiązką 1 dzień po premierze gry... a tak to trochę drogo.
SimianVirus7 (9:26, 17.11.19):
toż to grosze
Konrad-GM (20:43, 16.11.19):
3,628,800zł za GMa po promocji?
SimianVirus7 (17:29, 15.11.19):
i wszyscy są szczęśliwi
Wojo (9:39, 15.11.19):
Zamiast 20 tysięcy zapłacisz 10!
SimianVirus7 (18:48, 14.11.19):
Yoyo dało -50% na android, html itp dla posiadaczy gm:s2
SimianVirus7 (18:47, 14.11.19):
YoYo dało -50% na android, html itp dla posiadaczy gm:s2
Ankieta
» Ile powinny trwać tury Ligi 24?
24h
48h
54h (piątek od 18:00)
7 dni
inna długość (podałem w komentarzu ankiety)

GMCLAN to serwis o programie Game Maker i nie tylko.
[ Polityka prywatności ]
Copyright © 2002-2019. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2019 {=|=} fable_inside();

[ Czas generowania strony: 0.02437 sekund ] [ Liczba zapytań MySQL: 13 ]