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)
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
2 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 1, ukrytych: 0
lenin
Użytkownicy na czacie discord
I am Lord (11:21, 18.06.18):
Predzej na cebulowym a nie normalnym
gnysek (11:18, 18.06.18):
nie no, na 4 chanie masz jeszcze porno i to czasem <18
I am Lord (11:15, 18.06.18):
To forum jest wiekszym rakiem niz 4chan
gnysek (10:55, 18.06.18):
tylko, że wszystkie 100 tematów ma tę samą odpowiedź i żadną inną
gnysek (10:55, 18.06.18):
"użyj opcji szukaj, temat wałkowany 100 razy"
Wojo (15:09, 17.06.18):
chociaz elektroda jest o wiele gorsza
Wojo (15:09, 17.06.18):
tez ma swoje głupie zasady ale nie jest jakiś zwariowany
exp (14:35, 17.06.18):
tylko gmclan jest niezastąpiony
Wojo (13:44, 17.06.18):
youtube lubię ale czasami robi głupie akcje.
Wojo (13:44, 17.06.18):
gg i fora zastąpił facebook oprogramowanie mobilne zastąpił android, video google zastąpił youtube
Wojo (13:42, 17.06.18):
Chociażby ten przykład z lombardem. Większość sklepów na allegro ma numer gg na którym odpowiada na pytania
Wojo (12:40, 17.06.18):
Właśnie vader ma rację
gnysek (12:37, 17.06.18):
GG? Chyba slack.
Wojo (9:19, 17.06.18):
Tzw. MICROsoft
Chell (9:13, 17.06.18):
z tego co pisał wojo chodzi o firmy jakichś zboczuchów
I am vader (2:19, 17.06.18):
GG jest używane w sferze biznesowej do kontaktów wewnątrz i poza firmą.
Wojo (20:53, 16.06.18):
w 2018 uzywam gg ja, kolega i jakieś zboczuchy
exp (20:45, 16.06.18):
ale czasem tu zaglądam, nawet zacząłem robić dwie gierki, ale po czasie stwierdzałem, że jednak słabe to było. ale może niedługo zacznę kolejną, bo mam pomysł
exp (20:44, 16.06.18):
chociaż o gmclan można by powiedzieć to samo xdd
exp (20:44, 16.06.18):
jakoś tak, w sumie nie wiedziałem, że ktoś jeszcze używa gg w 2018
Wojo (20:39, 16.06.18):
w ogole czemu z gg zrezygnowales? Ostatnimi dni siedzę głównie tam i dostępny jest tylko kumpel i lombard
Wojo (20:38, 16.06.18):
też jestem tego zdania exp
exp (20:38, 16.06.18):
do tego po prostu trzeba mieć odpowiednie ciało i stylówę, jak max mówił
exp (20:37, 16.06.18):
tak jak mówiłem, znaczna większość mężczyzn, zwłaszcza w naszym wieku wygląda bardzo źle z długimi włosami i jest traktowania mniej poważnie, o dziewczynach nie wspominając
exp (20:35, 16.06.18):
ja też bardzo, bardzo długo zanosiłem się, żeby ściąć włosy i było kilka podejść. ale koniec końców uważam, że to była bardzo dobra decyzja
Wojo (19:17, 16.06.18):
i nie jest to zmyślona historia
Wojo (19:13, 16.06.18):
moj kolega miał dziewczynę, która była wszędzie i u każdego (jeśli wiesz o co chodzi). Jestem przekonany,że nie była z nim dlatego, że ma dużo forsy tylko dlatego, że to poukładany typek
MaxGaming (18:47, 16.06.18):
Ja jestem tego zdania że np jak ktoś ma takie marudne podejście do życia to ja się nie denerwuje tylko co najwyżej próbuje mu pokazać że można myśleć inaczej
MaxGaming (18:46, 16.06.18):
To kwestia drobnego ogarnięcia np ścięcia włosów ale głównie tego żeby pozbyć się blokady że taki ktoś jak ja nie może mieć dziewczyny
MaxGaming (18:45, 16.06.18):
Bo prawda jest taka że wszyscy którzy chcą mieć dziewczynę a nigdy nie mieli to mają głównie problem w głowie. Na prawdę znam typów którzy wyglądają jak sto nieszczęść a mają dziewczyny wyglądające genialnie.
MaxGaming (18:44, 16.06.18):
Nie no żarty żartami ale serio nie ma co tak gadac
Wojo (18:42, 16.06.18):
Max ale pamiętaj, że trzy razy zero to wciąż zero
MaxGaming (18:35, 16.06.18):
Chell ale ja tam dopisałem że chodzi o osoby które same nie czują się dobrze ze swoich wyglądem ale jakby przez brak pewności siebie oburzają się na chęć pomocy, a nie o takich które chcą mieć w 100% świadomie długie włosy
MaxGaming (18:33, 16.06.18):
Że to była dobra decyzja
MaxGaming (18:33, 16.06.18):
I serio ja się nie dziwię vaderowi. Nie każdy jest przyzwyczajony do zmian, niektórzy się bardzo boją. Ale moja rada jest taka żeby za bardzo nie kombinować, nie podchodzić tak idealistycznie tylko ściąć jej. Jak ci się akurat ta krótka fryzura nie spodoba to do innej krótkiej będziesz nie długo czekał. Na pewno wśród osób które cię od zawsze znają w długich będziesz mógł się na początku czuć nie swojo ale jak zobaczysz że obcy ludzie zupełnie inaczej na Ciebie r
MaxGaming (18:31, 16.06.18):
No to że takie marudzenie potrafi być denerwujące okej, ale ten cala akcja z wyglądem Vadera to nie zbyt była fajna.
MaxGaming (18:29, 16.06.18):
Nie wiem może chłopaki mają jakąś większą spine o której nie wiemy no ale wygląda to źle ze strony gnyska
MaxGaming (18:29, 16.06.18):
Kiedyś jak byłem mniej pewny siebie też tak miałem. Aa bo pomyślą że jestem taki jak ta osoba(tzn jaki?) I wgl. A teraz już dawno takimi rzeczami się nie przejmuje
MaxGaming (18:28, 16.06.18):
I nie gadajcie że jest jakimś alfa. Jak ktoś nie chce się pokazywać z kimś kto wygląda na kuca to świadczy o jego braku pewności siebie. Ja teraz mam gdzieś takie coś. Jak ktoś jest spoko to dlaczego miałbym go oceniać dlatego że wygląda tak a nie inaczej
MaxGaming (18:27, 16.06.18):
No gnysek trochę nie ładnie zagrał. Mówi do niego koleżka jeszcze coś tam że chce się z nim zobaczył a on ciśnie
MaxGaming (18:26, 16.06.18):
Za to obciąłem się na patola kiedyś tak na 1 mm cała głowa
MaxGaming (18:25, 16.06.18):
Ja takich typowi długich nigdy nie miałem
MaxGaming (18:25, 16.06.18):
Ale tak poważnie jako motywację powiem że ścięcie włosów na krótko to przynajmniej 3x większe szanse na zainteresowanie sobą jakiejś kobiety. W sumie mało kto ma długie włosy i ma dziewczynę. Chyba że ma długie ale rzeczywiście jest to część jakiejś fajnej styluweczki
MaxGaming (18:24, 16.06.18):
Pomyślcie o tych laskach które tylko czekają aż zetknięcie włosy xd
exp (18:19, 16.06.18):
no i zakola skurwysyn najgorszy
exp (18:19, 16.06.18):
z kształtem głowy niestety prawda, m.in. przez to zdecydowałem się mieć trochę dłuższe włosy
exp (18:18, 16.06.18):
chociaż np. george carlin wyglądał z tym spoko nawet
Wojo (17:37, 16.06.18):
niektorzy nie potrafia sie pogodzic z tym ze lysieja wiec zapuszczaja wlosy i wyglada to komicznie
Wojo (17:36, 16.06.18):
no i zalezy tez od tego jaka kto ma linie wlosow i czy ma zakola
Wojo (17:36, 16.06.18):
typ fryzury nalezy tez dopasowac do ksztaltu glowy a to moze byc niepocieszjace dla niektorych
Ankieta
» Jakie kursy najchętniej widziałbyś na stronie ?
GM Studio
GM Studio 2
Godot
Construct

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

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