Planning Simulator - krótka instrukcja

Uruchamianie

  1. Rozpakuj plik ZIP
  2. Wykonaj jedno z poniższych:
    1. Przejdź do katalogu, który był w archiwum i uruchom plik run.bat. (Jedyna metoda działająca w laboratorium P6)
    2. Znajdź plik GUI-1.0-SNAPSHOT.jar i go uruchom. (O ile masz zainstalowaną Javę >=7)
    3. Uruchom wiersz poleceń, przejdź do katalogu w którym jest plik GUI-1.0-SNAPSHOT.jar i wpisz java -jar GUI-1.0-SNAPSHOT.jar

    Ostatnie dwa kroki są odpowiednie również dla Linuksa, przy czym trzeba mieć zainstalowane biblioteki dla Java3D. W dystrybucjach Debian i Ubuntu odpowiedni pakiet nazywa się libjava3d-jni.

Uruchamianie demo

  1. Przejdź na zakładkę Demos
  2. Wybierz Wieże Hanoi
  3. Kliknij Load demo na pasku narzędzi
  4. Korzystając z pierwszych czterech przycisków na pasku narzędzi obejrzyj symulację. Są to kolejno: restart, wykonaj krok, uruchom animację, przejdź do końca
  5. Na zakładce Plan znajduje się plan działań w takim formacie, w jakim generuje go Fast Downward, a na zakładce JavaScript znajduje się kod JavaScriptowy tłumaczący deklaratywne nazwy działań na konkretne operacje w animacji.

Uruchamianie zapisanego projektu

  1. Na pasku narzędzi kliknij Open (szósty przycisk od lewej)
  2. Wskaż ścieżkę do pliku ZIP zawierającego projekt i zaakceptuj
  3. Kliknij przycisk Restart (pierwszy od lewej)
  4. Przejdź na zakładkę Visualisation

Pisanie własnych kodów JS

Wszystkie obiekty świata muszą być dostępne jako pola zmiennej globalnej objects i utworzone z wykorzystaniem funkcji create, której jako jedyny argument należy podać strukturę z odpowiednimi danymi (patrz zakładka Help). Poniższy kawałek kodu tworzy krążek o nazwie x, współrzędnych (-5,0,0) i rozmiarze (1,3,1):

objects.x=create({
        type:"Disc",
        x:-l,
        y:0,
        z:0,
        size:{x:1, y:3, z:1}
    });

Wszystkim nazwom operatorów/akcji musi odpowiadać funkcja w tablicy haszującej actions. Poniższy kawałek kodu odpowiada trójargumentowemu operatorowi put-to-occupied:

actions["put-to-occupied"]=function(src,dst,stick)
{
    src.x=dst.x;
    src.y=dst.y+0.1;
};