MM:tOG możemy używać w dwóch trybach - edycji i gry. W trybie edycji, zmienne są nieaktywne, walki nie są prowadzone i nie możemy handlować. Ten tryb gry służy do tworzenia nowych podstron. W trybie gry nie mamy możliwości edycji, jednak w tym trybie gra staje się „aktywna”.
Cała gra powstaje w oparciu o HTML i JavaScript z biblioteką jQuery. JavaScript jest potężnym, a zarazem łatwym w użyciu językiem programowania, dającym nam bardzo duże możliwości. Począwszy od prostych kalkulacji i operacji na zmiennych, aż po zaawansowany rendering 3D. Biblioteka jQuery ułatwia nam tworzenie animacji i programowanie zdarzeń(wkrótce się wyjaśni, co to oznacza). Koniec więc z marudzeniem typu: „szkoda, że w naszej grze nie można tego zrobić”. Technologie, które zdecydowałem się użyć, absolutnie nas nie ograniczają i pozwalają nam osiągnąć właściwie każdy rezultat(oczywiście wszystko jest kwestią czasu (};D-). Ale przechodząc do konkretów… JavaScript jest językiem C pochodnym, co oznacza, że jego składnia bazuje na tym właśnie języku. Może to być nowością dla osób, które znają jednie Pascala, ale myślę, że JavaScript, jest na tyle łatwa i intuicyjna, że nikt nie powinien mieć problemów z opanowaniem jej podstaw. Wszystkie instrukcje(przypisanie zmiennych, wywoływanie funkcji) w JS muszą kończyć się znakiem „;”. JavaScript umożliwia umieszczanie komentarzy w kodzie. Służy do tego podwójny ukośnik(//). Jeżeli przeglądarka natknie się na ten symbol reszta linii zostanie potraktowana jako komentarz i pominięta.
JavaScript jest językiem(w przeciwieństwie do Pscala) dynamicznie typowanym. Oznacza to, że każda zmienna może przyjmować dowolne wartość. Spróbujmy posłużyć się przykładem. Wyobraźmy sobie zmienną a, zawierającą liczbę np. 5. W językach statycznie typowanych zmiennej tej nie moglibyśmy przypisać innej wartości niż jakiejś innej liczby. W JavaScripcie jednak nic nie stoi na przeszkodzie, aby stała się łańcuchem znaków.
Drugą cechą zmiennych w JS jest brak potrzeby, tak jak to było w Pascalu definiować zmiennych na początku. Zmienne możemy definiować w dowolnym miejscu programu.
Trzecią istotną cechą zmiennych w JS są zasięgi. Ta kwestie też została bardzo uproszczona. Na razie możemy przyjąć, że wszystkie zmienne są globalne tzn. niezależnie gdzie zdefiniowałeś zmienną, jest ona widoczna w każdym innym miejscu programu. Co prawda jest to nie do końca prawda, ale na razie możemy przyjąć, że tak jest.
To może tyle teorii. Zobaczmy teraz, jak to wygląda w praktyce. Oto przykładowa definicja zmiennej:
var test = 5;
Definicja zaczyna się od słowa kluczowego var. Nie jest ono konieczne, ale lepiej je zawrzeć, ma to związek z zasięgiem zmiennych, nad którym jak powiedziałem na razie nie będę się rozwodzić. Następnie następuje nazwa zmiennej. Nazwa nie może się zaczynać od cyfry. Nazwa może zawierać litery, cyfry oraz znaki „_”. Wielkość znaków w nazwie ma znaczenie. Nazwa nie może być żadnym ze słów kluczowych JS: abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, false, final, finally, float, for, function, goto, if, implements, import, in, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, transient, true, try, var, void, while, with.
Po nazwie zmiennej następuje operator przypisania jest to „=”, a nie jak w Pascalu, „:=”. Warto o tym pamiętać. Początkowi programiści często mylą operator przypisania: „=”, z operatorem porównania: „==”. Następnie określamy wartość zmiennej. Zmienne mogą przyjmować cztery typy wartości: liczby, ciągi znaków, tablice, tablice klucz - wartość. W poprzednim przykładzie zmiennej test, właśnie przypisaliśmy liczbę 5, jednak niekoniecznie musi to być liczba całkowita, aby przypisać do zmiennej liczbę zmiennoprzecinkową:
var test2 = 5.54;
Kolejnym typem wartości jest ciąg znaków. Zawartość ciągu może się zawierać pomiędzy znakami apostrofów: ' ', lub cudzysłowów „”. Możemy używać tych oznaczeń zamiennie. Oto przykłady:
var test3 = „Testowa zmienna. Mogę tu bez problemu używać znaków apostrofu ' ', ale nie mogę użyć tu znaku cudzysłowu.”;
var test3 = 'Testowa zmienna. Mogę tu bez problemu używać znaków cudzysłowu „”, ale nie mogę użyć tu znaku apostrofu.';
Trzecim typem wartości jest tablica. Tablice w JS są najogólniej rzecz biorąc zbiorem wartości dowolnych typów. Oto przykład:
var tablica = [12, „Ciąg znaków”, ['Test', 22], 4];
Kolejnym elementom tablicy są przypisywane kolejne liczby całkowite, poczynając od 0. Aby odczytać konkretny element tablicy używamy następującej składni:
tablica[nr elementu];
Przykłady:
var tablica = ['a', 54, 7, [„t”, 5.5]];
tablica[0];//a
tablica[2];//7
tablica[3][0];//t
Aby usunąć element z tablicy używamy słowa kluczowego delete. Jednak należy pamiętać, że JS nie zmienia zmienia numeracji w tablicy(jak usuniemy z tablicy pierwszy element drugi element nie stanie się pierwszym itd.), a usuniętą wartość zastępuje słowem kluczowym undefined(w JS undefined znaczy że dany element nie istnieje. Taką samą wartość zwróci nam program jeżeli zapytamy go o wartość niezdefiniowanej zmiennej) np.
var tablica = ['a', 54, 7, [„t”, 5.5]];
delete tablica[0];//Teraz tablica wygląda następująco: [undefined ,54, 7, [„t”, 5.5]]
Ostatnim typem wartości jest tablica klucz - wartość. Jest ona bardzo zbliżona do tablicy, z tym że wartościom nie są przypisywane kolejno liczby, ale nazwy zdefiniowane przez użytkownika. Przykładowa definicja tablicy klucz - wartość:
var obiekt = {test: „aaaa”, test2:12, test3:[„a”, 12]}
Zasady nazywania kluczy są identyczne jak zasady nazywania zmiennych. Wartość z tablicy klucz - wartość możemy odczytać na dwa sposoby:
var obiekt = {test: „aaaa”, test2:12, test3:[„a”, 12]}
obiekt.test//„aaaa”
obiekt[„test2”]//12
obiekt.test3[0]//„a”
W tym rozdziale pokaże na konkretnych przykładach jak należy wykorzystać JavaScript w tworzeniu MM:tOG.
Ostatnio w Mongolopedii pojawiła się opcja dołączania filmów. Aby dołączyć film na stronę należy postąpić według następujących kroków:
{{flowplay>:nazwa_pliku.flv}}
Następujący kod:
{{flowplay>:ballada_o_czyngis_chanie.flv}}
będzie się zachowywał w ten sposób:
:ballada_o_czyngis_chanie.flv