Table Of Contents

Previous topic

1. Szybkie wprowadzenie do Świata Reeborg-a

Next topic

3. Przedmioty, obrazy tła, itp.

This Page

Ostrzeżenie

Dokument jest ciągle modyfikowany. Część może byc nieprzetłumaczona z francuskiego, który jest podstawowy.

2. Podstawowe instrukcje

Informacja dla zaawansowanych użytkowników

Świat Reeborg-a używa składni Python-a 3 (dzięki skryptowi Brython) i używa stylu nazewnictwa zalecanego w PEP 8 (z niewielkimi wyjątkami).

Informacja dla początkujących użytkowników

Mamy problem! Jako zupełny nowicjusz, jeśli nic nie wiesz o Python-ie (i programowaniu), możesz opis używany do zilustrowania jak działają podstawowe instrukcje uznać za zagmatwany. Mimo wszystko do wyjaśnienia składni Python-a potrzebujesz wiedzieć co podstawowe polecenia robią...

Moja rada: przeczytaj wszystko raz nie tracąc wiele czasu jeśli coś jest skomplikowane. Później przeczytaj dwa rozdziały, pierwszy o obiektach, które można znaleźć w świecie Reeborg-a a następnie krótkie wprowadzenie do Python-a, gdzie możesz znaleźć wiele przykładów. Później wróć tu ... i wszystko będzie prostsze.

W tym podrozdziale przyjżymy się prostym światom i opiszemy polecenia które Reeborg może wykonać. Polecenia są funkcjami Python-a. W Python funkcja o nazwie my_function jest wykonywana gdy jest “wywołana” przez umieszczenie jej nazwy zakończonej nawiasami: my_function().

W całym podrozdziale, za wyjątkiem jednego przykładu na końcu, korzystamy z funkcji bez argumentów. [Jeśli nie wiesz czym jest argument funkcji, to wyjaśnimy to dalej.]

Będziemy wykorzystywać dwa typy funkcji:

  1. Proste akcje które Reeborg ma wykonać, np. move().
  2. Otrzymując informacje, które Reeborg ma uzyskać, np. front_is_clear() po wykonaniu funkcji Reeborg będzie wiedział czy przed nim jest przeszkoda.

W przedstawianych przykładach będziemy korzystać z specjalnych słów znanych Python-owi, np. while, True, i not.

2.1. Poruszanie

2.1.1. move()

Świat Reeborg-a jest określony na siatce. Reeborg znajduje się w jednej z kratek. Po otrzymaniu polecenia Reeborg może pozostać w swojej kratce albo przejść na inną. Polecenie move() powoduje, że Reeborg przesuwa się na sąsiednią kratkę.

Before move() After move()
move_e_before move_e_after
move_n_before move_n_after
move_w_before move_w_after
move_s_before move_s_after

Funkcja move() może zakończyć się błędem i zatrzymać wykonywanie programu jeśli na ścieżce Reeborg-a jest przeszkoda.

2.1.2. turn_left()

Funkcja turn_left() obraca Reeborga o 90 stopni w jego lewo (przeciwnie do ruchu wskazówek zegara). Funkcja nie może skończyć się z błędem.

turn_left

2.2. Przenoszenie przedmiotów

Important

W tym podrozdziale zakładamy, że świat w którym jest Reeborg ma tylko jeden przedmiot w danym momencie.

2.2.1. take()

Funkcja take() powoduje, że Reeborg podnosi przedmiot znajdujący się na tej pozycji. Funkcja może zakończyć się błędem jeśli przedmiotu tam nie ma lub znajdują się dwa przedmioty i nie wiadomo który podnieść.

2.2.2. put()

Funkcja put() powoduje, że Reeborg opuszcza przedmiot który posiada. Funkcja może zakończyć się błędem jeśli Reeborg nie niesie przedmiotu lub posiada więcej niż jeden przedmiot i nie wiadomo który zostawić.

take_put

2.3. Odpytywanie Reeborg-a o otoczenie i pozycję

Reeborg ma ograniczone pozstrzeganie jednak wystarczające by pomóc mu wykonać potrzebne zadania.

2.3.1. is_facing_north()

Reeborg jest proszony o odpowiedź czy jest skierowany na północ (w górę ekranu komputera).

is_facing_north

2.3.2. at_goal()

Reeborg jest proszony o odpowiedź, czy jest w końcowym położeniu czyli jakie miał osiągnąć w zadaniu.

at_goal

2.3.3. front_is_clear()

Reeborg jest proszony o odpowiedź, czy przed nim znajduje się przeszkoda (np. ściana). W przykładzie użyta jest także funkcja think() która jest opisana na dole tej strony.

think

2.3.4. right_is_clear()

Reeborg jest proszony o odpowiedź, czy z jego prawej strony jest przeszkoda. W przykładzie Reeborg podąża wzdłóż ściany po jego prawej stronie dopóki nie znajdzie przejścia (i right_is_clear() zwróci True). W tym miejscu każemy zabudować przejście używając funkcji build_wall() opisanej na końcu tej strony.

build_wall

2.3.5. object_here()

Reeborg proszony jest o sprawdzenie czy znajduje się w tym miejscu co najmniej jeden przedmiot.

2.3.6. carries_object()

Reeborg proszony jest o sprawdzenie czy niesie co najmniej jeden przedmiot.

W przykładzie używamy obu funkcji object_here() i carries_object() aby pomóc Reeberg-owi zebrać wszystkie przedmioty i zanieść je w jedno miejsce. Gdy jest więcej niż jeden przedmiot w danej kratce, to pojawiająca się liczba wskazuje ich ilość.

object_here

2.4. Przerywanie

2.4.1. pause()

Funkcja zatrzymuje wykonywanie programu Reeborga w tym miejscu i czeka na kliknięcie przycisku “run” lub “step” by wykonywać program dalej.

2.4.2. done()

Kończy program Reeborga, niekoniecznie wszystkie linie programu muszą być uruchamiane.

W przykładzie użyto funkcji pause() i done() aby przerwać normalne wykonywanie programu.

pause

2.4.3. think()

Jeśli potrzebujesz aby Reeborg dostał trochę czasu między instrukcjami, bo musi “pomyśleć” o co go prosisz. Można wskazać ile czasu ma na “pauzę” przekazując do funkcji think() argument, tak jak tu:

think(500)

Liczba 500 znajdująca się w nawiasach nazywana jest argumentem funkcji. Mniejsza liczba, mniej czasu na przerwę. Wartość 1000 oznacza jedną sekundę.

think

2.5. Zmiana świata

2.5.1. build_wall()

Reeborg może budować ściany, tuż przed miejscem zatrzymania, jak widzieliśmy wcześniej. Funkcja może skończyć się błędem jeśli ściana już znajduje się w tym miejscu.

build_wall

build_wall_fail