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
1 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 0, ukrytych: 0
Użytkownicy na czacie discord
gnysek (15:16, 9.07.20):
Nowy manual do GMS manual.yoyogames.com
gnysek (11:26, 3.07.20):
Nie, Kinga ma bledszą cerę i mniej zdrową.
nowy_user (10:51, 3.07.20):
No, Kasia teraz już się trochę postarzała, pewnie teraz celujesz w Kingę Dudę Podobny typ urody. Choć jak jej tata dowie się, że swego czasu głosowałeś na Tuska, to zabroni Wam się spotykać
gnysek (0:15, 3.07.20):
Zdecydowanie bardziej Kasia
gnysek (0:14, 3.07.20):
To bylo jakieś zdjecie ze szkoły, w wiecej osób, nic szalonego.
nowy_user (11:16, 2.07.20):
Ja to jestem bardziej zainteresowany tym zdjęciem Gnyska z plakatem Martyny Wojciechowskiej. Zawsze myślałem, że Gnysek podbijał do młodej i niewinnej Kasi Tusk, a to jednak dojrzała i niezależna kobieta zawróciła mu w głowie. Ciekawe...
gnysek (0:44, 2.07.20):
Hm, obawiam się, że kiedyś sporo rzeczy leciało nieodwracalnie do kosza i sporo kontrowersyjnych tematów i postaci zniknęło bez śladu. Dziś sam bym to poczytał.
Korodzik (20:25, 1.07.20):
A gdzie to się działo w ogóle? Na forum, w shoutboxie? Bym se poczytał i się pośmiał
gnysek (11:22, 1.07.20):
No co Ty, wystarczyła weryfikacja IP, GMCLAN akurat zawsze je zapisywał.
nowy_user (10:50, 1.07.20):
Pamiętam to, i moim zdaniem zbyt szybko oskarżyliśmy Elvisa o podszywanie się bez dostatecznych dowodów. Jak na moje to mógł być Mark Overmars we własnej osobie. W tamtym okresie GMClan przeżywał swoje lata świetności i to było całkiem prawdopodobne, że takie osobistości nas odwiedzały.
Korodzik (10:39, 1.07.20):
Mnie ciekawi ta historia o użytkowniku podszywającym się pod Overmarsa...
Korodzik (10:27, 1.07.20):
27
adam014 (6:41, 1.07.20):
27
gnysek (0:26, 1.07.20):
28/59.
Adriann (21:21, 30.06.20):
Trudne cholerstwo Twój wynik: 16/59
nowy_user (21:03, 30.06.20):
Przyznawać się, ile punktów zdobyliście. U mnie 53/59.
nowy_user (21:00, 30.06.20):
Hej chłopaki! Znalazłem coś świetnego! Test ze znajomości Gmclanu. Jeszcze z dawnych czasów: funtest.pl/test/gmclan
Adriann (22:56, 26.06.20):
Ja odpaliłem alee zrobił mi się burdel w projekcie więc uznałem że przetestuję nieco później;p
Threef (17:08, 26.06.20):
Ficzerki są fajne, ale nie do istniejących projektów ani projektów "na godzinkę". Trzeba zacząć coś większego by skorzystać
nowy_user (15:46, 26.06.20):
Każdy się boi tych nowych ficzerów Chłopaki z YoYo zarywali nocki, pracowali ponad siły, żeby nam tylko dogodzić, a teraz nikt z tego nie korzysta...
gnysek (15:06, 26.06.20):
Nadal nic ?
SimianVirus7 (19:19, 22.06.20):
Zainstalowałem ale jeszcze nie sprawdziłem. Jak dla mnie jest dużo nowych opcji i to trzeba usiąść w niedziele na spokojnie
gnysek (10:24, 22.06.20):
Sprawdziliście już 2.3 ?
SimianVirus7 (18:25, 17.06.20):
Szampan wylewa się...
nowy_user (16:06, 9.06.20):
W takim razie zaczynam chłodzić szampana.
gnysek (13:33, 9.06.20):
Publiczna beta GMS 2.3 powinna ruszyć dziś, bo jakiś update kont leci.
gnysek (1:29, 30.05.20):
Gdyby szefem był overmars, to by się nazywało GameMaker 12 teraz
gnysek (1:28, 30.05.20):
Przecież russell ma gówno do powiedzenia. Playtech tym rządzi.
nowy_user (13:28, 29.05.20):
Gdyby szefem dalej był Mark Overmars, to pewnie zgodziłby się, to był idealista. Russel to inna sprawa, ma żonę, dzieci, rachunki do opłacenia. Nie ma szans, że obniży cenę, nawet jakby ludzie zagrozili zniszczeniem kopii Lemingów na jego oczach.
gnysek (1:44, 29.05.20):
Jaka zadyma, stary temat ktoś odświeżył i na gównie się zna.
SimianVirus7 (17:50, 28.05.20):
Ja mam zamiar kupić export na androida, fajnie jakby też jakaś promocja z tego wynikła
nowy_user (17:15, 28.05.20):
Na forum YoYo zadyma, sfrustrowani użytkownicy strajkują i żądają obniżenia cen licencji na konsole. Poszła już nawet petycja w tej sprawie, a niektórzy grożą zainstalowaniem Unity!
SimianVirus7 (21:26, 24.05.20):
GMS 2 Line Counter
SimianVirus7 (21:26, 24.05.20):
Dobra, Dzięki Threef, poszukałem i jest jakaś alternatywa do gms2
SimianVirus7 (21:18, 24.05.20):
szukam i chyba chodzi Ci o GMLPal
Threef (21:16, 24.05.20):
Do GMS1 był zewnętrzny program który podawał statystyki
SimianVirus7 (11:54, 24.05.20):
Można gdzieś zobaczyć podsumowanie ile linijek kodu jest napisane w całym projekcie? Wydaje mi się, że w gms1 gdzieś taka opcja była, a w gms2?
gnysek (13:15, 21.05.20):
Ranma kolejny raz robi na mnie cesję domeny i kolejny raz qpa
nowy_user (15:17, 11.05.20):
Jakieś jeszcze są, ale raczej mniej spektakularne. Żadnych znajomych twarzy nie dostrzegłem. Jakiś mecz w ping ponga w biurze.. czy inne mniej ciekawe rzeczy.
gnysek (11:19, 11.05.20):
Jeszcze jakieś są ?
nowy_user (21:16, 10.05.20):
Nie no, tak serio to Allie wrzucała różne filmiki z YoYo House na Discorda
nowy_user (20:50, 10.05.20):
Mam swoje źródła ;-) Przy okazji, czy pomylił Cię ktoś kiedyś na ulicy z Sebastianem Vettelem? Wyglądacie bardzo podobnie.
gnysek (23:27, 9.05.20):
Wow, skąd to masz
nowy_user (17:32, 8.05.20):
Ok, w takim razie wrzucam : www.youtube.com...h?v=p2X8VJjphY4
gnysek (14:33, 8.05.20):
Na tym jest tylko mieszkanie, nas nie ma: www.youtube.com...h?v=3Fonyl0gQWY
gnysek (14:29, 8.05.20):
Pewnie po pijaku
gnysek (14:28, 8.05.20):
Eeee, dawaj ten film
nowy_user (20:42, 7.05.20):
Filmu nie chcę wrzucać bez Twojej zgody (chociaż uspokajam - nie ma tam gorszących scen ;d tylko kulturalne śniadanko . Zazdroszczę przygody, musiałeś poznać wielu dzisiejszych GM'owych wyjadaczy.
nowy_user (20:40, 7.05.20):
Chyba tak, można się natknąć na jakieś filmiki na YT z yoyo house. Na jednym z nich Ty nawet występujesz w głównej roli co ciekawe na tym samym filmie jest też Nocturne, gwiazda wielkiej rangi na gmc ( dla tych, którzy nie odwiedzają gmc - Nocturne to gość o reputacji mniej więcej takiej, jaką u nas ma Tymon).
gnysek (14:25, 7.05.20):
Mają je jeszcze? Ten w którym ja mieszkałem, należał do Mike'a.
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-2020. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2020 {=|=} fable_inside();

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