SAIL Syntax/pl
From Original War Support Wiki
Contents |
Intro
Składnia SAIL jest oparta na Pascalu, ale w niektórych miejscach się różni. Ten tekst ma za zadanie ułatwić naukę podstaw SAIL'a. Uwaga: Wszystkie konstrukcje językowe (np. Begin, End, For, Case, Function) muszą wyglądać tak jak przedstawione w tym tekscie, ale nazwy funkcji własnych oraz zmiennych mogą być jakiekolwiek.
Starting
Ta konstrukcja może zostać użyta tylko raz. Wyznacza ona miejsce od którego SAIL będzie wykonywany.
Starting Begin Wait(1000); End;
Export
Aby umożliwić wszystkim modułom dostęp do funkcji i zmiennych z wyznaczonego modułu musisz użyć konstrukcji Export (każda 'strona' kodu jest nazywana modułem)
Zmienne:
Export moja_zmienna; Export moja_zmienna1, moja_zmienna2;
Funkcje:
Export Function moja_funkcja; begin // end;
Funkcje i zmienne wyeksportowane są używane tak samo jak zwykłe. Jedyna różnica to to że sąone dostępne dla wszystkich modułów.
Wyznaczanie zmiennych
Jeżeli nie chcesz żeby dana zmienna była globalna, musisz użyć konstrukcji Var aby wyznaczyć zmienną. W SAIL'u zmienne nie muszą mieć określonego typu, mogą być czymkolwiek (np. liczbą, tekstem)
Var moja_zmienna; Var moja_zmienna1, moja_zmienna2;
Function moja_funkcja; Var moja_zmienna; begin // end;
Funkcje
W SAIL'u możesz używać funkcji do różnych zadań. Funkcje mogą przyjmować parametry i zwracać wynik.
Bez parametrów:
Function moja_funkcja; begin // end;
Z parametrami:
Function moja_funkcja(parametr, parametr2); begin // end;
Z wynikiem:
Function moja_funkcja(parametr); begin Result := parametr; end;
zmienna := moja_funkcja(5);
Komentarze
Możesz dodawać swoje komentarze do kodu (choćby po to aby pamiętać gdzie co jest) używając " // ". Ta konstrukcja działa w jednej linijce. Wszystko po " // " jest oznaczane jako komentarz, aż do końca danej linijki.
Wait(10); // Jakis komentarz Wait(10); // Komentarz // Wait(10); <---- nie zostanie wykonane, poniewaz jest oznaczone jako komentarz
If Then
Ta struktura kontrolna pozwala na oznaczenie części kodu jako wykonywalnego, jeżeli wyznaczona kondycja jest spełniona.
If moja_zmienna = 5 then Wait(1);
If moja_zmienna = moja_zmienna2 then Wait(1);
If moja_funkcja("Q1") = 1 then Wait(1);
Można również określić akcję, jeżeli podane wymagania nie są spełnione.
If moja_zmienna = 1 then Wait(1) else Wait(2);
Begin End
Konstrukcje te są m.in. używane do wyznaczania początka i końca funkcji oraz różnych struktur kontrolnych.
if moja_zmienna = 1 then begin Wait(1); Wait(2); end;
Pętla For Do
Pętle For powtarzają kod w nich zawarty wyznaczoną ilość razy.
For x := 1 to 5 do wait(1);
For x := 1 to 5 do begin wait(1); end;
y := 1; j := 5; For x := y to j do begin wait(1); end;
Pętla Repeat Until
Pętle Repeat Until powtarzają zawarty w nich kod dopóki wyznaczony warunek nie zostanie osiągnięty.
x := 0; Repeat x := x + 1; Until x := 5;
Pętla While Do
Pętle While są takie same jak pętle Repeat Until, tyle że ta pętla nie zostanei wykonana ani razu jeżeli warunek nie jest spełniony na początku.
x := 0; While x < 5 do begin x := x + 1; end;
Case
Ta konstrukcja wykonuje kawałki kodu opierając się na wartości wyznaczonej zmiennej.
case Query('Q1') of 1:begin // jakiś kod który zostanie wykonany jeżeli rezultat zapytania zwróci 1 end; 2:begin // end; end;
case twoja_zmienna of 1:begin // jak wyżej end; 2:begin // end; end;
Można też używac stałych
case twoja_zmienna of unit_human:begin // unit_human jest to stała wartość w OW, dzięki temu można łatwo sprawdzić czy dana jednostka to żołnierz end; unit_vehicle:begin // end; end;