Co jest w tej ogólnej obsłudze ? Klikanie myszką <_< Jest kilka potrzebnych żeczy które trzeba wiedzieć i nic więcej, tak więc tłumacze :
Po uruchomienu GMa pokazuje się nam okno podzielone na trzy części. Po lewej będziesz wstawiać wszystkie "kawałki" gry które dodałeś czyli obiekty (Objects), muzyke, jakieś odgłosy (Sounds), grafike (Sprites i Backgrounds), pokoje (Rooms), ścieżki (Paths), skrypty (Scripts), czcionki (Fonts) i linie czasowe (Time lines). Narazie powinny cię interesować obiekty, pokoje i grafika (chociaż by jakaś symboliczna np. kwadrat, kułekczo). Dodaj teraz jakiś obiekt do gry. Musisz kliknąć na "Add Object" przycisk znajdziesz w menu "Add". Teraz nazwij jakoś obiekt (nie jest to konieczne ale przydało by się zachować porządek). W polu "Name" wpisz jego nazwe. Pamiętaj że nazwa nie powinna zawierać spacji i polskich znaków. Pod polem name masz jeszcze pole "Sprite" tam będziesz ustawiał "obrazek dla obiektu" jednak najpierw go dodaj. Aby dodać grafike kliknij w polu "Sprite" przycisk "New" albo w menu "Add" przycisk "Add Sprite". Podobnie jak obiekt każda sprite (grafika) powinien mieć nazwę. Więc tak samo jak w object wpisz jakąś nazwę dla sprita. Tylko pamiętaj że nie może być spacji i polskich znaków ;) Ok niżej masz "Load Sprite", "Edit Sprite" i "Transparent". Pierwsze służy do załadowania sprita z pliku. "Edit Sprite" służy do edycji sprita w wbudowanym edytorze graficznym GMa. "Transparent" służy do włączenia przezroczystości spita. Pamiętaj że kolor lewego dolnego piksela będzie kolorem przezroczystym. Ok to narysuj jakieś kułeczko :P Teraz wroć do twojego obiektu. Masz go w liście po lewej w zakładce "Object". Kliknij na niego. Teraz w polu "Sprite" wybierz sprita którego narysowałeś. W tym momęcie przyporządkowałeś obiektowi sprita. Ok ale to jeszcze nie koniec. Dodaj nowy pokuj. W menu "Add" kliknij "Add room". Teraz w okienku które ci się pojawiło po lewej. W zakładce "objects" na dole w menu wybierz twój obiekt i kliknij gdzieś na to wielkie szare pole zwane jako "pole gry". Ok, dalej. W zakładce "settings" masz ustawienia rooma (pokoju). Tak jak dla obiektów i spritów jest "Name" jest też "Capition for the room" czyli tytuł rooma który będzie wyświetlany podczas gry. Jest też "Height", "Width" i "Speed". "Height" i "Width" służą do ustawienia wielkości rooma. "Speed" zaś do prędkości jego wyświetlania. Przy powarznych grach można tą wartość zmienić jeśli widać że gra się zacina. Masz jeszcze zakładke "background" czyli tła rooma. Jest tam "Color" który służy do zmiany koloru tła. Jest "Visible when room starts" ta opcja potrzebna jest do wyświetlenia tła jeśli jakieś zostało wybrane. "Foreground image" służy do wyświetlania tła jako pierwsze (kurde nie wiem jak to powiedzieć) a pod tym masz menu do wynboru tła. Jeśli jakieś stworzyłeś to jo zaznacz. Jeśli nie to stwóż klikając w menu "Add" przycisk "Add Background". Edycja tła odbywa się tak samo jak sprita. Ok mówiąc dalej, niżej w zakładce "background" masz "x" i "y" czyli współżędne tła, masz "Stretch" czyli rozciągnięcie tła i jest jeszcze "Hor. Speed" i "Vert. Speed" służące do ustawienia prędkości przesuwania tła. Ok skoro pobawiłeś się już troche roomem to uruchom grę. Robisz to klikając na ten zielony trujkącik który jest u góry. Więc kliknij i rozkoszuj się grą stworzoną w której nic się jeszcze nie dzieje.
OK czas pobawić się skryptem (to najbardziej lubie w GM ^_^) aby to zrobić musisz poznać kilka rzeczy. Ok dodaj lub zaznacz stworzony wcześniej obiekt. Masz tam coś takiego jak "Events" (warunki) i "Actions" (akcje). Wstawiasz nowy warunek klikając "Add event" szukaj go na dole. Teraz w tym okienku co się pojawiło masz kilka podstawowych warunków. "Create" czyli "gdy obiekt został stworzony" służy między innymi to ustalania wartości zmiennych ale o tym to zaraz. Masz jeszcze "Destroy" czyli "gdy obiekt zostanie zniszczony" i "Step". W "Step" masz do wyboru "Step", "Begin Step" i "End Step". Nie będe tłumaczył co oznaczają. Powiem tak "Begin Step" początek kroku, "Step" środek kroku i "End Step" koniec kroku. Zazwyczaj będziesz używał tylko "Step". Akcje umieszczone w "Step", "Begin Step" ... będą wykonywane cały czas. No chyba że będzie jakiś dodatkowy warunek w kodzie. Ok to tyle o "Ewents" teraz przejdźmy do "Actions". Tam dodaje się klocki. Ty użyj narazie klocka o nazwie "Execute a peace of code" (zakładka [te po prawej :P] "control" ). Ok dodałeś ? Jeśli tak to pojawiło się okienko z polem do wpisywania kodu tam będziesz wpisywał kod gry. Masz tam też podstawowe narzędzia do edycji tekstu. Ok zamknij okno klikając na tą zieloną wachę. Zatwierdzisz tym zmiany w kodzie. Możesz też wcisnąć ALT+F4 ale program się zapyta czy zapisać zmiany. Zamknołeś ? Ok, to stówż warunek (Event) "Create". Jeśli go masz to dodaj ten klocek wykonania kodu (lub skryptu jak kto woli). Teraz pokaże jak ustalać wartości początkowe zmiennych. Więc aby to zrobić wystarczy nazwa zmiennej, znak "=", wartość zmiennej i znak ";". Na przykładzie :
// Zmienna liczbowa
nazwa_zmiennej=10;
// Zmienna tekstowa
tekst='Nie za duży ten post ? xD';
Pamiętaj że nazwa zmiennej nie powinna zawierać jakich kolwiek polskich znaków i spacji. Jeśli chcesz zastąpić spacje to używaj "_". Nie zaszkodzi. Przyjeło się też że nazwy zmiennych piszemy małymi literami ale czy duża czy mała to bez różnicy. W tym przykładzie pokazałem ci też dwa rodzaje zmiennych pod względem wartości czyli zmienna tekstowa (zawierająca tekst) i liczbowa (zawierająca "liczby" xD ). Oba typy są potrzebne i dziękuj bogu że to nie C++ gdzie tych rodzajów jest więcej. Do zmiennej możesz też przypisać inną zmienną i wykonać zadanie matematyczne (to się tyczy raczej zmiennych liczbowych). Na przykładzie :
a=10;
b=1;
c=10;
d=2;
e=2;
//Dodawanie zmiennej do innej (wynik działania 11)
b=b+a;
// Odejmowanie zmiennej od innej (wynik działania 0)
c=c-a;
// Mnożenie zmiennej przez inną (wynik 20)
d=d*a;
// Dzielenie zmiennej przez inną (wynik 0.2)
e=e/a;
Ale kochany MO ułatwił torche życie i można zamiast zapisywać b=b+a; można zapisać inaczej :
a=10;
b=1;
c=10;
d=2;
e=2;
//Dodawanie zmiennej do innej (wynik działania 11)
b+=a;
// Odejmowanie zmiennej od innej (wynik działania 0)
c-=a;
// Mnożenie zmiennej przez inną (wynik 20)
d*=a;
// Dzielenie zmiennej przez inną (wynik 0.2)
e/=a;
Wynik ten sam a zaoszczędziłeś jedno naciśnięcie klawisza. Możesz też operować "(" i ")" w działaniach tak samo jak w matematyce. Zasady działań są takie same (No prawie :P). I co do działań matematycznych to w GM są zapisane wartości stąłe takie jak pi. Teraz troche o operacjach na tekście. Od tekstu nie możesz czegoś odiąć ale możesz dodać :
tekst='Wlaz kotek na płotek ';
tekst_cd='pie*****ą go młotek';
wlaz_kotek=tekst+tekst_cd;
// Otrzmamy 'Wlaz kotek na płotek pi******ą go młotek' :]
Możesz też skożystać z tych kochanych udogodnień :
tekst='Wlaz kotek na płotek ';
tekst+='pie*****ą go młotek';
// Otrzmamy 'Wlaz kotek na płotek pi******ą go młotek' xD Sadystycznie;)
Proste, prawda ? Ok teraz przejdźmy do warunków. Pierwszym z nich jest warunek jeśli (if) jak go zapisać ? A to na przykładzie :
if(wiek>18)
{
//Tutaj wklepujesz co się ma stać jeśli zmienna wiek jest większa od 18
}
Jak widzisz tu też jest matematyka (więc jeśli nawet na palcach nie umiesz liczyć to daj sobie spokuj z GM). A teraz mały opis innych funkcji :
Są też takie jak "and" (oraz) i "or" (lub). Na przykładzie :if(a>10 && b<2) // Jeśli a większe od 10 i b mniejsze od 2 to wykonaj akcje
{
a+=1;
b-=1;
}
To był warunek "oraz" (&&) a teraz "lub" :
if(a<49 || b>20) // Jeśli a mniejsze od 49 lub b większe od 20 to wykonaj akcje
{
// Jakaś akcja
}
To jest warunek "lub" (||). Łatwe, prawda ? :] Jeśli operujesz na zmiennej tekstowej to nie możesz wykożystać warunku "jeśli większe/mniejsze" bo nie ma jak. Możesz wykorzystać tylko "=". Tak nawiasem dodam, zapis if(a==b ) nie jest błędem, wręcz odwrotnie. Użycie podwójnego znaku równości jest poprawne. Ponieważ w niektórych językach "=" oznacza "zmień wartość na" a "==" oznacza dopiero znak równości. Jednak w GM jest to obojętne. Więc śmiało możesz śmigać z "=" i "==" ;) Ok kolejny warunek tym razem "while". Służy on do wykonywania akcji jeśli spełniony jest warunek. Jednak wykonuje on te akcje w jednym kroku przez co jest bardzo dobry na np. wyszykanie wolnej pozycji na planszy. Jak powinien wyglądać ? Na przykładzie :
while(a<0)
{
a+=1;
}
Akcja będzie wykonywana dopuki a będzie mniejsze od 0. To tyle o tym warunku. Teraz "do until" czyli rób dopuki. Na przykładzie wygląda to tak :
do
{
a+1;
}
until(a<0)
Podobny do "while" ale różni się tym że wykonuje kod a dopiero sprawdza warunek a while najpierw sprawdza warunek a potem (jeśli warunek spełniony) to wykonuje akcje. Podobne do "while" jest jeszcze "repeat" tylko że ono nie sprawdza warunków. Poprostu wykonuje kod podany ileś tam razy. Na przykładzie :
repeat(10) // Wykonuje 10 razy w kroku
{
a+=1;
}
"repeat" przydaje się gdy chcemy stworzyć kilka obiektów tego samego typu na raz. Teraz troche o kolejnym rodzaju warunku czyli "switch". Po polsku znaczy to przełącznik. "switch" jest podobny do "if" ale ma inną budowe. Na przykładzie :
switch (a)
{
case 1:a+=1;b-=1;break;
case 2:a+=1;break;
}
Jak to działa ? A tak. "switch (a)" powoduje że będzie sprawdzana zmienna a. "case 1" to oznacza to samo co if(a=1). "break" służy do przerwania wykonania kodu jeśli go nie zastosujesz to zostanie sprawdzony kolejny warunek. Ważne jest użycie znaku ":" po "case wartosc". Pokazuje to programowi że ma wykonać akcje będące za tym znakiem. Ok, koniec przełącznika. Teraz "for". Jest to swojego rodzaju pętla. Jej działanie opisze na przykładzie :
for(a=0;a<10;a+=1)
{
b+=a;
}
Już opisuje. W for zapisaliśmy kilka komend i warunek na raz. "a=0" oznacza że na początku wykonywania kodu zmiennej a zostanie przyporządkowane 0. "a<10" oznacza warunek. Kod będzie wykonywany dopuki jest on spełniony. "a+=1" czyli co ma się stać jeśli warunek został spełniony ale nie wpisuj tam innych akcji. Wpisz je tam gdzie "b+=a;". "for" przydaje się do np. tworzenia tablic (o nich zaraz) lub tworzenia obiektów w jakichś odległościach od siebie.
Było troche o tworzeniu zmiennych to teraz o tablicach. Jak wygląda tabela ? A tak :
a[0]=10;
a[1]=20;
a[2]=100;
To jest tabela jednowymiarowa. Dwu wymiarowa wygląda tak :
a[0,0]=10;
a[1,0]=20;
a[1,1]=100;
I po co mi table zapytasz się. Też ich nie potrzebowałem jednak przydały się jak trzeba było zapisać kilka set zmiennych ! Bo nie będe tworzył nowej zmiennej tylko poto żeby potem dwa razy ją sprawdzić. Bo :
a='Magiczna zbroja';
b='Zbroja';
obrona=0;
if(a='Magiczna zbroja')
{
obrona=20;
}
if(b='Zbroja')
{
obrona=10;
}
Taki zapis jest niewygodny a przy 20 zmiennych o różnych nazwach napewno wymiękniesz ! Lepiej zrobić to tak :
przedmiot[0,0]='Magiczna zbroja';
przedmiot[0,1]=20;
przedmiot[1,0]='Zbroja';
przedmiot[1,1]=10;
obrona=0;
moj_przedmiot='Zbroja';
for(a=0;a<1;a+=1;)
{
if(moj_przedmiot=przedmiot[a,0])
{
obrona=przedmiot[a,1];
}
}
I teraz moge zrobić ile chce tych przedmiotów (no i zedytować troche "for") i nie musze męczyć się z milionami zmiennych ;)
To chyba narazie tyle. Jak tego się nauczysz to będzie kolejna lekcja :P (Myśle że warna za to nie dostane) w razie wątpliwości to daj znać na GG lub looknij do helpa xD