====== Dla edytujących ====== ===== Gra ===== ==== Wstęp ==== 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". * Tryb edycji aktywujemy rozpoczynając grę na [[:gra:mainscreen|tej podstronie]]. * Tryb gry aktywujemy przechodząc na [[:gra:gra|tą podstronę]]. ==== Wprowadzenie do JavaScript + jQuery ==== === Podstawy === 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. === Zmienne === 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" '' === Funkcje i operacje matematyczne === === Instrukcje warunkowe i pętle === ==== Użycie JavaScriptu w kontekście programowania gry ==== W tym rozdziale pokaże na konkretnych przykładach jak należy wykorzystać JavaScript w tworzeniu MM:tOG. ==== Przydatne podpowiedzi i różne sztuczki ==== ===== Umieszczanie filmów ===== 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: - Na początku musimy przekonwertować nasz film do formatu flv. Najlepiej użyć do tego darmowego narzędzia winFF, można je pobrać ze strony: [[http://winff.org/]]. Program jest dość intuicyjny w użyciu więc myślę, że nie będziecie mieli problemu z jego obsługą. Aby przekonwertować plik dodajemy go do listy. Następnie z menu "Convert to..." wybieramy opcję "Websites". Następnie z menu "Device Present" wybieramy "Flash: Video (flv) for Web use Widescreen", jeżeli nasz film jest panoramiczny(16:9) lub "Flash: Video (flv) for Web use Fullscreen", jeżeli jest w formacie niepanoramicznym(4:3) - Gdy już mamy przygotowany plik musimy wysłać go na serwer. Na początek postępujemy tak samo jak z każdym innym plikiem. Edytujemy więc stroną na której chcielibyśmy umieścić nasz film. Następnie otwieramy okno dodawania plików wybieramy plik z naszego dysku, nadajemy mu nazwę i wysyłamy. - Po wysłaniu pliku, aby umieścić go w wybranym miejscu na stronie dodajemy następujący znacznik: ''%%{{flowplay>:nazwa_pliku.flv}}%%'' ==== Przykłady ==== Następujący kod:\\ ''%%{{flowplay>:ballada_o_czyngis_chanie.flv}}%%''\\ będzie się zachowywał w ten sposób:\\ {{flowplay>:ballada_o_czyngis_chanie.flv}}