Imagine

Logomocja-Imagine

Logomocja-Imagine to nowe, obiektowe środowisko programistyczne języka Logo. Zostało opracowane dla uczniów, studentów i nauczycieli, którzy chcą tworzyć aplikacje korzystające z szerokiego zakresu aktywności takich jak rysowanie i animacje, prezentacje w Internecie, "tradycyjne" Logo, multimedia, sterowanie głosem, modelowanie, tworzenie mikroświatów Logo, wymiana projektów i pomysłów, tworzenie prezentacji, opracowywanie projektów i mikroświatów dla różnych przedmiotów, praca ze strukturami danych… Imagine łączy w sobie programowanie zorientowane obiektowo z tradycyjnym Logo. Dostarcza hierarchię obiektów i ich działań, przybornik malarski, umożliwia uruchamianie procesów równoległych. Posiada rozwinięty interfejs do pracy w trybie bezpośrednim i wiele innych właściwości. Głównym zadaniem Imagine jest dostarczenie uczniom, studentom, nauczycielom i twórcom programów dydaktycznych silnego środowiska uczenia się i nauczania.

Zobacz także:

Żółwie i geometria żółwia
Wiele żółwi
Postacie
Wybory
Praca z procedurami
Instrukcje sterujące i warunkowe
Okno główne
Projekty, pliki i foldery
Procesy

Bardziej zaawansowane idee i koncepcje:


Struktura obiektowa

Imagine łączy tradycyjną geometrię żółwia z nowoczesnymi zasadami programowania obiektowego. To pozwala nam uczyć się, tworzyć i pracować w języku Logo zgodnie z ludzką naturą, tzn. przy pomocy obiektów, ich działań i relacji zachodzących między nimi. Ludzie często organizują swoją wiedzę tematycznie w grupy o podobnym lub pokrewnym zakresie wiadomości.

Jeśli na ekranie znajdują się dwa obiekty, jeden z nich niech będzie kogutem, a drugi psem, to są to dwie różne jednostki jednej z podstawowych klas, tj. klasy Żółw. Część zachowań jest taka sama dla wszystkich kogutów i psów, tzn. dla wszystkich żółwi, w związku z tym jest określona w definicji klasy Żółw. Inna część zachowań jest specyficzna dla kogutów lub psów i jest określona odpowiednio w definicjach ich klas. W związku z tym pełne zachowanie obiektu jest złożeniem właściwości dziedziczonych z klas bardziej ogólnych, a także pamiętanych bezpośrednio dla danego obiektu.

Zobacz także:

Klasy i jednostki
Hierarchia klas
Pierwotne typy danych
Klasy wizualnych obiektów
Klasy miejsc obiektów
Niewizualne obiekty
Stany obiektu
Zmienne
Relacje między obiektami
Dziedziczenie
Miejsca obiektów
Tworzenie klas
Tworzenie jednostek
Wysyłanie poleceń obiektom
Aktywne obiekty
Procedury rozsyłane do wszystkich aktywnych obiektów
Jak określić adresata
Wyliczanie wartości danych wejściowych
Zachowania
Domyślne akcje


Klasy i jednostki

Świat Imagine składa się z obiektów (np. żółw Jaś, strona Wstęp itp.) oraz poleceń, które wysyłamy obiektom do wykonania. Wszystkie obiekty są sklasyfikowane w hierarchii według pokrewieństwa. Na przykład żółw Jaś jest jednostką klasy Żółw, która jest podklasą klasy Baza (z tej klasy wywodzą się wszystkie obiekty). Będąc żółwiem, Jaś zachowuje się w określony sposób. Kiedy otrzymuje polecenie, np. naprzód 100 lub latajWolno lub pokaż poz, wykonuje określoną akcję. Niektóre akcje, np. polecenie zdefiniowane przez użytkownika latajWolno, są specyficzne dla żółwia Jaś (tzn. może się tak zdarzyć, że żaden inny obiekt oprócz żółwia Jaś nie rozumie tego polecenia). Inne polecenia, np. naprzód 100, są wspólne dla wszystkich żółwi. Jeszcze inne polecenia mogą być wspólne dla kilku klas (są zdefiniowane w klasie nadrzędnej).

Polecenia, które są wysyłane obiektom, zawsze każą wykonać obiektom dane czynności bez znajomości ich "wnętrza". "Wnętrze" obiektów jest określane podczas tworzenia klas.

Każda klasa i jednostka posiada jedną specjalną klasę nazywaną rodzicem. Na przykład klasa Żółw jest rodzicem standardowego żółwia ż1. Jedynym wyjątkiem jest klasa Baza, która nie posiada rodzica. Każdy obiekt posiada unikalną nazwę (unikalną na stronie, na której został utworzony). Odwołując się do obiektu podajemy jego nazwę. W kilku zaawansowanych przypadkach można odwołać się do obiektu za pośrednictwem specjalnego obiektu nazywanego aliasem. Jeśli chcemy odwołać się do obiektu występującego na innej stronie (tzn. stronie, która nie jest aktualnie wyświetlona), możemy napisać s2'ż3, tzn. żółw ż3 na stronie s2.

Oprócz swojego rodzica, obiekty mogą być w relacji z kilkoma dodatkowymi obiektami określającymi:

  • miejsce obiektu - obiekt, na którym dany obiekt jest utworzony. Na przykład, strona jest osadzona w oknie głównym, plansza może być osadzona na stronie lub innej planszy, żółw jest tworzony na stronie lub na planszy itd.
  • wzorzec - obiekt, którego zachowanie można czasowo przypisać innemu obiektowi.

Z powodu tych dodatkowych relacji pomiędzy obiektami została zaimplementowana strategia dziedziczenia nazywana dziedziczeniem wielokrotnym.


Hierarchia klas

Tworzenie bardziej zaawansowanych projektów często wymaga definiowania własnych klas oraz tworzenia jednostek tych klas. Klasa określa właściwości wielu podobnych obiektów (które będą utworzone później) poprzez zdefiniowanie jej zmiennych i procedur.

Wszystkie obiekty środowiska są podzielone na pierwotne typy danych i hierarchię klas z najbardziej ogólną klasą Baza na górze. Ta hierarchia pozwala tworzyć projekty, które wykorzystują istniejące klasy, a także mogą definiować swoje własne klasy. Pełne właściwości obiektu są połączeniem działań klasy rodzica, klasy jego rodzica (czyli dziadka)...itd. aż do klasy Baza, oraz właściwości pamiętanych bezpośrednio w obiekcie. Ten proces połączenia nazywamy dziedziczeniem.

Z klasy Baza wywodzą się cztery kategorie pierwotnych podklas:

  • Obiekty wizualne służące do budowania projektów, na przykład żółwie, przyciski, pola tekstowe i inne obiekty używane do wyświetlania określonych wartości.
  • Miejsca dla innych obiektów są to obiekty, na których są tworzone i funkcjonują inne obiekty, na przykład strony, plansze, paski narzędzi.
    Obydwie powyższe kategorie mogą być widoczne na ekranie. Nigdy nie są usuwane automatycznie, nawet jeśli program ich już nie potrzebuje.
  • Niewizualne obiekty.
  • Pozostałe obiekty, tworzone bezpośrednio z klasy Baza bez żadnych standardowych ustawień i zdarzeń.


Pierwotne typy danych

Rozróżniamy trzy różne pierwotne typy danych: słowa, listy i postacie. Liczby są szczególnym przypadkiem słów. Jeśli pierwotna dana została utworzona i użyta, ale już nie będzie wykorzystywana (tzn. nie jest wartością żadnej zmiennej), jest automatycznie usuwana.


Klasy wizualnych obiektów

Wszystkie obiekty tej kategorii są w ten sam sposób wyświetlane na ekranie. Służą do budowania projektów, na przykład żółwie, przyciski, pola tekstowe i inne obiekty używane do wyświetlania określonych wartości.

Każdy wizualny obiekt funkcjonuje na określonym miejscu (na przykład, na stronie lub planszy). Jest to miejsce, na którym obiekt został utworzony. Obiekt jest połączony ze swoim miejscem relacją nazywaną mojeMiejsce. Każdy wizualny obiekt posiada także swojego rodzica.

Istnieje siedem predefiniowanych klas wizualnych obiektów:

Żółw
PoleTekstowe
Suwak
Przycisk
SpecPrzycisk
Odtwarzacz
WWW

Nie można modyfikować pierwotnych klas wizualnych obiektów (ani innych pierwotnych klas). Można natomiast definiować własne podklasy i jednostki bazujące na wyżej wymienionych klasach pierwotnych.


Klasy miejsc obiektów

Obiekty, na których są tworzone i funkcjonują inne obiekty - najczęściej wizualne obiekty, czasami także inne miejsca. Na przykład, żółw żyje na stronie lub planszy, a plansza funkcjonuje na stronie. Istnieją trzy predefiniowane klasy miejsc obiektów:

Strona
Plansza
PasekNarzędzi

Każde miejsce pamięta zbiór obiektów funkcjonujących na nim. Na przykład, każda strona pamięta listę wszystkich żółwi, plansz, pól tekstowych i innych obiektów funkcjonujących na niej (można wyświetlić listę tych obiektów w oknie pamięci).

Nie można modyfikować pierwotnych klas miejsc obiektów (ani innych pierwotnych klas). Można natomiast definiować własne podklasy i jednostki bazujące na wyżej wymienionych klasach pierwotnych.


Niewizualne obiekty

Obiekty, które nie mają wizualnej reprezentacji, tzn. nigdy nie są widoczne na ekranie. Reprezentują określone rodzaje kanałów komunikacyjnych (obiekty sieciowe) lub kanałów sterujących (obiekt joystick):


Stany obiektu

Każdy obiekt pamięta wiele informacji w swoich zmiennych. Razem reprezentują one stan obiektu. Polecenia wysyłane do obiektu zmieniają jego stan. Na przykład, każdy żółw pamięta swój kierunek, pozycję, wizerunek, kolor pisaka, jego grubość i wzór... oraz kilka innych ustawień. Jeśli ż1 jest aktywnym żółwiem i powiemy ustalKierunek 270 (lub skieruj 270), wyślemy w ten sposób polecenie do żółwia zmieniające jego standardowe ustawienie kierunek na 270 (żółw wykona oczywiście także obrót na ekranie ustawiając się w kierunku na zachód). Jeśli powiemy np 50 pw 45, poprosimy żółwia, żeby przesunął się do przodu i obrócił, oraz zaktualizował kilka swoich zmiennych.

Zobacz także:

Zmienne
Stosowanie zmiennych
Tworzenie zmiennych i przypisywanie im wartości
Klasyfikowanie zmiennych
Wyznaczanie wartości
Zwiększanie i zmniejszanie wartości zmiennych
Usuwanie zmiennych


Zmienne

Formalnie zmienna jest to para: nazwa i wartość. Za pośrednictwem nazwy odwołujemy się do wartości pamiętanej w pamięci. Nazwą może być dowolne niepuste słowo. Rozróżniamy dwie kategorie zmiennych:

  • zmienne autonomiczne
  • zmienne obiektu

Zmienne autonomiczne dzielą się na lokalne i globalne. Wśród zmiennych obiektu wyróżniamy trzy kategorie: standardowe ustawienia, zmienne prywatne i zmienne wspólne.

Zmienne obiektu są pamiętane we wnętrzu obiektu i reprezentują jego stan. Do zmiennych prywatnych dostęp ma tylko dany obiekt, natomiast do zmiennych wspólnych dostęp mają także potomkowie danego obiektu.

Zmienne autonomiczne (tzn. tradycyjne zmienne Logo) są albo lokalne, albo globalne. Dostęp do zmiennych globalnych jest możliwy z poziomu wszystkich procedur, procesów i obiektów. Zmienne globalne są wyświetlane w oknie pamięci przy obiekcie Baza w folderze Zmienne globalne.

Poniższe tabelki określają, jak tworzyć zmienne poszczególnych typów, oraz odczytywać i zmieniać ich wartości.

Zmienne autonomiczne

 | Zmienne lokalne | Zmienne globalne
tworzone | poleceniami niech i lokalna. | poleceniami przypisz i nazwij.
pamiętane | czasowo w procedurze, która działa, lub procesie, który jest uruchomiony. | w sekcji globalne zmienne obiektu Baza.
odczytywane | przez podanie dwukropka i nazwy, na przykład :x, lub funkcją wartość "x | przez podanie dwukropka i nazwy, na przykład :x, lub funkcją wartość "x
dostępne | w procedurze, w której zmienna została utworzona lub z dowolnej procedury wywołanej z tej procedury (bezpośrednio lub pośrednio). W wierszu poleceń, jeśli zmienna została tam utworzona. W dowolnym procesie, jeśli zmienna została utworzona na najwyższym poziomie, na przykład bezKońca [niech "x 65 … ] | gdziekolwiek.
modyfikowane | poleceniami przypisz i nazwij, na przykład przypisz "x :x + 1 | poleceniami przypisz i nazwij, na przykład przypisz "x :x + 1

Zmienne obiektu

 | Standardowe ustawienia | Zmienne prywatne | Zmienne wspólne
tworzone | automatycznie. | poleceniem niechpr adresata. | poleceniem niechws adresata.
odczytywane | bezparametrową funkcją pierwotną, na przykład kierunek, poz, kolpis. | bezparametrową funkcją o takiej samej nazwie jak zmienna (ta funkcja jest tworzona automatycznie) lub funkcją warob "zmienna. | bezparametrową funkcją o takiej samej nazwie jak zmienna (ta funkcja jest tworzona automatycznie) lub funkcją warob "zmienna.
dostępne | u adresata, jeśli posiada daną zmienną, lub w pierwszym aktywnym obiekcie, jeśli dotyczy go wykonywana operacja. | u adresata, jeśli posiada daną zmienną, jeśli nie to następuje próba dziedziczenia jej. | w obiekcie, który posiada daną zmienną oraz u wszystkich jego potomków dziedziczących ją.
modyfikowane | poleceniem pierwotnym typu ustal-na przykład: ustalKierunek, ustalPoz, ustalKolPis. | automatycznie tworzonym poleceniem typu ustal, na przykład: ustalX x + 5, lub ustal "zmienna wartość | automatycznie tworzonym poleceniem typu ustal, na przykład: ustalX x + 5, lub ustal "zmienna wartość

Uwagi:

  • Operacje na zmiennych lokalnych i globalnych są takie same jak w tradycyjnym Logo, na przykład przypisz "x :x+5.
  • Każda zmienna obiektu (którakolwiek ze standardowych ustawień, prywatnych lub wspólnych zmiennych) musi mieć unikalną nazwę w obrębie obiektu, ponieważ dzielą ten sam obszar pamięci.
  • Standardowe ustawienia są zawsze tworzone automatycznie. Reprezentują one standardowe właściwości każdej jednostki, na przykład takie jak kierunek, kolor pisaka, stan wyjściowy dla żółwia. Odczytywać i modyfikować je możemy tylko procedurami pierwotnymi, na przykład ustalKierunek kierunek + 180.
  • Zmienne prywatne należą wyłącznie do danego obiektu. Jeśli tworzymy nowy obiekt jako potomka tego obiektu, to otrzyma on automatycznie kopie wszystkich zmiennych prywatnych swojego rodzica. Żeby utworzyć nową zmienną prywatną obiektu należy użyć polecenia niechpr. Odczytanie wartości umożliwia tworzona automatycznie funkcja o takiej samej nazwie, jak nazwa zmiennej. Do modyfikacji wartości należy użyć automatycznie utworzonego polecenia typu ustal…, na przykład ustalKąt kąt + 15.
  • Zmienne wspólne należą do danego obiektu, dostęp do takiej zmiennej jest możliwy zarówno z danego obiektu, jak i wszystkich jego potomków (chyba, że potomek posiada prywatną lub wspólną zmienną o takiej samej nazwie). Tak więc potomkowie mogą dziedziczyć zmienne wspólne od swoich przodków. Żeby utworzyć nową zmienną wspólną obiektu należy użyć polecenia niechws.
  • Jeśli poleceniem niechpr utworzymy nową zmienną obiektu, jej kopie z taką samą wartością początkową zostaną równocześnie utworzone dla wszystkich potomnych obiektów, za wyjątkiem tych, które już zmienną o takiej nazwie posiadają. Natomiast, gdy zmieniamy wartość zmiennej prywatnej obiektu to wartości zmiennych potomków nie zostaną zmienione.
  • Nazwa prywatnej lub wspólnej zmiennej nie może zaczynać się od znaku @, ponieważ zmienne zaczynające się od tego znaku mają specjalne znaczenie.
  • Jeśli usuniemy zmienną prywatną obiektu (poleceniem usuń), to zostaną także usunięte zmienne prywatne (o tej samej nazwie) potomków.

Zobacz także:

Stany obiektu
Stosowanie zmiennych
Tworzenie zmiennych i przypisywanie im wartości
Klasyfikowanie zmiennych
Wyznaczanie wartości
Zwiększanie i zmniejszanie wartości zmiennych
Usuwanie zmiennych


Stosowanie zmiennych

Zobacz:

Tworzenie zmiennych i przypisywanie im wartości
Klasyfikowanie zmiennych
Wyznaczanie wartości
Zwiększanie i zmniejszanie wartości zmiennych
Usuwanie zmiennych


Tworzenie zmiennych i przypisywanie im wartości

lokalna
nazwij
niech
niechpr
niechws
przypisz; przyp
ustal

Procedura | Typ | Opis
lokalna słowo
lokalna [ słowo1 słowo2 … ]
(lokalna słowo1 … ) 		P Tworzy lokalną zmienną (lub zmienne) o podanej nazwie (nazwach) w procedurze lub procesie. Polecenia lokalna używamy przed określeniem wartości zmiennej poleceniem przypisz lub nazwij. Uwaga: polecenie lokalna nie określa wartości zmiennej.
nazwij cokolwiek słowo | P | Działa tak samo jak przypisz słowo cokolwiek.
niech słowo cokolwiek
(niech ustawienia )
(niech słowo1 cokolwiek1 słowo2 cokolwiek2 … ) 		P Tworzy lokalną zmienną (lub zmienne) o podanej nazwie (nazwach) w procedurze lub procesie i nadaje jej wartość (im wartości). Polecenie niech działa analogicznie jak polecenie przypisz poprzedzone poleceniem lokalna.

W przypadku drugiej wersji polecenia ustawienia są listą postaci [słowo1 cokolwiek1 słowo2 cokolwiek2 … ]. Jeśli cokolwiek1 lub cokolwiek2 ... itd. na tej liście jest poprzedzone dwukropkiem lub ujęte w nawiasy okrągłe, to będzie najpierw obliczona jego wartość i dopiero ta obliczona wartość zostanie przypisana zmiennej.

oto próba
 niech "x 10
 (niech [a (2 + :x) b :x c (:x / 2)])
 (pisz :a :b :c)
już
? próba
12 10 5
niechpr słowo cokolwiek P Tworzy u adresata (lub przedefiniowuje, jeśli już istnieje) zmienną prywatną o nazwie słowo i wartości cokolwiek.

Jeśli tworzymy nową zmienną prywatną adresata, kopie tej zmiennej z taką samą wartością początkową zostaną utworzone u wszystkich jego potomków, za wyjątkiem tych, którzy już posiadają zmienną o tej nazwie. Jeśli modyfikujemy zmienną prywatną, odpowiadające jej zmienne prywatne potomków nie będą modyfikowane.

Ponadto podczas tworzenia nowej zmiennej prywatnej poleceniem niechpr są definiowane automatycznie dwie nowe procedury: funkcja o tej samej nazwie jak zmienna, zwracająca wartość zmiennej, oraz polecenie ustalSłowo zmieniające wartość zmiennej:

? ż5'niechpr "prędkość 10
? proszę "ż5 [ustalPrędkość prędkość + 2]
niechws słowo cokolwiek P Tworzy u adresata (lub przedefiniowuje, jeśli już istnieje) zmienną wspólną o nazwie słowo i wartości cokolwiek.

Zmienna wspólna jest dostępna z poziomu adresata oraz wszystkich jego potomków, za wyjątkiem tych, którzy już posiadają zmienną o tej nazwie.

Ponadto podczas tworzenia nowej zmiennej wspólnej poleceniem niechws są definiowane automatycznie dwie nowe procedury: funkcja o tej samej nazwie jak zmienna, zwracająca wartość zmiennej, oraz polecenie ustalSłowo zmieniające wartość zmiennej.
przypisz słowo cokolwiek

Skrót:

przyp

 P Tworzy (lub modyfikuje, jeśli już istnieje) zmienną globalną o nazwie słowo i wartości cokolwiek. Jeśli istnieje zmienna lokalna o tej nazwie polecenie przypisz modyfikuje jej wartość.

Uwaga: Nie można używać polecenia przypisz do tworzenia i modyfikowania zmiennych obiektu.

Wszystkie zmienne globalne możemy przeglądać (także je tworzyć i modyfikować) w folderze Zmienne globalne okna pamięci.
ustal słowo cokolwiek P Modyfikuje wartość zmiennej obiektu o nazwie słowo (prywatną lub wspólną) - jeśli jest dostępna z poziomu aktualnego adresata.

Uwagi:

  • Można używać polecenia ustal do zmiany wartości zmiennych dziedziczonych przez adresata, tzn. należących do jednego z jego przodków.
  • Zamiast polecenia ustal "prędkość 10 można użyć polecenia ustalPrędkość 10.
  • Jeśli użyjemy polecenia ustal do zmiany wartości nie istniejącej zmiennej, to wystąpi błąd.


Klasyfikowanie zmiennych

Procedura | Typ | Opis
mamZmienną? słowo | F | Wartością jest prawda, jeśli adresat posiada lub dziedziczy zmienną obiektu o nazwie słowo.
mojaZmienna? słowo | F | Wartością jest prawda, jeśli adresat posiada zmienną obiektu o nazwie słowo.
zmienna? słowo | F | Wartością jest prawda, jeśli słowo jest nazwą lokalnej lub globalnej zmiennej.
.zmienne | P | Wypisuje wszystkie zmienne obiektu (ustawienia, prywatne, wspólne i wewnętrzne zmienne) należące do aktualnego adresata. Przy każdej zmiennej wypisywana jest techniczna informacja o jej typie.


Wyznaczanie wartości

Procedura | Typ | Opis
warob słowo | F | Zwraca wartość zmiennej obiektu (prywatnej lub wspólnej o nazwie słowo) adresata. Uwaga: Zamiast funkcji warob "prędkość można użyć bezparametrowej funkcji prędkość.
wartość słowo | F | Zwraca wartość zmiennej lokalnej lub globalnej o nazwie słowo. Funkcję wartość zwykle zastępujemy dwukropkiem :, na przykład wartość "A zwraca tą samą wartość co :A.


Zwiększanie i zmniejszanie wartości zmiennych

Uwaga: Obydwa polecenia zwiększ i zmniejsz dotyczą tylko zmiennych autonomicznych. Żeby powiększyć, na przykład, zmienną prędkość obiektu ż5, należy wykonać polecenie ż5'ustalPrędkość ż5'prędkość + 5, lub proszę "ż5[ustalPrędkość prędkość + 5]. Jeśli ż5 jest jedynym aktywnym żółwiem, możemy po prostu powiedzieć ustalPrędkość prędkość + 5. Zwróćmy uwagę, że w tym poleceniu prędkość jest bezparametrową funkcją zwracającą wartość zmiennej (obiektu ż5) o nazwie prędkość.

Procedura Typ Opis
zmniejsz słowo
(zmniejsz słowo liczba ) 		P Zmniejsza o 1 wartość zmiennej globalnej lub lokalnej o nazwie słowo - jeśli polecenie posiada jeden parametr. W przeciwnym przypadku zmniejsza wartość zmiennej słowo o podaną liczbę. Wartością zmiennej o nazwie słowo musi być liczba.
zwiększ słowo
(zwiększ słowo liczba ) 		P Zwiększa o 1 wartość zmiennej globalnej lub lokalnej o nazwie słowo - jeśli polecenie posiada jeden parametr. W przeciwnym przypadku zwiększa wartość zmiennej słowo o podaną liczbę. Wartością zmiennej o nazwie słowo musi być liczba.


Usuwanie zmiennych

Poniższa tabelka pokazuje, jak usuwać różne rodzaje zmiennych. Dla przejrzystości lewa kolumna zawiera różne przykłady parametrów polecenia usuń (skrót us):

Procedura | Typ | Opis
usuń ":zmienna
usuń [:zmienna1 … ]
         P Usuwa zmienną globalną o nazwie zmienna. Jeśli zmienna globalna o tej nazwie nie istnieje wystąpi błąd:

? usuń ":x
Zmienna x nie ma wartości
Użyj PRZYPISZ lub NAZWIJ, by utworzyć zmienną

Można usunąć równocześnie kilka zmiennych wymienionych na liście.
usuń "zmienna
usuń [zmienna1 … ]
         P Usuwa zmienną obiektu o nazwie zmienna aktualnego adresata, jeśli ją posiada – prywatną lub wspólną. Nie można usunąć dziedziczonych zmiennych ani standardowych ustawień.

Można usunąć równocześnie kilka zmiennych wymienionych na liście.
usuń "wspólne'zmienna | P | Usuwa zmienną wspólną o nazwie zmienna aktualnego adresata, jeśli ją posiada.
usuń "prywatne'zmienna P Usuwa zmienną prywatną o nazwie zmienna aktualnego adresata, jeśli ją posiada.
Uwaga: Zostaną też usunięte wszystkie zmienne prywatne o tej samej nazwie u potomków adresata.
usuń "x
usuń [x … ]
         P Usuwa procedurę zdefiniowaną przez użytkownika o nazwie x aktualnego adresata. Jeśli procedura o tej nazwie nie istnieje, to następuje próba usunięcia zmiennej prywatnej albo wspólnej (o nazwie x) adresata (tylko wtedy, gdy adresat ją posiada, a nie dziedziczy).

Można usunąć równocześnie kilka procedur wymienionych na liście.
? ż1'usuń [przesuń przesuń1 przesuń2]


Relacje między obiektami

Każdy obiekt może mieć kilka relacji (połączeń) z innymi obiektami: jedno z nich jest połączeniem z obiektem rodzica, drugie z miejscem, na którym obiekt został utworzony i funkcjonuje. Ponadto, każdy obiekt może czasowo pożyczyć zachowanie kilku innych obiektów. Połączenia z rodzicem i miejscem są ustanowione na stałe podczas tworzenia obiektu. Pożyczanie zachowań ma charakter tymczasowy i połączenia z obiektami, które udostępniają swoje zachowanie mogą być w dowolnym momencie tworzone i usuwane. Trzy specjalne słowa odnoszą się do ojca, miejsca i obiektów udostępniających swoje zachowanie:

  • obiekt-alias mójRodzic odnosi się do rodzica adresata,
    ? pokaż ż1'mójRodzic'mojaNazwa
    Żółw
  • obiekt-alias mojeMiejsce odnosi się do miejsca adresata,
    ? pokaż ż1'mojeMiejsce'mojaNazwa
    s1
  • wartością funkcji wzorce jest lista obiektów udostępniających swoje zachowanie adresatowi.

Te trzy rodzaje relacji między obiektami tworzą bogatą strukturę klas i jednostek i służą mechanizmowi wielokrotnego dziedziczenia.


Dziedziczenie

Istotą programowania obiektowego jest definiowanie abstrakcyjnych klas obiektów mających podobne właściwości, jak na przykład klasa wszystkich zwierząt. Istnieje wiele dobrze znanych cech charakterystycznych dla wszystkich zwierząt, można je sformułować jako charakterystykę całej klasy. Po dokładniejszej obserwacji zwierząt, zaczniemy dostrzegać różne szczegóły właściwe dla określonych podklas zwierząt, na przykład ssaków lub ptaków albo owadów itd. Każda taka podklasa jest szczególną kategorią zwierząt. Każdy ptak jest jednocześnie zwierzęciem, a więc ma wszystkie cechy zwierząt, a dodatkowo pewne szczególne właściwości. Tak więc w każdym obiektowo zorientowanym systemie buduje się drzewo klas i podklas. Tylko pewne wierzchołki (liście drzewa) reprezentują - jednostki, jak konkretny motyl, który jest owadem, a jednocześnie zwierzęciem. Każdy taki obiekt jest niejako kompozycją zachowań charakterystycznych dla jego klasy i jej nadklasy itd. aż do najogólniejszej klasy Baza, a do tego ma jeszcze różne swoje - charakterystyczne tylko dla niego - właściwości. Takie przejmowanie właściwości od góry nazywamy dziedziczeniem.

Obiekt dziedziczy procedury (metody), zmienne, zdarzenia i dostęp do innych obiektów z różnych źródeł, a więc mamy do czynienia z wielokrotnym dziedziczeniem.


Dziedziczenie zmiennych

Dzięki notacji z dwukropkiem : i cudzysłowem ", na przykład przypisz "prędkość :prędkość + ekstra, można łatwo odróżnić zmienne obiektu od autonomicznych. Jeśli ma być pobrana wartość zmiennej autonomicznej, najpierw są przeszukiwane zmienne lokalne uruchomionego procesu. Jeśli nie zostanie odnaleziona, to są przeglądane zmienne globalne (są one wyświetlane w folderze Zmienne globalne Bazy w oknie pamięci).

Wszystkie zmienne obiektu (tzn. standardowe ustawienia, zmienne prywatne i zmienne wspólne) są poszukiwane w ten sam sposób (nie ma znaczenia rodzaj zmiennej podczas poszukiwania w celu pobrania jej wartości):

  • Najpierw są przeglądane zmienne obiektu adresata.
  • Jeśli nie zostanie tam odnaleziona, będzie poszukiwana wśród wszystkich przodków.

Uwagi:

Podczas dziedziczenia zmiennych nie ma różnicy między zmiennymi prywatnymi i globalnymi. Może łatwo zdarzyć się, na przykład, że prywatna zmienna nie zostanie znaleziona u adresata, ale w obiekcie jego miejsca i wówczas będzie dziedziczona. Może także zdarzyć się, że zmienna prywatna zostanie usunięta u adresata (celowo) i będzie pobrana wartość zmiennej prywatnej rodzica.


Dziedziczenie procedur

Każdy obiekt - zarówno klasa jak i jednostka - pamięta swoje własne procedury. Można je zobaczyć w oknie pamięci lub w dialogu Zmień mnie dla danego obiektu. Poszukiwanie procedury zawsze zaczyna się od przejrzenia procedur obiektu. Jeśli nie zostanie tam odnaleziona to przeglądane są procedury wszystkich przodków obiektu w następującej kolejności:

  1. Obiekty, od których jest przejmowane zachowanie, oraz ich przodkowie.
  2. Rodzic, oraz jego przodkowie.
  3. Miejsce, oraz jego przodkowie.

Zauważmy, że niektóre obiekty (na przykład Baza, ale także i inne) mogłyby być kilka razy przeglądane podczas poszukiwania procedury. Żeby zabezpieczyć się przed taką sytuacją, przygotowywany jest ciąg obiektów do przejrzenia zgodnie z kolejnością wymienioną wyżej. Jeśli jakiś obiekt występuje więcej niż raz, to jego powtórzenia są pomijane.

Jeśli procedura zostanie odnaleziona (poszukiwanie w tym momencie zostaje przerwane) to obiekt dziedziczy procedurę od swojego przodka. W przeciwnym przypadku zostanie wyświetlony błąd Nie wiem jak wykonać NazwaProcedury.


Jak używać słowa "zwykłe"

Kiedy jakaś procedura ma zostać wykonana, to przeglądane są procedury adresata. Jeśli nie zostanie odnaleziona, to następnie poszukiwana jest wśród procedur przodków. Żeby to zrobić, tworzona jest zredukowana lista obiektów do przejrzenia, zobacz dziedziczenie procedur. Czasami (jeśli jesteś zaawansowanym użytkownikiem) można postąpić w następujący sposób:

Niech ż1, ż2 będą żółwiami. Jeśli powiemy ż2'naprzód 100, będą przeglądane procedury żółwia ż2, aby odnaleźć definicję polecenia naprzód. Jeśli jej tam nie ma, to zostanie odnaleziona u przodka ż2 - w klasie Żółw. Teraz wyobraźmy sobie, że chcemy przedefiniować drogę, po której żółw ż2 przesuwa się do przodu i rysuje linię. Powiedzmy, że żółw ż2 ma rysować ciąg punktów (zamiast linii) podczas ruchu do przodu:

? ż2'redaguj "naprzód

oto naprzód :d
 ustalGrubość 8
 powtórz ilorazc :d 10 [opuść pkt podnieś zwykłe'naprzód 10]
 podnieś zwykłe'naprzód reszta :d 10
już

Żółw ż2 pokona długość d stawiając punkty pisakiem o grubości 8. Po postawieniu punktu żółw musi wykonać normalny ruch do przodu, tzn. wykonać polecenie naprzód zdefiniowane w klasie Żółw dla wszystkich "zwykłych" żółwi.

Gdybyśmy napisali …[podnieś pkt opuść naprzód 10], to polecenie naprzód zostałoby zinterpretowane jako wywołanie rekurencyjne. Jeśli chcemy wywołać bardziej ogólną (nie modyfikowaną) wersję polecenia naprzód, należy napisać zwykłe'naprzód.

Jeśli podczas wykonywania procedury P, Logo potrzebuje wywołać P ponownie (wywołanie rekurencyjne), to powtarza przeglądanie zredukowanej listy obiektów poczynając od adresata - pierwszego elementu listy. Jeśli wywołanie jest postaci zwykłe'P, to przeszukiwanie wyżej wymienionej listy rozpoczyna się od obiektu, który występuje po właścicielu aktualnie uruchomionej procedury P (tzn. przeglądane są tylko "wyższe" obiekty).

Polecenie zwykłe'P może być użyte tylko w definicji procedury P.

Inny przykład:

? ż1'redaguj "np
oto np :d
 lw 60 zwykłe'np :d
 pw 120 zwykłe'np :d
 lw 60
już
? powtórz 4 [np 100 lw 90]

Polecenie np dla żółwia ż1 zostało przedefiniowane. Definicja używa polecenia zwykłe'np dziedziczonego od rodzica żółwia ż1.


Dziedziczenie zdarzeń

Każdy obiekt posiada listę (może być pusta) standardowych zdarzeń, takich jak gdyKlik lub gdyCiągniesz, które zna i wie jak na nie reagować. Gdy zajdzie zdarzenie, przeglądana jest lista aktualnego adresata, aby stwierdzić, czy może on reagować na to zdarzenie. Podobnie do dziedziczenia zmiennych lub dziedziczenia procedur, może się zdarzyć, że obiekt nie rozpoznaje danego zdarzenia, ale jest ono rozpoznawane przez jego przodka - obiekt może wtedy reagować na zdarzenie. Do dziedziczenia zdarzeń mają zastosowanie następujące reguły:

  • Kiedy zajdzie zdarzenie przeglądana jest lista Zdarzenia adresata. Jeśli zdarzenie zostanie odnalezione, uruchamiana jest reakcja na nie, a proces przeszukiwania zostaje zakończony.
  • Jeśli zdarzenie nie zostanie odnalezione, to przeszukiwane są listy wszystkich przodków adresata - za wyjątkiem jego miejsca. Tak więc, w przypadku dziedziczenia zdarzeń przeszukiwane są tylko obiekty udostępniające swoje zachowanie, oraz przodkowie. Jak tylko zdarzenie zostanie znalezione proces poszukiwania jest przerywany, a reakcja na zdarzenie uruchomiona.

Uwagi:

Często się zdarza, że definiujemy zdarzenie dla ogólniejszej klasy obiektów, na przykład dla wszystkich żółwi, wtedy każda jednostka klasy (a także każda jednostka wszystkich podklas tej klasy) będzie reagować na nie. Możemy jednak potrzebować podklasę lub jednostkę reagującą w inny sposób, lub wcale nie reagującą. Należy wówczas pokryć to zdarzenie, tzn. zdefiniować ponownie w podklasie lub jednostce z inną reakcją (w szczególności reakcja może być pusta []).


Dziedziczenie dostępu do obiektów

Kiedy tworzymy jednostkę danej klasy, staje się ona częścią całej struktury obiektów połączonych różnymi relacjami. Oprócz połączeń z miejscem i rodzicem, pamięta ona informację o stronie, na której została utworzona (można się do niej odwołać przy pomocy aliasu mojaStrona).

Wszystkie strony i paski narzędzi (ale nie plansze) pamiętają listy obiektów utworzonych i funkcjonujących na nich. Pamiętajmy, że:

  • Jeśli obiekt funkcjonuje na stronie albo pasku narzędzi, jest umieszczony na liście obiektów tego miejsca. Lewa strona rysunku pokazuje sytuację, kiedy plansza i dwa żółwie funkcjonują na stronie s1. Prawa część rysunku przedstawia sytuację bardziej skomplikowaną. Na planszy p1 został utworzony pasek narzędzi pn1, a na nim przycisk prz1.
  • Obiekty funkcjonujące razem na jednej stronie lub jednym pasku narzędzi muszą mieć różne nazwy (także, jeśli funkcjonują na różnych planszach). Różne strony mogą posiadać obiekty o takich samych nazwach. To upraszcza odwoływanie się do obiektów funkcjonujących na tej samej stronie, na przykład możemy bezpośrednio odwołać się do żółwia Jaś, który żyje na planszy p7, a ta została utworzona na planszy p2 (zamiast podawać pełną ścieżkę nazw p2'p7'Jaś). Jeśli chcemy odwołać się do żółwia żyjącego na innej stronie, musimy podać stronę, na przykład stronaKoniec'Romeo powiedzDoWidzenia.
  • Wszystkie strony i paski narzędzi muszą mieć różne nazwy.

Jeśli polecenie wysłane do aktualnego adresata zawiera nazwę innego obiektu (na przykład zróbto średnia ż3'prędkość :wiatr), adresat musi sprawdzić, czy ma dostęp do obiektu ż3. Robi to przeglądając listę obiektów w następujący sposób:

  • Jeśli aktualny adresat nie jest oknem głównym, sprawdza najpierw swoją własną listę obiektów. Jeśli obiekt nie zostanie odnaleziony, przegląda listy obiektów wszystkich swoich przodków.
  • Jeśli aktualny adresat jest oknem głównym, to także najpierw sprawdza swoją własną listę obiektów. Potem, jeśli nie znajdzie, przegląda listę obiektów aktywnej strony. Na końcu, jeśli ciągle poszukiwany obiekt nie zostanie odnaleziony, przeglądana jest lista obiektów Bazy.


Miejsca obiektów

Oprócz powiązania ze swoim rodzicem, każdy wizualny element (np. żółw, pole tekstowe itd.) i plansza posiada powiązanie z obiektem, na którym został utworzony – nazywamy go miejscem obiektu. Jeśli utworzymy nowego żółwia o nazwie Linda na planszy p1, to będzie miał dostęp nie tylko do zmiennych i procedur swojego rodzica - klasy Żółw (oraz wszystkich przodków tej klasy), ale także do zmiennych i procedur swojego miejsca, czyli planszy p1 (oraz jej przodków).

Miejsce obiektu nie może być zmieniane (np. nie można przesunąć żółwia z jednej planszy na inną). Kiedy tworzymy nowy obiekt, aktualny adresat decyduje, co będzie miejscem:

  • Jeśli adresatem jest okno główne i tworzymy stronę, pasek narzędzi lub dowolny obiekt niewizualny, to okno główne stanie się jego miejscem.
  • Jeśli adresatem jest okno główne i tworzymy dowolny wizualny element (np. żółwia, pole tekstowe, przycisk) lub planszę, to aktywna strona będzie miejscem obiektu.
  • Jeśli adresatem jest strona, plansza lub pasek narzędzi, to będzie miejscem nowo tworzonego obiektu.
  • Wizualny element (np. żółw, pole tekstowe, przycisk, suwak) nie może posiadać innych obiektów. Jeśli jest on adresatem, to jego miejsce stanie się miejscem nowo tworzonego obiektu.

Odwoływać się do miejsca obiektu możemy za pośrednictwem aliasu mojeMiejsce. Jeśli chcemy poznać nazwę miejsca żółwia ż3, powinniśmy wykonać poniższe polecenie:

? pisz ż3'mojeMiejsce'mojaNazwa
p1

Inne przykłady:

? nowy "Plansza [nazwa Ogród rozmiar [200 100] poz [-100 50]]
? nowy "Żółw [nazwa Jaś poz [200 0]]
; Miejscem Jasia będzie aktywna strona.
? Ogród'nowy "Żółw [nazwa Małgosia]
; Miejscem Małgosi będzie plansza Ogród.
? Ogród'niechpr "drzewa 5
; Niech w ogrodzie rośnie 5 drzew.
? pisz Małgosia'drzewa
5

Żółw Małgosia ma dostęp do zmiennej drzewa, która została zdefiniowana dla jej miejsca, planszy Ogród. Jeśli powiemy Małgosia'nowy "Żółw [nazwa Paweł], to miejsce Małgosi stanie się miejscem Pawła.


Tworzenie klas

Każda klasa określa działania podobnych obiektów, których jednostki lub podklasy zostaną utworzone później. Klasa definiuje "wnętrze" takich samych typów obiektów, tzn. ich prywatne stany i procedury. Dzięki tym procedurom obiekty mogą reagować na instrukcje wysyłane do nich.

Występuje kilka predefiniowanych pierwotnych klas, które nie mogą być modyfikowane. Można jednak łatwo zdefiniować swoje własne podklasy (lub tworzyć jednostki) bazujące na pierwotnych klasach. Można także, bazując na jednostce, tworzyć nowe jednostki.

Nową klasę tworzymy poleceniem nowaKlasa z trzema danymi:

? nowaKlasa "nazwa_rodzica "nazwa_nowej_klasy lista_ustawień

Pierwszy parametr określa nazwę klasy rodzica, drugi nazwę nowotworzonej klasy, a trzeci niektóre standardowe ustawienia, inne zmienne obiektu, procedury i zdarzenia. Nowa klasa może pochodzić od klasy Baza, dowolnego wizualnego elementu, miejsca, niewizualnego obiektu lub klasy zdefiniowanej przez użytkownika. Nie jest możliwe tworzenie nowych podklas bazujących na pierwotnych typach danych. Standardowe ustawienia nowej klasy będą zawsze identyczne z ustawieniami rodzica, tzn. nie jest możliwe dodanie nowych własnych standardowych ustawień. Opis stanu obiektu może być łatwo rozszerzony poprzez dodanie nowych zmiennych prywatnych lub wspólnych.

Zauważmy, że:

  • Nie można przedefiniować klasy poleceniem nowaKlasa, jeśli klasa o danej nazwie już istnieje i posiada potomków. W takim przypadku należy usunąć klasę poleceniem usuńDoDna i ponownie zdefiniować.
  • Nie można tworzyć klas bazujących na jednostkach. Każda klasa musi pochodzić od innej klasy.

Przykłady:

Rozważmy utworzenie nowej podklasy żółwi o nazwie Pies, tzn. klasy specjalnych żółwi, których wizerunek jest pamiętany w pliku Pies.LGF, a pisak jest podniesiony:

? nowaKlasa "Żółw "Pies [postać Pies pisak pod]

Ustawienie postać w definicji klasy Pies mówi, że każdy nowy żółw tej klasy (tzn. każda utworzona w przyszłości jednostka) będzie miała domyślnie postać z pliku Pies.LGF. Technicznie, klasa Pies otrzyma dwie zmienne prywatne: postać z wartością Pies i pisak z wartością pod. Później, gdy tworzona jest jednostka klasy Pies, bieżące wartości standardowych ustawień postać i pisak zostaną określone na podstawie wartości tych zmiennych.

Można w ten sam sposób zmienić domyślne wartości innych standardowych ustawień, np. takich jak kierunek lub pozycja. W ustawieniach mogą także wystąpić nowe zmienne prywatne, które będą tworzone w każdej jednostce tej klasy, na przykład długośćSkoku:

? nowaKlasa "Żółw "Pies [postać Pies.lgw pisak pod długośćSkoku 30]

Teraz, gdy powiemy nowy "Pies [], zostanie utworzona nowa jednostka klasy Pies. Możemy także poleceniem nowaKlasa "Pies "małyPies [ … ] utworzyć nową podklasę psów. Wszystkie standardowe ustawienia określone w klasie Pies, a nie wymienione w podklasie, zostaną skopiowane.

Uwaga:

Klasa psów została utworzona jako podklasa żółwi. Tak więc, każda jednostka klasy Pies jest też żółwiem z dodanymi informacjami - zmiennymi, procedurami, zmodyfikowanymi ustawieniami. Jeśli coś dotyczy wszystkich żółwi, dotyczy także psów - w rzeczywistości dotyczy wszystkich potomków klasy Żółw.


Tworzenie jednostek

Możemy tworzyć jednostki klas lub jednostki na bazie innych jednostek. Druga możliwość pozwala najpierw utworzyć prototyp (wzór) jednostki i krok po kroku budować jej właściwości – zmienne, procedury i zdarzenia. Potem możemy wykreować kilka jednostek bazujących na tym prototypie: wszystkie dziedziczą procedury i zdarzenia oraz otrzymają swoje własne kopie zmiennych prywatnych.

Polecenie nowy tworzy zarówno jednostki klas jak i jednostki bazujące na innych jednostkach:

? nowy "nazwa_klasy lista_ustawień
? nowy "nazwa_jednostki lista_ustawień

Nie można przedefiniować obiektu (używając jednego z poleceń nowy, nowyObiekt lub nowaKlasa), jeśli obiekt o danej nazwie już istnieje i ma potomków. W takim przypadku należy usunąć obiekt poleceniem usuńDoDna i ponownie zdefiniować.

Przykłady:

(niektóre można wykonać bezpośrednio klikając w przycisk na pasku skrótów, otwierając menu kontekstowe lub w oknie pamięci... itd.):

? nowy "Żółw []
; Nazwa tworzona automatycznie - ż1
? nowy "Plansza [rozmiar [150 200] poz [-200 150]]
; Nazwa tworzona automatycznie - p1
? p1'nowy "Żółw [nazwa czerwonyOłówek kolpis 12 grubość 5]

; Nazwa określona
? nowy "Żółw [nazwa mójPies postać Pies pisak pod]
? nowy "mójPies [poz [-300 -200]]
? nowaKlasa "Żółw "Pies [postać Pies.LGF pisak pod pozx –100 skok 20]
? Pies'red "przyspiesz

oto przyspiesz
 ustalSkok skok + 10
już

? Pies'ustalZdarzenie "gdyKlik [np skok czekaj 200 ws skok przyspiesz]
? powtórz 10 [nowy "Pies [pozx (npw * 40 - 240)]]

W pierwszym wierszu tworzymy zwykłego żółwia. Jego nazwa jest automatycznie określana. Potem tworzymy nową planszę p1, oraz żółwia osadzonego na niej o nazwie czerwonyOłówek, kolorze pisaka czerwonym i grubości 5. W czwartym wierszu tworzymy żółwia mójPies z wizerunkiem pobieranym z pliku Pies.lgf i podniesionym pisakiem. Pozostałe ustawienia są automatycznie inicjalizowane zgodnie ze standardowymi ustawieniami żółwia. Rodzicem tych trzech nowych żółwi jest klasa Żółw.

W piątym wierszu żółw mójPies został wykorzystany jako prototyp. Utworzyliśmy jego potomka - identyczną jednostkę z nazwą określaną automatycznie i pozycją [-300 -200].

Wszystkie nowe żółwie - za wyjątkiem czerwonegoOłówka - zostały utworzone bezpośrednio w wierszu poleceń bez określania miejsca (w związku z tym ich miejscem jest aktywna strona, a wartością aliasu mojeMiejsce ta strona). Żółw czerwonyOłówek został utworzony (i funkcjonuje) na planszy p1.

Następny wiersz definiuje klasę Pies, klasę żółwi z postacią ładowaną z pliku Pies.LGF, podniesionym pisakiem, oraz wartością pozx macierzystej pozycji -100. Pozostałe ustawienia będą miały domyślne wartości takie same jak ustawienia zwykłych żółwi. Ponadto, każdy żółw klasy Pies będzie miał zmienną prywatną skok z wartością początkową 20. Nowe polecenie przyspiesz zwiększa wartość tej zmiennej o 10. Zdarzenie gdyKlik powoduje, że pies skacze, gdy klikniemy go myszką (jednocześnie następuje zwiększenie długości skoku dla następnego kliknięcia).

Zobacz także:

Więcej szczegółów o tworzeniu jednostek


Więcej szczegółów o tworzeniu jednostkek

Więcej szczegółów o tworzeniu jednostek

twórz
warpar
weźpar

Jednostki tworzymy poleceniami nowy i nowyObiekt. Polecenia te różnią się jedynie sposobem określania parametrów: nowy oczekuje podania ustawień określających jednostkę na liście ustawień, natomiast nowyObiekt może mieć zmienną liczbę parametrów:

  • nowy "nazwa_rodzica lista_ustawień lub
  • nowyObiekt "nazwa_rodzica lub
  • (nowyObiekt "nazwa_rodzica ustawienie wartość ustawienie wartość … )

Na przykład, polecenie nowy "Żółw [poz [100 -200]] wykona to samo co polecenie (nowyObiekt "Żółw "poz [100 -200]).

Kiedy tworzymy nową jednostkę, to:

  1. Nowy obiekt-jednostka jest tworzony jako potomek danego rodzica.
  2. Jeśli nazwa jest określona jako parametr, jego wartość stanie się nazwą nowego obiektu. W przeciwnym przypadku, nazwa jest określana automatycznie poprzez dodanie przyrostka (unikalnej liczby) do wartości zmiennej wspólnej prefiksNazwy odpowiedniej pierwotnej klasy (Żółw, Plansza, Przycisk, Suwak itd.).
  3. (Tylko dla zaawansowanych użytkowników) Uruchamiane jest polecenie użytkownika twórz – jeśli istnieje u rodzica nowego obiektu.
  4. Standardowe ustawienia nowego obiektu są inicjalizowane zgodnie z bieżącymi ustawieniami rodzica (jeśli jest nim jednostka) lub standardowymi wartościami (jeśli rodzicem jest klasa). Jeśli rodzic posiada jakieś zmienne prywatne, modyfikują one nowy obiekt w następujący sposób:
    • Zmienna, której nazwa jest identyczna ze standardowym ustawieniem zmienia wartość początkową tego ustawienia.
    • W nowym obiekcie tworzone są kopie pozostałych zmiennych prywatnych z taką samą wartością.
  5. Jeśli dana lista ustawień zawiera ustawienie różne od standardowych ustawień, to jednostka będzie posiadać zmienną prywatną z wartością początkową podaną na liście. Gdy zmienna już istnieje, jej wartość zostanie przedefiniowana, jeśli nie istnieje to zostanie utworzona.
  6. Jeśli dana lista_ustawień zawiera ustawienie o tej samej nazwie co standardowe ustawienie, to jego wartość zostanie określona zgodnie z listą ustawień, np. nowy "Żółw [kolpis 10 grubość 4].
  7. Aktualny adresat polecenia nowy (lub nowyObiekt) decyduje o miejscu nowego obiektu. Później można odwoływać się to tego miejsca za pośrednictwem aliasu mojeMiejsce.
  8. Aktualny adresat polecenia decyduje o stronie nowego obiektu (dla niektórych typów obiektów to połączenie nie występuje, na przykład, gdy tworzymy nową stronę). Później można odwoływać się to tej strony za pośrednictwem aliasu mojaStrona.
  9. Aktualny adresat decyduje, który obiekt (strona, okno główne, pasek narzędzi lub Baza) doda nowy obiekt do swojej listy obiektów. Będzie to:
    • Strona, jeśli tworzymy na niej, lub planszy osadzonej na niej, dowolny wizualny element lub planszę.
    • Okno główne, jeśli tworzymy nową stronę lub pasek narzędzi (bez zmiany adresata).
    • Strona, jeśli tworzymy na niej pasek narzędzi, na przykład, s1'nowy "PasekNarzędzi [ … ].
    • Pasek narzędzi, jeśli tworzymy na nim przycisk, planszę lub suwak.
  10. (Tylko dla zaawansowanych użytkowników) Zdarzenie gdyTworzysz (rodzica i wszystkich jego przodków) jest uruchamiane w porządku od góry do dołu poczynając od klasy Baza, a kończąc na rodzicu. Zauważmy, że ten proces wywołań jest różny od normalnego traktowania zdarzeń - zwykle jest uruchamiane tylko pierwsze znalezione zdarzenie w strukturze obiektów. Kiedy zachodzi zdarzenie gdyTworzysz, nowy obiekt staje się chwilowo aktualnym adresatem.
  11. (Tylko dla zaawansowanych użytkowników) Jeśli nowoutworzona strona lub plansza posiada (lub dziedziczy) zdarzenie gdyCs, to jest ono uruchamiane.

Tylko dla zaawansowanych użytkowników:

Procedura Typ Opis
twórz

razem z

warpar ustawienie wartość_domyślna

weźpar ustawienie wartość_domyślna

 P W pewnych specjalnych sytuacjach użytkownik potrzebuje mieć większą kontrolę nad procesem tworzenia jednostki (na bazie klasy lub prototypu jednostki). To jest bardzo potrzebne, kiedy twórca aplikacji chce zmodyfikować dane poleceń nowy i nowyObiekt przed ich wykonaniem, ale po określeniu wartości tych danych. W takim przypadku można zdefiniować bezparametrowe polecenie twórz dla klasy bazowej (lub prototypu). W treści polecenia można używać zmiennej lokalnej :iniLista - jej wartością jest lista ustawień już wyliczonych danych polecenia nowy lub nowyObiekt. W treści polecenia twórz można używać dwóch dodatkowych funkcji:
  • warpar ustawienie wartość_domyślna
    przeszukuje zmienną :iniLista dla danego ustawienia. Jeśli znajdzie, to daje wartość tego ustawienia. Jeśli nie znajdzie, to przeszukuje wszystkie zmienne obiektu klasy (lub prototypu). Jeśli ustawienie nadal nie zostanie odnalezione, to funkcja daje wartość_domyślną.
  • weźpar ustawienie wartość_domyślna
    działa analogicznie, z tym że jeśli znajdzie ustawienie na liście :iniLista, to je usuwa (w ten sposób ustawienie nie może być odnalezione na liście :iniLista dwa razy).

Jeśli definiujemy własne polecenie twórz, musimy w treści użyć zwykłe'twórz, ponieważ nasze polecenie nie może zastąpić zwykłego twórz, tylko rozszerzyć go lub zmodyfikować jego działanie.

Zauważmy, że ostatni krok tworzenia obiektu, zdarzenie gdyTworzysz (rodzica i wszystkich jego przodków) jest uruchamiane w porządku od góry do dołu poczynając od klasy Baza, a kończąc na rodzicu. Ta strategia jest różna od normalnego traktowania zdarzeń - zwykle jest uruchamiane tylko pierwsze znalezione zdarzenie w strukturze obiektów.


Wysyłanie poleceń obiektom

Kiedy napiszemy polecenie w wierszu poleceń i naciśniemy klawisz Enter, zostanie ono uruchomione. Wtedy:

  1. Określany jest obiekt, który wykona polecenie. Ten obiekt nazywamy adresatem. Domyślnym adresatem jest okno główne. Możemy także wysłać polecenie innemu obiektowi lub kilku aktywnym obiektom (często żółwiom, czasami suwakom, planszom, przyciskom itd.), aby wykonały je równolegle. Na podstawie treści polecenia, Imagine decyduje, który z możliwych obiektów jest adresatem tego polecenia.
  2. Poszukiwana jest definicja procedury (różne obiekty mogą mieć różne definicje tej samej procedury, nawet gdy dotyczy to tak podstawowych poleceń jak naprzód lub prawo).
  3. Wyliczana jest wartość parametrów, na przykład 2 + 3 * rozmiar lub ż3'poz przyjmują wartości 32, [100 –20].
  4. Uruchamiane jest polecenie z wyliczonymi wartościami.

Przykłady:

Załóżmy, że na stronie funkcjonuje pięć żółwi i dwie plansze. Niech żółwie ż1 i ż5 żyją bezpośrednio na stronie, ż2 i ż3 na planszy p1, a ż4 na planszy p2.

? słuchaj "ż1
? pokaż kto
ż1
? np 100

ż1 staje się jedynym aktywnym żółwiem. Zatem, tylko on wykona polecenie np 100.

? słuchaj [ż1 ż3 ż4]
? ustalGrubość 3

Żółwie ż1, ż3 i ż4 stają się aktywnymi żółwiami i wszystkie trzy zmienią grubość swojego pisaka.

Zauważmy, że do wszystkich aktywnych żółwi żyjących na aktywnej stronie, możemy odwoływać się bezpośrednio w wierszu poleceń, niezależnie, czy żyją na planszach, czy na stronie.

? proszę "ż2 [ustalGrubość 6]

Niezależnie, jakie żółwie są aktywne, możemy tymczasowo odwołać się do żółwia ż2 i zmienić jego grubość pisaka.

? ż2'ustalGrubość 6

To samo możemy zrobić używając notacji z apostrofem. W ten sposób możemy się jednak odwołać tylko do jednego żółwia w danym momencie.

? proszę [ż3 ż5] [ustalKolPis 12]

Możemy używać polecenia proszę do wskazania kilku żółwi jako wykonawców polecenia. Nie można osiągnąć tego używając notacji z apostrofem.

? ż2'pw 45
? ż2'powtórz 36 [np 90 pw 190]

Te polecenia wykona żółw ż2.

? powtórz 36 [np 80 pw 170]

Wszystkie aktywne żółwie narysują łamaną.

? słuchaj [ż2 ż3 ż4]
? cs

Żółwie nie rozpoznają polecenia cs. Również okno główne nie rozpozna go. Polecenie cs będzie dotyczyć aktywnej strony.

? p2'cs

Polecenie cs zostanie wykonane dla planszy p2.

Zobacz także:

Więcej szczegółów o wysyłaniu poleceń obiektom


Więcej szczegółów o wysyłaniu poleceń obiektom

  • Kiedy napiszemy polecenie w wierszu poleceń podejmowana jest decyzja kto jest jego adresatem, tzn. do którego obiektu polecenie zostanie wysłane. Domyślnym adresatem poleceń wydawanych w wierszu poleceń jest okno główne. Jeśli powiemy pokaż rozmiar, odpowiedzią będzie (zależnie od ustawień) [1160 872]. Ponieważ nie określono adresata, polecenie zostanie wysłane do domyślnego adresata, okna głównego. Zatem wynikiem będzie rozmiar okna Imagine.
  • Jeśli utworzymy planszę p1 i chcemy poznać jej rozmiar, użyjemy polecenia pokaż p1'rozmiar. Używając notacji z apostrofem możemy na czas wykonania polecenia zmienić adresata. Po wykonaniu polecenia ponownie domyślnym adresatem stanie się okno główne.
  • Jeśli nie określimy adresata, podejmowana jest decyzja, czy polecenie może być przekazane do wszystkich aktywnych obiektów (najczęściej do żółwi), czy nie.
  • Jeśli nie, poszukiwany jest obiekt, który ma zdefiniowane to polecenie.
  • Bez względu na to, kto jest adresatem polecenia, wszystkie dane wejściowe będą wyliczone w jego środowisku.
  • Wykonywane jest polecenie z wyliczonymi danymi. Jeśli adresatem są wszystkie aktywne obiekty, to równolegle wykonują one polecenie, każdy własną wersję. Jeśli obiekt nie rozpozna polecenia, to go nie wykona.

Są dwa sposoby czasowej zmiany adresata:

  • Bezpośrednie odwołanie się do niego w poleceniu, na przykład pokaż p1'rozmiar (co tłumaczy się: pokaż rozmiar planszy p1), albo
  • Użycie polecenia proszę z pierwszym parametrem określającym adresata, na przykład proszę "p1 [pokaż rozmiar].

Uwagi:

Zwykle polecenie proszę i notacja z apostrofem (tj. proszę "obiekt [ … ] i obiekt'…) dają ten sam efekt. W bardziej skomplikowanych sytuacjach, gdy wyliczane są dane wejściowe rezultat może być różny, na przykład proszę "ż1 [ż2'ustalPoz poz] powoduje ustawienie żółwia ż2 w pozycji żółwia ż1, a polecenie proszę "ż1 [proszę "ż2 [ustalPoz poz]] każe ustawić żółwia ż2 na jego własnej pozycji (czyli polecenie nie zrobi nic).

Występują też specjalne obiekty-aliasy, odwołujące się do bieżącego adresata i mogą być użyte w poleceniach, np. pokaż adresat'mojaNazwa znaczy to samo co pokaż mojaNazwa (słowo adresat można pominąć).

Przykłady:

? pokaż mojaNazwa
OknoGłówne

; identycznie:
? pokaż adresat'mojaNazwa
OknoGłówne

Bezparametrowa funkcja mojaNazwa daje nazwę aktualnego adresata. Odpowiedzą jest OknoGłówne - domyślny adresat poleceń wydawanych w wierszu poleceń.

? nowy "plansza [nazwa gr1
             poz [-200 200]
             rozmiar [400 400]
             koltła niebieski]

Tworzy nową planszę na stronie (to samo możemy osiągnąć korzystając z przycisku Nowa Plansza paska narzędzi.) W poleceniu określane są niektóre ustawienia tworzonej planszy, np. kolor tła będzie niebeski1.

? pokaż s1'koltła
15

Strona s1 jest adresatem funkcji koltła. Można też napisać:
? pokaż proszę "s1 [koltła].

? pokaż p1'koltła
1

Plansza p1 jest adresatem funkcji koltła.

? pokaż koltła
błękitny5

Adresat nie jest określony, więc będzie nim okno główne. Polecenie zostanie przesłane do aktywnej strony.

? narzędzia'prz14'ustalDostępny "fałsz

Adresat - przycisk prz14 paska narzędzi narzędzia - jest podany w poleceniu. Polecenie powoduje, że ten przycisk, tj. Pokaż/Schowaj przybornik paska narzędzi stanie się nieaktywny.


Aktywne obiekty

Zbiór obiektów (na przykład żółwi, plansz, przycisków itd.) trwale lub chwilowo aktywnych na skutek poleceń słuchaj lub proszę.

Wszystkie aktywne obiekty muszą być zgodne, tzn. wywodzić się z tej samej klasy pierwotnej. Na przykład, obiekty [ż1 ż2 żabka7 żabka9] są zgodne, jeśli żabka7 i żabka9 są jednostkami klasy Żabka pochodnej od klasy Żółw, zaś ż1, ż2 są jednostkami klasy Żółw. W takim przypadku lista [ż1 ż2 żabka7 żabka9] może być daną poleceń słuchaj i proszę.


Więcej o aktywnych obiektach

Kiedy określamy aktywne obiekty poleceniem słuchaj, to najpierw jest sprawdzane, czy wszystkie obiekty wymienione na liście są zgodne. Następnie znajdowany jest ich wspólny przodek i zapamiętywana jego nazwa. Ten pierwotny obiekt zawsze pamięta listę wszystkich procedur, które mogą być wysyłane do wszystkich aktywnych obiektów. Bieżący adresat nie jest przy tym zmieniany.

Kiedy aktywne obiekty są określane jako parametry polecenia proszę, na przykład proszę [ż1 ż2 ż3] [np 100 pw 90], to najpierw jest sprawdzane, czy wszystkie obiekty wymienione na pierwszej liście są zgodne. Następnie:

  1. Zapamiętywana jest lista aktywnych obiektów (w celu późniejszego odtworzenia - patrz punkt 6).
  2. Znajdowany jest wspólny przodek obiektów wymienionych w poleceniu proszę.
  3. Czasowo stają się one aktywne.
  4. Nie zmienia się aktualny adresat.
  5. Wykonywane są instrukcje z drugiej listy polecenia proszę, jak gdyby były wpisane w wierszu poleceń, jedna po drugiej.
  6. Odtwarzana jest zapamiętana wcześniej lista aktywnych obiektów.

Zauważmy, że uwaga dotycząca braku zmiany aktualnego adresata jest bardzo ważna, ponieważ wszystkie dane wejściowe są zawsze wyliczane w środowisku adresata. Jeśli powiemy np krok, to nastąpi próba wysłania tego polecenia do wszystkich aktywnych żółwi. Przedtem jednak zostanie wyliczona wartość funkcji krok adresata, na przykład okna głównego. Jeśli jest to nieznana funkcja, to wystąpi błąd.

Jeśli nie ma aktywnych obiektów, to ten sam mechanizm zostanie zastosowany dla pustej listy aktywnych żółwi: polecenie np 20 będzie skierowane do wszystkich aktywnych żółwi, czyli żadnego - nie wystąpi błąd. Jednocześnie poniższy ciąg poleceń spowoduje błąd:

? słuchaj []
? ustalPoz poz + [20 20]
Żaden obiekt nie jest aktywny, by wykonać poz
Użyj polecenia SŁUCHAJ, by uaktywnić obiekt

Przykład:

Tworzymy plansze p1, p2 i p3, a następnie:

? słuchaj [p1 p2 p3]
? powtórz 200 [każdy [ustalPoz poz + [1 0]]]


Procedury rozsyłane do aktywnych obiektów

Kiedy mamy dwa aktywne obiekty (lub więcej), mające wykonać polecenie, należy najpierw zdecydować czy ma być ono wysłane do wszystkich aktywnych obiektów (by wykonały je równolegle), czy ma być wysłane do adresata. W tym celu znajdowany jest wspólny przodek wszystkich aktywnych obiektów - musi nim być pierwotny element wizualny lub pierwotne miejsce. Każda z tych pierwotnych klas pamięta listę pierwotnych poleceń, które są rozsyłane do wszystkich aktywnych obiektów w celu równoległego wykonania (to są pierwotne procedury należące do pierwotnych klas). Jeśli jakaś procedura nie występuje na tej liście, to polecenie jest wysyłane do aktualnego adresata. Jeśli występuje, to polecenie (po wyliczeniu wartości danych w środowisku adresata) jest wysyłane do wszystkich aktywnych obiektów.

Listy poleceń pierwotnych, które są wysyłane do wszystkich aktywnych obiektów nie mogą być modyfikowane.

Przykład:

Załóżmy, że na stronie są osadzone dwie plansze p1 i p2, na p1 żyje żółw ż1, a na p2 żyje żółw ż2 - oba aktywne. Niech polecenie kwadrat będzie zdefiniowane następująco:

? red "kwadrat

oto kwadrat :a
 powtórz 4 [np :a pw 90]
już

Polecenie red "kwadrat jest wysyłane do (i rozpoznawane przez) adresata, którym jest okno główne. Jeśli następnie podamy polecenie kwadrat 100, obydwa aktywne żółwie narysują kwadrat. Dokładniej:

  • Wspólnym przodkiem wszystkich aktywnych żółwi jest klasa Żółw.
  • Polecenie kwadrat nie znajduje się na liście procedur pierwotnych klasy Żółw - zatem będzie ono wysłane do adresata, którym jest okno główne.
  • Okno główne rozpocznie wykonywanie polecenia kwadrat od powtórz 4 … To polecenie ponownie nie zostanie znalezione na liście procedur należących do żółwi, więc będzie także wysłane do okna głównego.
  • Zawartość instrukcji powtórz, czyli np :a pw 90, będzie wykonana przez żółwie, ponieważ polecenia np i pw znajdują się na liście procedur pierwotnych, które są rozsyłane do wszystkich aktywnych obiektów.


Jak określić adresata

Istotne jest rozumienie pojęć: adresat i aktywne obiekty. Nawet jeśli polecenie zostanie wysłane do wszystkich aktywnych obiektów (na przykład, do wszystkich aktywnych żółwi), istotne jest określenie adresata w celu wyliczenia wartości danych.

Adresatem jest obiekt, któremu wysłane jest polecenie do wykonania. Określany on jest następująco:

  • Jeśli polecenie rozpoczyna się od nazwy procedury, na przykład mójDom 100, adresatem będzie okno główne.
  • Jeśli polecenie rozpoczyna się od proszę i dotyczy jednego obiektu, na przykład proszę "ż4 [mójDom 120] bądź proszę [ż4] [mójDom 120], to na czas wykonania tego polecenia adresatem będzie ów obiekt, w podanym przykładzie żółw ż4.
  • Jeśli polecenie rozpoczyna się od proszę i dotyczy wielu obiektów, na przykład proszę [ż1 ż2 ż3] [zróbCoś 77] to te obiekty staną się czasowo aktywne, ale adresat nie zmieni się. Definicja polecenia zróbCoś jest poszukiwana u ich wspólnego przodka. Jeśli zostanie odnaleziona na jego liście procedur wysyłanych do aktywnych obiektów, to zostaną wyliczone wartości danych i polecenie wykonane równolegle przez wszystkie aktywne obiekty. Każdy z nich wykona swoją własną wersję (o ile ją ma). Po wykonaniu polecenia zostanie odtworzona lista aktywnych obiektów.
  • Jeśli polecenie rozpoczyna się od nazwy obiektu z apostrofem, na przykład ż1'ustalPoz [10 20], oznacza to, że obiekt o nazwie wymienionej przed apostrofem (w tym przypadku żółw ż1) ma je wykonać. Aktualny adresat musi mieć dostęp do obiektu (znać go), który ma wykonać polecenie. Jeśli nie zna, to wystąpi błąd. Obiekt ten staje się czasowym adresatem. Następnie odnajdowana jest definicja polecenia (w tym przypadku ustalPoz), wyliczane wartości danych i uruchamiane to polecenie. Po jego wykonaniu odtwarzany jest aktualny adresat.
  • Jeśli polecenie rozpoczyna się od kilku nazw obiektów (w notacji z apostrofem), na przykład s1'p1'ż1'…, ten sam proces zostanie powtórzony kilka razy. Najpierw nastąpi sprawdzenie, czy aktualny adresat ma dostęp do pierwszego obiektu (w tym przypadku s1), następnie czy pierwszy (s1) ma dostęp do drugiego (p1), itd. Jeśli cała ścieżka obiektów jest poprawna, czasowym adresatem stanie się ostatni z nich.


Wyliczanie wartości danych wejściowych

Załóżmy, że wiadomo kto jest adresatem polecenia, oraz czy będzie ono wykonane przez wszystkie aktywne żółwie, czy przez adresata. W obu przypadkach wartości danych wejściowych muszą być wyliczone.

  • Jeśli jest to liczba, to wartością jest ta liczba, na przykład 200 lub –7.
  • Jeśli jest to słowo poprzedzone cudzysłowem ("), to wartością jest to słowo.
  • Jeśli jest to słowo poprzedzone dwukropkiem (:), wartością jest wartość zmiennej lokalnej lub globalnej o tej nazwie.
  • Jeśli jest to wyrażenie, np. arytmetyczne 23 * 5 + strona, to najpierw wyliczane są wartości podwyrażeń. Wartością będzie wartość całego wyrażenia.
  • Jeśli jest to nazwa funkcji z własnymi danymi, na przykład odległość [10 40] "ż5, to najpierw są wyliczane te dane, następnie odnajdywana jest definicja funkcji u aktualnego adresata i wykonywana dla tych wartości. Wynik funkcji jest wartością danej.
  • Jeśli jest to lista, nie jest wyliczana, tylko bezpośrednio staje się wartością danej.
  • Jeśli dana rozpoczyna się od nazwy obiektu z apostrofem, na przykład ż1'poz lub p1'znajdź 120 :x, to najpierw sprawdzane jest, czy aktualny adresat ma dostęp do danego obiektu (np. ż1 lub p1). Jeśli tak, to wyliczane są podwyrażenia, następnie dany obiekt staje się czasowo adresatem, jest odnajdywana u niego definicja funkcji i wykonywana dla policzonych wartości. Przywracany jest poprzedni adresat. Wynik funkcji jest wartością danej.

Przykłady:

? pokaż p1'rozmiar
[120 230]

Aktualny adresat - okno główne - wykonuje polecenie pokaż. Wylicza p1'rozmiar, tj. rozmiar planszy p1.

? p1'pokaż rozmiar
[1160 872]

Plansza p1 ma wykonać swoje prywatne polecenie pokaż wyliczające rozmiar. Najprawdopodobniej, plansza nie ma takiego polecenia, więc będzie ono dziedziczone z Bazy. Adresat dla funkcji rozmiar nie jest określony, będzie więc nim okno główne.

? proszę "p1 [pokaż rozmiar]
[120 230]

Plansza p1 jest proszona o wypisanie swojego rozmiaru. Jest bardzo ważne, aby rozumieć różnicę pomiędzy tym przykładem a poprzednimi.


Zachowania

naśladowcy
przejmijZachowanie
usuńZachowanie
wzorce

Poniższy przykład tworzy klasę o nazwie Żaba. Ona reprezentuje żółwie o wizerunku żaby, które mogą skakać w prawo lub w lewo itd. Ponadto zdefiniowana jest następująca reakcja: kiedy klikniemy żabę, ona skoczy w prawo.

? nowaKlasa "Żółw "Żaba [postać żaba.lgw pisak podnieś]
? Żaba'red "skokWPrawo

oto skokWPrawo
ustalKierunek 5
powtórz 18 [np 8 pw 10 czekaj 10]
już

? Żaba'ustalZdarzenie "gdyKlik [skokWPrawo]

Załóżmy, że jest na ekranie inny obiekt – żółw rowerzysta, który nie jest żabą. Pomimo tego, rowerzysta okazjonalnie pożycza zachowanie żaby (wzorca), tj. czasami potrzebuje skoczyć jak żaba. Zachowanie żaby może być dodane do rowerzysty poleceniem:

? rowerzysta'przejmijZachowanie "Żaba

Od tego momentu (do wykonania polecenia rowerzysta'usuńZachowanie "Żaba) rowerzysta wie jak wykonać skokWPrawo oraz inne procedury zdefiniowane w klasie Żaba, jak reagować na zdarzenia zdefiniowane dla żaby, itd.

Uwagi:

  • Dowolny obiekt (klasa lub jednostka) może przekazywać swoje zachowanie innym obiektom (klasom lub jednostkom) z jednym wyjątkiem: klasa nie może przejmować zachowania jednostki. Polecenie przejmijZachowanie ustanawia nową relację (połączenie) pomiędzy aktualnym adresatem, a parametrem polecenia (który jest obiektem). Adresat dziedziczy zachowanie innego obiektu. Relacja jest tymczasowa i może być usunięta poleceniem usuńZachowanie.
  • Adresat może przejąć zachowania dowolnej liczby obiektów.
  • Jeśli adresat przejmie zachowanie, nie tylko on je otrzyma, ale także wszyscy jego potomkowie. To jest możliwe dzięki dziedziczeniu.
  • (Tylko dla zaawansowanych użytkowników) Po przejęciu zachowania, jeśli obiekt użyczający je ma zdefiniowane zdarzenie gdyPrzejmujeszZachowanie, adresat (tj. obiekt przejmujący zachowanie) uruchamia je. To umożliwia zmianę wartości zmiennych obiektu, dokonanie pewnych globalnych zmian, itd.
  • Kiedy obiekt użyczający zachowanie posiada zmienne prywatne , których nazwy są różne od standardowych ustawień obiektu przejmującego zachowanie, to ten obiekt otrzyma automatycznie kopie wszystkich tych zmiennych (z aktualnymi wartościami). Jeśli później dodamy nowe zmienne do obiektu użyczającego, to automatycznie są kopiowane do obiektu pożyczającego oraz jego potomków. Ale kiedy zachowanie jest usuwane, to zmienne pozostają (ponieważ mogą być ciągle używane przez obiekt).
  • (Tylko dla zaawansowanych użytkowników) Podobnie jak w przypadku punktu dotyczącego zdarzenia gdyPrzejmujeszZachowanie, kiedy usuwamy zachowanie poleceniem usuńZachowanie, zdarzenie gdyUsuwaszZachowanie – jeśli jest zdefiniowane bezpośrednio lub pośrednio w obiekcie użyczającym zachowanie - będzie uruchomione przez adresata (obiekt, któremu usuwamy zachowanie).
Procedura | Typ | Opis
naśladowcy | F | Wynikiem jest lista obiektów, które przejeły zachowanie aktualnego adresata. (Patrz przykład przy poleceniu wzorce.)
przejmijZachowanie obiekt | P | Ustanawia czasowo relację (połączenie) pomiędzy obiektem i aktualnym adresatem. Jeśli obiekt ma zdefiniowane zdarzenie gdyPrzejmujeszZachowanie, to jest ono uruchamiane (patrz uwagi powyżej).
usuńZachowanie obiekt | P | Usuwa relację (połączenie) pomiędzy obiektem i adresatem. jeśli obiekt ma zdefiniowane zdarzenie gdyUsuwaszZachowanie, to jest ono uruchamiane (patrz uwagi powyżej).
wzorce F Wynikiem jest lista obiektów, od których aktualny
adresat przejął zachowania.

? nowy "Żółw [poz jld nazwa ż1]
? nowy "Żółw [poz jld nazwa ż2]
? nowy "Żółw [poz jld nazwa ż3]
? ż1'przejmijZachowanie "ż2
? pokaż ż1'wzorce
[ż2]
? ż1'przejmijZachowanie "ż3
? pokaż ż1'wzorce
[ż2 ż3]
? pokaż ż2'naśladowcy
[ż1]

Przykład:

Załóżmy, że mamy dwa żółwie, ż1 i ż2. Dla żółwia ż2 polecenie np jest przedefiniowane:

? ż2'red "np

oto np :N
lw 60
wielokąt [ustalKolMal "niebieski3 powtórz 3 [np (:N / 2) pw 60]]
pw 60 zwykłe'np :N
już

Żółw ż1 przesuwa się do przodu normalnie (patrz - prawa strona rysunku poniżej), natomiast żółw ż2 wykonuje ruchy do przodu rysując niebieski wielokąt (patrz - lewa strona rysunku). Jeśli teraz dodamy zachowanie żółwia ż2 żółwiowi ż1, to wszystkie rysunki wykonywane przez żółwia ż1 zupełnie się zmienią:

? ż1'przejmijZachowanie "ż2
? słuchaj "ż1
? powtórz 3 [np 100 pw 120]
? powtórz 4 [np 199 pw 90]
? powtórz 5 [np 100 pw 144]

Jeśli zachowanie żółwia ż2 jest usuwane z żółwia ż1 (lub jeśli żółw ż2 jest usuwany), to żółw ż1 przywróci swoje poprzednie (zwykłe) polecenie np.

Ważne:

Jeśli przedefiniujemy polecenie np, to odpowiadająca mu pełna forma polecenia naprzód nie zostanie automatycznie przedefiniowana. To samo nastąpi, jeśli przedefiniujemy tylko polecenie naprzód – jego skrót np będzie miał tradycyjne znaczenie.


Domyślne akcje

Załóżmy, że chcemy mieć żółwia i dwa suwaki: poziomy kontrolujący współrzędną X-ową żółwia oraz pionowy kontrolujący Y-ową współrzędną. Tworzymy planszę p1 o rozmiarze [200 200], żółwia ż1 ma niej, dwa suwaki suw1 i suw2 z pozycją suwadła z zakresu od 0 do 200 oraz definiujemy proces bez końca:

? ż1'bezKońca [ustalPozAbs zd suw1'pozycjaSuwadła suw2'pozycjaSuwadła]

Ten proces będzie stale aktualizować pozycję (absolutną) żółwia zgodnie z aktualnymi pozycjami suwaków suw1 i suw2. Definicję procesu można uprościć:

? ż1'bezKońca [ustalPozAbs zd suw1 suw2]

Możliwość skrócenia suw1'pozycjaSuwadła (i użycia tylko suw1) zawdzięczamy specjalnej procedurze autoAkcja. Dla dowolnego obiektu możemy zdefiniować autoAkcję (dla wybranych klas pierwotnych: Strona, Suwak, PoleTekstowe, Przycisk i Odtwarzacz jest już predefiniowana, patrz definicje poniżej).

Za każdym razem, kiedy nazwa obiektu jest użyta jako wywołanie procedury, na przykład ustalPozX suw1, i nie można odnaleźć procedury o tej nazwie, zamiast niej brany jest obiekt. Jeśli istnieje, poszukiwana jest procedura autoAkcja tego obiektu lub jego rodzica (ewentualnie kolejnych przodków aż do Bazy). Zauważmy, że jest to ograniczone dziedziczenie procedury, ponieważ połączenia mojeMiejsce i wzorce są ignorowane.

Jeśli procedura autoAkcja nie zostanie odnaleziona, to wystąpi błąd:

? p1
Nie wiem jak wykonać p1
Sprawdź pisownię. Może to nowe nieokreślone słowo

Jeśli zostanie odnaleziona, to obiekt staje się chwilowym adresatem i treść procedury autoAkcja jest wykonywana. Zauważmy, że autoAkcja może być zarówno poleceniem jak i funkcją – oczywiście musimy jej później odpowiednio używać. Na przykład, dla klasy Suwak jest zdefiniowana funkcja, możemy napisać ż1'ustalPozX suw1. Dla klasy Przycisk, jest zdefiniowane polecenie i możemy po prostu napisać prz1.

Predefiniowane autoAkcje Opis
Strona'oto autoAkcja
  mojeOkno'ustalAktywnąStronę
    mojaNazwa
już 		Jeśli użyjemy nazwy strony jako polecenia, zostanie ona wyświetlona. To samo robi polecenie:
ustalAktywnąStronę "strona.
Suwak'oto autoAkcja
  wy pozycjaSuwadła
już
 Jeśli użyjemy nazwy suwaka jako funkcji, wynikiem będzie jego pozycja suwadła.
PoleTekstowe'oto autoAkcja
  wy zawartość
już
 Jeśli użyjemy nazwy pola tekstowego jako funkcji, wynikiem będzie zawartość pola.
Przycisk'oto autoAkcja
  ustalWciśnięty "prawda
już
 Jeśli użyjemy nazwy przycisku jako polecenia, przycisk zostanie wciśnięty.
Odtwarzacz'oto autoAkcja
  jeżeli stanGrania = "Gra
     [przerwa] [graj]
już
 Jeśli użyjemy nazwy odtwarzacza jako polecenia, rozpocznie się odtwarzanie lub nastąpi przerwa, w zależności od aktualnego stanu odtwarzacza.

Możemy skasować lub zmodyfikować dowolną z powyższych autoAkcji, lub zdefiniować własną dla dowolnego obiektu.


Praca z procedurami

mojaProcedura?
mojePierwotne?
określ
określone?
oto
pierwotne?
redaguj; red; ed
tekst
usuń; us

Poniższa grupa procedur pierwotnych umożliwia tworzenie, modyfikowanie i usuwanie procedur użytkownika. Niektóre procedury pierwotne są proste w użyciu, inne bardziej zaawansowane. Na przykład, para procedur określ i tekst umożliwia przetwarzanie procedur użytkownika jako danych - można je tworzyć i modyfikować podczas działania programu.

Tryb definiowania procedury w wierszu poleceń został także opisany. Można go włączyć poleceniem pierwotnym oto.

Istnieje kilka sposobów zdefiniowania procedury. Każda z tych definicji musi zawierać trzy części:

  • Nagłówek rozpoczynający się od słowa oto z nazwą procedury i ewentualnie nazwami parametrów.
  • Jednego lub większej liczby wierszy stanowiących treść procedury – opisu działania (jeśli jest to polecenie) lub sposobu obliczenia wyniku (jeśli jest to funkcja).
  • Wiersza kończącego definicję składającego się tylko ze słowa już.

Zwykle polecenia pierwotne mają stałą liczbę parametrów, jakkolwiek, niektóre z nich akceptują zmienną liczbę parametrów, na przykład pokaż lub pisz. Wówczas, jeśli jest inna liczba parametrów niż domyślna, całe polecenie musi być ujęte w nawiasy okrągłe:

? (pisz "A "B "C)
A B C

To samo dotyczy procedur użytkownika. Najczęściej akceptują one stałą liczbę parametrów (określoną w nagłówku procedury). Można także zdefiniować własną procedurę ze zmienną liczbą parametrów. Dla takich procedur nagłówek składa się z:

  • Słowa oto i nazwy procedury.
  • Jednej nazwy parametru.
  • Listy z jednym elementem [N] – gdzie N jest liczbą określającą domyślną liczbę parametrów.

Na przykład:

oto podwójnie :L [1]
 wynik zdanie :L :L
już

Jeśli wywołamy powyższą funkcję z jednym parametrem – w tym przypadku jest to domyślna liczba parametrów, nie trzeba używać nawiasów. Jeśli wywołamy ją z inną liczbą parametrów, to należy użyć nawiasów:

? pisz podwójnie "cześć
cześć cześć
? pisz (podwójnie "cześć "Janek)
cześć Janek cześć Janek

Parametr (w powyższym przykładzie :L) jest zawsze listą wszystkich danych. Na przykład, jeśli napiszemy:

? pisz (podwójnie "raz "dwa "trzy)

to funkcja podwójnie jest wykonywana z daną :L będącą listą [raz dwa trzy].

Procedura | Typ | Opis
mojaProcedura? słowo | F | Wynikiem jest prawda, jeśli dane słowo jest nazwą procedury użytkownika zdefiniowanej bezpośrednio (nie dziedziczonej) dla aktualnego adresata.
mojePierwotne? słowo | F | Wynikiem jest prawda, jeśli dane słowo jest nazwą procedury pierwotnej bezpośrednio (nie dziedziczonej) u aktualnego adresata.
określ słowo zapis_definicji P Dla aktualnego adresata polecenie definiuje nową procedurę użytkownika o nazwie słowo i treści zapis_definicji. Jeśli adresat posiada zmienną wspólną lub prywatną o tej nazwie, to wystąpi błąd.

? określ "kwadrat [[a][powtórz 4 [np :a pw 90]]]

Definiuje polecenie kwadrat dla okna głównego.

? ż2'określ "np [[a][ws :a]]

Definiuje nowe polecenie tylko dla żółwia ż2. Więcej, pokrywa (nadpisuje) dla ż2 polecenie pierwotne np.

Jeśli teraz napiszemy:

? proszę [ż1 ż2 ż3] [kwadrat 80]

to żółw ż2 będzie rysował kwadrat poruszając się wstecz zamiast do przodu. Zauważmy, że jeśli procedura o danej nazwie już istnieje, to zostanie przedefiniowana.

Określ i funkcja tekst są używane do przetwarzania procedur jako danych.

oto zwiększ_o_5 :x
 wy :x + 5
już

? pokaż tekst "zwiększ_o_5
[[x] [wy :x + 5]]
? określ "zwiększ_o_6 lista [x] [wy :x + 6]
? pokaż zwiększ_o_6 –3
; Nowa funkcja dodaje 6 do danego parametru.
3

Przy pomocy określ można zdefiniować procedurę użytkownika ze zmienną liczbą parametrów:

? określ "próba [[L [2]] [wy zd :L :L]]
? pokaż próba "A "B
[A B A B]
? pokaż (próba "A "B "C "D)
[A B C D A B C D]
określone? słowo F Wynikiem jest prawda, jeśli dane słowo jest nazwą procedury użytkownika zdefiniowanej bezpośrednio lub dziedziczonej przez aktualnego adresata.

? pokaż ż2'określone? "kwadrat
prawda
oto słowo
oto słowo :parametr1 :parametr2 ... 		P Użyte w wierszu poleceń powoduje, że zwykły tryb pracy zmienia się na tryb definicji procedury. Sygnalizowane jest to przez zmianę znaku zachęty na ">". Słowo jest nazwą nowej procedury, pozostałe dane :parametr1, :parametr2 itd. są słowami określającymi nazwy parametrów nowotworzonej procedury.

W następnych wierszach po oto piszemy treść nowej procedury. Tryb definiowania procedury w wierszu poleceń pozwala na poprawianie tylko bieżącego wiersza. Definicję procedury kończymy pisząc słowo już w oddzielnym wierszu.

Używając polecenia oto możemy określić adresata:

? nowaKlasa "Żółw "mójŻółw [pisak pod postać ball.LGF]

? mójŻółw'oto kwadrat :a
> powtórz 4 [np :a pw 90]
> już
?

Można użyć polecenia oto w pliku tekstowym. Podczas odczytywania pliku poleceniem ładuj, procedury zdefiniowane w pliku zostaną utworzone dla aktualnego adresata. Można także określić adresata w pliku:

ż1'oto trójkąt :a
 powtórz 3 [np :a pw 120]
już

Przy pomocy oto można także zdefiniować procedurę ze zmienną liczbą parametrów.

? oto próba :L [2]
> wynik zdanie :L :L
> już
?

Definiuje funkcję próba, która spodziewa się dwóch parametrów, ale może być wykonana dla dowolnej liczby parametrów (ujętych razem z nazwą w nawiasy okrągłe):

? pokaż próba 2 3
[2 3 2 3]
? pokaż (próba 2 3 4 5)
[2 3 4 5 2 3 4 5]

Więcej szczegółów: zobacz procedury ze zmienną liczbą parametrów w sekcji zapis definicji.
pierwotne? słowo F Wynikiem jest prawda, jeśli dane słowo jest nazwą procedury pierwotnej (także dziedziczonej) aktualnego adresata.

? nowy "Żółw [nazwa Romeo]
? pokaż Romeo'pierwotne? "iloczyn
prawda
? pokaż Romeo'mojePierwotne? "iloczyn
fałsz
redaguj słowo
Skróty:
red, ed
P Otwiera zakładkę Procedury dialogu Zmień mnie aktualnego adresata. Jeśli procedura użytkownika o nazwie słowo jest już zdefiniowana, to można ją poprawiać. Jeśli jest to nazwa nowej procedury, pusta definicja złożona z nagłówka i słowa już zostanie utworzona, więc można następnie podać parametry (jeśli są potrzebne) i treść procedury:

Jeśli adresat już posiada zmienną wspólną lub prywatną o tej samej nazwie, to wystąpi błąd.

Można także użyć polecenia redaguj we wnętrzu procedury:

oto spróbujTo :nazwa
 redaguj :nazwa
już

W dialogu "Zmień mnie" dowolnego obiektu można także zdefiniować procedurę ze zmienną liczbą parametrów, patrz opis polecenia oto lub zapis definicji.

W momencie otwarcia dialogu "Zmień mnie" wszystkie uruchomione procesy są wstrzymane. Zostaną wznowione po zamknięciu dialogu.

Polecenia redaguj można użyć nie tylko do edycji procedury:

  • Jeśli parametr jest postaci redaguj ":nazwa, to zostanie otwarta zakładka Zmienne globalne dialogu Zmień Baza. Można określić wartość nowej zmiennej globalnej lub zmienić już istniejącej.
  • Jeśli parametr jest postaci redaguj ""nazwa, to zostanie otwarta zakładka Właściwości dialogu "Zmień Baza". Można zdefiniować nową właściwość lub modyfikować istniejącą.
  • Jeśli parametr jest postaci redaguj "wspólne'nazwa, to zostanie otwarta zakładka Zmienne dialogu "Zmień mnie" aktualnego adresata. Można edytować wartość zmiennej wspólnej nazwa.
  • Jeśli parametr jest postaci redaguj "prywatne'nazwa, to zostanie otwarta zakładka Zmienne dialogu "Zmień mnie" aktualnego adresata. Można edytować wartość zmiennej prywatnej nazwa.
  • Jeśli parametr jest postaci redaguj "zdarzenie'nazwa, to zostanie otwarta zakładka Zdarzenia dialogu "Zmień mnie" aktualnego adresata. Można definiować lub poprawiać określone zdarzenie.
tekst słowo F Wynikiem jest zapis definicji procedury użytkownika o nazwie słowo zdefiniowanej u aktualnego adresata. Polecenie tekst (razem z procedurą określ) jest używane do przetwarzania procedur jako danych.

oto razy2 :x
 wy 2 * :x
już

? pokaż tekst "razy2
[[x] [wy 2 * :x]]

Zauważmy, że nazwy parametrów procedury na liście definicji nie są poprzedzone dwukropkiem (:). Aby wypisać tekst definicji czytelniej można użyć polecenia piszWiersz:

? piszWiersz tekst "razy2
x
wy 2 * :x

Jeśli zdefiniujemy procedurę ze zmienną liczbą parametrów, polecenie tekst wypisze tekst definicji w następujący sposób:

? oto próba :L [2]
> wynik zdane :L :L
> już
? piszWiersz tekst "próba
L [2]
wynik zdanie :L :L
usuń słowo
usuń [ słowo1 słowo2 …]
Skrót:
us 		P Usuwa procedurę użytkownika o nazwie słowo bezpośrednio zdefiniowaną (nie dziedziczoną) u aktualnego adresata. Jeśli procedura nie istnieje, następuje próba usunięcia zmiennej wspólnej lub prywatnej o tej samej nazwie. Jeśli nie istnieje ani procedura, ani zmienna o tej nazwie, to wystąpi błąd.

Zauważmy, że:

  • Nie można usunąć procedury dziedziczonej.
  • Nie można usunąć procedury pierwotnej.
  • Kilka procedur może zostać usuniętych równocześnie.


Zarządzanie obiektami

Ta sekcja opisuje kilka podstawowych procedur używanych do tworzenia, usuwania i ukrywania obiektów, oraz informujących o strukturze obiektów. Więcej szczegółów na temat poleceń nowy, nowyObiekt i nowaKlasa, patrz sekcje: tworzenie jednostek i tworzenie klas. Procedury dotyczące zarządzania obiektami należą do klasy Baza. Oznacza to, że są dostępne dla wszystkich obiektów. Na przykład, możemy wykonać nowy "Żółw [] - wysyłamy wtedy polecenie do okna głównego, lub p1'nowy "Żółw [] - wysyłamy polecenie do planszy p1.

Zobacz także:

Tworzenie i usuwanie obiektów
Ukrywanie obiektów
Zamrażanie i odmrażanie obiektów
Procedury zarządzające obiektami
Zdarzenia
Procedury zarządzające zdarzeniami
Obiekty-aliasy


Tworzenie i usuwanie obiektów

klonuj
nowaKlasa
nowaStrona
nowy
nowyObiekt
twórz
usuńDoDna
usuńObiekt
usuńStronę
usw
zniszcz

W poniższych procedurach, rodzic jest nazwą klasy lub jednostki, obiekt jest nazwą obiektu, a lista_obiektów jest listą nazw obiektów.

Procedura | Typ | Opis
klonuj obiekt ustawienia P Tworzy kopię obiektu u aktualnego adresata. Generuje dla niego nową nazwę. Wszystkie ustawienia, zmienne prywatne i wspólne, zdarzenia i procedury będą takie same.

Drugi parametr, ustawienia umożliwia modyfikację klonowanego obiektu przez przedefiniowanie jednego lub kilku jego standardowych ustawień:

? klonuj "ż1 [poz [-200 0] przeciąganie fałsz]

Więcej, w ustawieniach można określić miejsce, na którym nowy obiekt będzie utworzony:

? klonuj "ż1 [mojeMiejsce p2 poz [20 100]]

Jeśli nie określimy miejsca obiektu w ustawieniach, zrobi to adresat.

Przykład: Jeśli żółw ż1 żyje na planszy p1 i tworzymy jego kopię na planszy p2, powiemy:

? p2'klonuj "t1 []

Jeśli klonujemy obiekt, który posiada inne obiekty (na przykład planszę z kilkoma przyciskami, żółwiami, suwakami, itp.), kopia będzie zawierać także wszystkie osadzone obiekty.
nowaKlasa rodzic nazwa_klasy ustawienia | P | Zobacz Tworzenie klas.
nowaStrona
(nowaStrona słowo ) 		P Zobacz Procedury okna głównego.
nowy rodzic ustawienia | P | Zobacz Tworzenie jednostek.
nowyObiekt rodzic (nowyObiekt rodzic ustawienie wartość ... ) | P | Zobacz Tworzenie jednostek.
twórz | P | Zobacz Tworzenie jednostek.
usuńDoDna obiekt P Usuwa dany obiekt oraz:
  • wszystkich jego potomków,
  • wszystkie obiekty, dla których obiekt jest miejscem, tzn. razem z obiektem są usuwane obiekty żyjące na nim,
  • przerywa wszystkie procesy, dla których obiekt jest adresatem, ponieważ nie będą mogły mu już wysyłać poleceń.
usuńObiekt obiekt
usuńObiekt lista_obiektów 		P Usuwa dany obiekt lub obiekty tylko, gdy:
  • aktualny adresat jest różny od usuwanego obiektu lub obiektów,
  • usuwany obiekt (obiekty) nie posiada potomków.

Polecenie może spowodować usunięcie kilku innych obiektów i przerwanie procesów:

  • usunięte zostaną wszystkie obiekty, dla których obiekt jest miejscem, tzn. razem z obiektem są usuwane obiekty żyjące na nim,
  • przerwane zostaną wszystkie procesy, dla których obiekt jest adresatem, ponieważ nie będą mogły mu już wysyłać poleceń.
usuńStronę słowo P Usuwa stronę. Zadziała tak samo jak polecenie usuńObiekt słowo. Nie można usunąć strony, która jest jedyną stroną okna głównego:

? usuńStronę "s1
Nie można usunąć jedynej strony
usw | P | Usuwa wszystkie procedury użytkownika, obiekty i przerywa wszystkie uruchomione procesy. Zostanie przywrócony stan środowiska podczas uruchomienia Imagine.
zniszcz | P | Kiedy usuwany obiekt posiada bezparametrowe polecenie zniszcz, zostanie ono automatycznie uruchomione (przed usunięciem obiektu). Pozwala to wykonać pewne dodatkowe działania tuż przed usunięciem obiektu.


Ukrywanie obiektów

odkryj
.schowaj
ukryj
ukryte
zakryte

W pewnych sytuacjach wygodnie jest ukryć niektóre obiekty (lub ich elementy takie jak zdarzenia, procedury itp.). Ukryte obiekty lub elementy:

  • mogą być tak samo używane jak inne obiekty lub elementy,
  • nie są wyświetlane w oknie pamięci (chyba, że zostanie włączona opcja Widok / Ukryte menu okna pamięci), w związku z tym zawartość okna jest bardziej przejrzysta.

Ukrywać i odkrywać obiekty (elementy) można na dwa sposoby:

  • używając procedur ukryj, odkryj, ukryte, zakryte i .schowaj,
  • operując opcjami Element (Ukryj i Odkryj) oraz Widok (Ukryte i Pierwotne) menu okna pamięci.

Ukryte obiekty mogą stać się czasowo widoczne po wykonaniu polecenia zakryte "fałsz lub włączeniu opcji Widok / Ukryte. Te obiekty traktowane są ciągle jako ukryte, ale w niektórych przypadkach zachowują się trochę inaczej (patrz poniżej). Niektóre obiekty lub elementy mogą być schowane głębiej - można je utajnić. Wszystkie pierwotne klasy (oraz kilka innych pierwotnych elementów) są utajnione. Jeśli chcemy wyświetlić je w oknie pamięci, należy włączyć opcję menu Widok / Pierwotne. Polecenie .schowaj włącza obiekty (lub elementy) utworzone przez użytkownika do grupy pierwotnych (poniżej więcej szczegółów).

Zauważmy, że:

  • Ukryte obiekty lub elementy mogą być używane taj jak zwykłe obiekty i elementy.
  • Ukryte obiekty (elementy) nie są wyświetlane w oknie pamięci - chyba, że staną się czasowo widoczne po włączeniu opcji Widok / Ukryte (lub wykonaniu polecenia zakryte "fałsz).
  • Ukryte obiekty (elementy) nie mogą być modyfikowane poleceniem redaguj - chyba, że są czasowo widoczne.
  • Polecenie pokażPamięć nie może być stosowane do ukrytych obiektów - chyba, że są czasowo widoczne.
  • Polecenie zmieńMnie nie może być stosowane do ukrytych obiektów - chyba, że są czasowo widoczne.
  • W dialogu "Zmień Mnie", ukryte zmienne, zdarzenia i procedury nie są wyświetlane - chyba, że są czasowo widoczne.
  • Ukryte obiekty (elementy) mogą być usuwane poleceniami typu usuń.
  • Ukryte obiekty (elementy) mogą być usuwane poleceniem usw, ponieważ to polecenie przygotowuje środowisko do pracy z nowym pustym projektem.

Kiedy ukrywamy, usuwamy lub modyfikujemy elementy, często musimy dokładnie określić jakiego rodzaju elementu operacja dotyczy. Na przykład, jeśli ukrywamy określone zdarzenie obiektu, musimy poinformować środowisko, że chodzi właśnie o zdarzenie. W tym celu została wprowadzona specjalna notacja prefiksowa. Ona zawsze odnosi się do aktualnego adresata i dotyczy jego własnych elementów, tzn. nie dziedziczonych. Jeśli napiszemy (zastępując P, O, U… itd. procedurą, obiektem, ustawieniem… itd.):

  • P - to oznacza procedurę zdefiniowaną przez użytkownika u adresata lub jego zmienną obiektu,
  • procedura'P - to oznacza procedurę zdefiniowaną przez użytkownika u adresata.
  • obiekt'O - to oznacza obiekt jako całość, który znajduje się na liście adresata.
  • atrybut'U - to oznacza standardowe ustawienie adresata.
  • prywatne'Z - to oznacza zmienną prywatną Z adresata.
  • wspólne'Z - to oznacza zmienną wspólną Z adresata.
  • globalne'Z - to oznacza zmienną globalną Z.
  • :Z, na przykład ukryj ":Z lub ukryj [:A :B :C] - oznacza jedną lub kilka zmiennych globalnych. Można zamiennie stosować z opcją powyżej.
  • zdarzenie'nazwa - to oznacza zdarzenie nazwa adresata.
  • właściwości'słowo - to oznacza właściwości zdefiniowane dla słowa.
  • "w, na przykład ukryj ""w lub ukryj ["w1 "w2 "w3] - to oznacza jedno lub kilka słów ze zdefiniowanymi właściwościami. Można zamiennie stosować z opcją powyżej.

Można używać także następujących funkcji:

  • zmienne - zwraca listę wszystkich zmiennych obiektu adresata.
  • nazwy - zwraca listę wszystkich zmiennych globalnych.
  • procedury, proc - zwraca listę wszystkich procedur zdefiniowanych przez użytkownika u adresata.
  • właściwości, wsci - zwraca listę wszystkich słów z właściwościami.
  • zdarzenia - zwraca listę wszystkich zdarzeń adresata.
  • obiekty - zwraca listę wszystkich obiektów adresata. Na przykład strona pamięta listę wszystkich swoich żółwi, plansz, itp.

W poniższej tabelce słowo co, na przykład ukryj co lub ukryj [co1 co2 … ], oznacza dowolny element wymieniony powyżej.

Procedura Typ Opis
odkryj co
odkryj [co1 co2 ... ] 		P Odkrywa element co (lub elementy co1, co2 ...) aktualnego adresata w oknie pamięci.

To samo możemy osiągnąć zaznaczając elementy w oknie pamięci i wybierając opcję Element / Odkryj z menu.

? s1'odkryj s1'obiekty
? kamień'odkryj "prywatne'postać
? ż1'odkryj "ż1'zdarzenia
? ż5'odkryj [zdarzenie'gdyKlik prywatne'prędkość wspólne'ile]
.schowaj co
.schowaj [co1 co2 ... ] 		P Klasyfikuje element co (lub elementy co1, co2 ...) aktualnego adresata jako pierwotny, i chowa go głębiej w oknie pamięci. Te elementy są wyświetlone w oknie pamięci, tylko gdy opcja Widok / Pierwotne jest włączona.
ukryj co
ukryj [co1 co2 ... ] 		P Ukrywa element co (lub elementy co1, co2 ...) aktualnego adresata w oknie pamięci.

To samo możemy osiągnąć zaznaczając elementy w oknie pamięci i wybierając opcję Element / Ukryj z menu.

? s1'ukryj [obiekt'p1 obiekt'p2]
? kamień'ukryj "prywatne'postać
? ż1'ukryj "ż1'zdarzenia
ukryte F Wartością jest lista wszystkich ukrytych elementów aktualnego adresata (oraz ukrytych zmiennych globalnych i słów z właściwościami). Wszystkie elementy są precyzyjnie opisane z użyciem notacji z apostrofem.

? pokaż p1'ukryte
[procedura'przesuń procedura'stój zdarzenie'gdyKlik prywatne'prędkość]
zakryte wartość logiczna P zakryte "fałsz powoduje to samo co włączenie opcji Widok / Ukryte z menu okna pamięci. Wszystkie ukryte obiekty staną się czasowo widoczne w oknie pamięci.

zakryte "prawda działa analogicznie jak wyłączenie tej opcji menu.


Zamrażanie i odmrażanie obiektów

Każda pierwotna wizualna klasa posiada ustawienie zamrożony. Jeśli wartością tego ustawienia dla określonego obiektu jest prawda (bezpośrednio w obiekcie lub dla jego obiektu mojeMiejsce, itd.), wówczas nie można:

  • Otworzyć jego menu podręcznego klikając prawym przyciskiem myszy.
  • Przeciągać obiektu.
  • Zmieniać rozmiaru obiektu przy pomocy kombinacji Ctrl + prawy przycisk myszy.

Jeśli temu ustawieniu obiektu przypiszemy wartość prawda, obiekt oraz wszystkie obiekty funkcjonujące na nim (oraz wszystkie obiekty funkcjonujące na nich, itd.) staną się zamrożone - dopóki ich nie odmrozimy. Ta opcja jest wygodna, jeśli twórca projektu chce zabezpieczyć go przed niepożądanymi zmianami dokonywanymi przez użytkownika.

Zauważmy, że pasek narzędzi i przybornik malarski są tworzone i zamrażane natychmiast po uruchomieniu Imagine - można je używać, ale nie można łatwo dodawać lub usuwać przycisków z tych pasków.

Procedura | Typ | Opis
odmroź | P | Odmraża adresata. Oznacza to samo co ustalZamrożony "fałsz. Odmraża także wszystkie obiekty funkcjonujące na adresacie.
zamroź | P | Zamraża adresata. Oznacza to samo co ustalZamrożony "prawda. Zamraża także wszystkie obiekty funkcjonujące na adresacie.
zamrożony? | F | Wartością jest prawda jeśli adresat jest zamrożony (bezpośrednio lub pośrednio za pośrednictwem połączenia mojeMiejsce).


Procedury zarządzające obiektami

jest?
klasa?
maRodzica?
mojaNazwa
nazwy
obiekt?
obiekty
ostNazwa
pokażPamięć
potomne
procedury, proc
schowajPamięć
ustalStan
widaćPamięć?
zdarzenia
zmienne
zmieńMnie

Procedura | Typ | Opis
jest? klasa
jest? jednostka 		F Wartością jest prawda, jeśli aktualny adresat jest potomkiem danej klasy lub jednostki.

? pokaż ż1'jest? "Żółw
prawda
? pokaż ż1'jest? "ż1
prawda
? nowy "ż1 [nazwa Jaś poz [200 200]]
? pokaż Jaś'jest? "Żółw
prawda

klasa? słowo F Wartością jest prawda, jeśli aktualny adresat ma dostęp do klasy o nazwie słowo. Mniej formalnie, zwracana jest prawda, jeśli adresat "zna" klasę słowo.
Wszystkie klasy (jeśli nie zostały utworzone w Bazie) są pamiętane przez okno główne. Dlatego każda klasa musi mieć unikalną nazwę w obrębie okna i być dostępna z dowolnego obiektu okna.
maRodzica? | F | Wartością jest prawda, jeśli aktualny adresat ma rodzica (wszystkie obiekty za wyjątkiem Bazy mają rodzica).
mojaNazwa | F | Wartością jest nazwa aktualnego adresata.
nazwy | F | Wartością jest lista wszystkich zmiennych globalnych w formie [:A :B :C … ].
obiekt? słowo F Wartością jest prawda, jeśli aktualny adresat ma dostęp do obiektu (klasy lub jednostki) o nazwie słowo. Mniej formalnie, zwracana jest prawda, jeśli adresat "zna" obiekt słowo.

? pokaż obiekt? "ż1
prawda
? nowy "Plansza [nazwa p1 rozmiar [100 200]]
? p1'nowy "Żółw [nazwa Jaś]
? pokaż obiekt? "Jaś
prawda
obiekty F Wartością jest lista wszystkich obiektów adresata. Na przykład, strona pamięta swoje żółwie, plansze, suwaki, itd.

Dla sytuacji na poniższym rysunku wartością funkcji będzie:

? pokaż s1'obiekty
[obiekt'ż1 obiekt'prz1 obiekt'prz2 obiekt'p1 obiekt'ż2 obiekt'ż3 obiekt'ż4 obiekt'suw1 obiekt'suw2]
ostNazwa | F | Wartością jest nazwa ostatnio utworzonego obiektu – jeśli funkcja zostanie użyta w tym samym procesie co polecenie nowy (lub nowyObiekt). To oznacza, że należy obu procedur nowy i ostNazwa użyć w wierszu poleceń lub tym samym "kawałku obliczeń" (na przykład, w jednej procedurze).
pokażPamięć obiekt | P | Otwiera okno pamięci z zaznaczonym danym obiektem.
potomne | F | Wartością jest lista wszystkich bezpośrednich potomków adresata, tzn. wszystkich podklas i jednostek bezpośrednio wywodzących się z adresata.
procedury
Skrót:
proc 		F Wartością jest lista wszystkich procedur użytkownika zdefiniowanych dla adresata.
? pokaż ż1'procedury
[kwadrat trójkąt dom]
schowajPamięć | P | Zamyka okno pamięci. Można je zamknąć także naciskając klawisz F4 lub klikając w przycisk Pamięć paska narzędzi, jeśli okno jest aktualnie otwarte.
ustalStan ustawienia P Przedefiniowuje ustawienia, procedury, zdarzenia i zmienne aktualnego adresata zgodnie z daną listą ustawień.

? ż2'ustalStan [kierunek 90 zdarzenie'gdyKlik [np 50 pw 45]]

Polecenie ustalStan pozwala także zmienić nazwę obiektu:

? p1'ustalStan [rozmiar (rozmiar + [10 10]) nazwa gra kolTła :nowykolor]
widaćPamięć? | F | Wartością jest prawda, jeśli okno pamięci jest otwarte.
zdarzenia F Wartością jest lista wszystkich zdarzeń zdefiniowanych dla adresata:

? pokaż ż1'zdarzenia
[]
? ż1'ustalZdarzenie "gdyKlik [skok 20]
? ż1'ustalZdarzenie "gdyCiągniesz [pokaż poz]
? pokaż ż1'zdarzenia

[zdarzenie'gdyKlik zdarzenie'gdyCiągniesz]
zmienne | F | Wartością jest lista wszystkich zmiennych obiektu adresata, tzn. wszystkich standardowych ustawień, zmiennych prywatnych i wspólnych.
zmieńMnie | P | Otwiera dialog Zmień mnie aktualnego adresata. W dialogu tym można modyfikować ustawienia, zdarzenia, zmienne i procedury. Jeśli zamkniemy dialog klawiszem F12 lub klikniemy myszką w przycisk Ok, wszystkie zmiany zostaną zachowane.


Zdarzenia

gdyCiągniesz | gdyPrawyZwolniony
gdyCs | gdyPrzejmujeszZachowanie
gdyDwuKlik | gdyRuchJoysticka
gdyKlik | gdyStart
gdyKolizja | gdyŚrodkowyWciśnięty
gdyKomendaGłosowa | gdyŚrodkowyZwolniony
gdyKoniec | gdyTworzysz
gdyLewyWciśnięty | gdyUsuwaszZachowanie
gdyLewyZwolniony | gdyWciśnięty1PJ
gdyŁadujesz | gdyWciśnięty
gdyMyszJedzie | gdyZamykaszStronę
gdyMyszNajedzie | gdyZmianaListyStron
gdyMyszZjedzie | gdyZmianaPozGrania
gdyNarzędzie | gdyZmianaStanuGrania
gdyOdbierzesz | gdyZmieniasz
gdyOdbierzeszObiekt | gdyZmienionyStan
gdyOtwieraszStronę | gdyZwolniony1PJ
gdyPoZmianie | gdyZwolniony
gdyPrawyWciśnięty |

Zdarzenie składa się z nazwy i reakcji (treści). Nazwa określa warunek zajścia zdarzenia, na przykład gdyLewyWciśnięty - oznacza, że lewy przycisk myszy został naciśniety, lub gdyCs - że strona lub plansza została wyczyszczona.

Istnieją dwa rodzaje zdarzeń: predefiniowane (standardowe) i definiowane przez użytkownika. Jeśli zachodzi którekolwiek ze standardowych zdarzeń, zostaje sprawdzony obiekt, którego zdarzenie dotyczy (na przykład suwak, którego suwadło zostało przesunięte, żółw, który jest przeciągany, przycisk, który został wciśnięty, itd.). Jeśli ten obiekt posiada lub dziedziczy odpowiednie zdarzenie, staje się chwilowo adresatem. Reakcja na zdarzenie jest uruchamiana jako równoległy proces zdarzenia. Dla tego procesu lista aktywnych obiektów staje się pusta (chyba, że jest to zdarzenie gdyWciśnięty lub gdyZwolniony dla przycisku, wówczas brana jest lista aktywnych obiektów strony). Kiedy proces reakcji na zdarzenie zostanie zakończony, przywracany jest poprzedni adresat i lista aktywnych obiektów.

Jeśli użytkownik definiuje własne zdarzenie, jego zadaniem jest sprawdzenie warunków zajścia zdarzenia i wywołanie reakcji na zdarzenie poleceniem zróbZdarzenie.

Reakcja na zdarzenie jest listą instrukcji. Wykonywana jest analogicznie jak procedura bez parametrów. Może zawierać polecenia niech i lokalna do tworzenia zmiennych lokalnych procesu zdarzenia.

Poniższa tabelka zawiera nazwy wszystkich predefiniowanych (standardowych) zdarzeń, klasy, których może dotyczyć dane zdarzenie, oraz krótki opis warunków, przy zajściu których uruchamiana jest reakcja na zdarzenie. Obiekt może posiadać własne zdarzenie lub je dziedziczyć.

Nazwa | Dotyczy klas | Opis
gdyCiągniesz Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz Zachodzi, gdy myszka jest przeciągana nad obiektem z wciśniętym lewym przyciskiem.

Reakcja na zdarzenie jest wywoływana wielokrotnie, aż do momentu, gdy przycisk myszy będzie zwolniony lub mysz zjedzie z obiektu. Na czas działania zdarzenia obiekt staje się chwilowym adresatem.
gdyCs | Strona, Plansza | Zachodzi, gdy jest tworzona lub czyszczona strona lub plansza.
gdyDwuKlik | Strona, Plansza, Suwak, PoleTekstowe, Paseknarzędzi, Żółw, Odtwarzacz | Zachodzi, gdy nastąpi podwójne kliknięcie lewym przyciskiem myszy w obiekt. Obiekt staje się chwilowym adresatem.
gdyKlik | Strona, Plansza, Suwak, PoleTekstowe, SpecPrzycisk, Paseknarzędzi, Żółw, Odtwarzacz | Zachodzi, gdy nastąpi kliknięcie lewym przyciskiem myszy w obiekt. Obiekt staje się chwilowym adresatem.
gdyKolizja Żółw Jeśli chcemy, aby żółw A reagował na kolizję z żółwiem B (lub z większą liczbą żółwi), następujące warunki muszą być spełnione:
  • Żółw A musi mieć zdefiniowane (lub dziedziczyć) to zdarzenie.
  • Ustawienie dotyk żółwia A musi mieć wartość prawda.
  • Ustawienie dotyk żółwia B musi mieć wartość prawda.
  • Żółw A musi być w ruchu, inaczej kolizja nie zostanie wykryta.
  • Obydwa żółwie muszą być widoczne.

Jeśli powyższe warunki będą spełnione i żółw A uderzy w żółwia B, zostanie uruchomiona reakcja na zdarzenie. Chwilowym adresatem stanie się żółw A.

W tej sytuacji procedury nachodzące i nachodzą? mogą być użyte, aby określić w kogo żółw A uderzył.
gdyKomendaGłosowa Strona, OknoGłówne Zdarzenie zachodzi tylko wtedy, gdy jest zdefiniowane wcześniej ustawienie głosy okna głównego lub komendyGłosowe strony. W obu przypadkach wartością tych ustawień musi być menu głosów.

Jeśli Twój komputer rozpoznaje komendy głosowe i z odnajdzie frazę występującą w menu głosów aktywnej strony lub okna głównego, to działanie zależy od wartości odpowiadającej rozpoznanej frazie:

  • Jeśli jest to lista pusta [], to zajdzie zdarzenie gdyKomendaGłosowa. Reakcja na zdarzenie ma dostęp do rozpoznanej frazy za pośrednictwem zmiennej lokalnej :komendaGłosowa.
  • Jeśli jest to lista instrukcji, to jest ona uruchamiana zamiast zdarzenia gdyKomendaGłosowa.

Jeśli komputer rozpoznaje komendy głosowe, ale nie może dopasować żadnej frazy z menu głosów, to zdarzenie gdyKomendaGłosowa jest także uruchamiane. Wartością zmiennej lokalnej :komendaGłosowa jest w tym przypadku lista pusta [].

gdyKoniec | WWW | Zachodzi, gdy proces wyświetlania strony WWW jest zakończony.
gdyLewyWciśnięty | Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz | Zachodzi, gdy zostanie wciśnięty lewy przycisk myszy na obiekcie. Obiekt staje się chwilowym adresatem.
gdyLewyZwolniony | Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz | Zachodzi, gdy zostanie puszczony lewy przycisk myszy na obiekcie (pod warunkiem, że był wcześniej wciśnięty na tym obiekcie). Obiekt staje się chwilowym adresatem.
gdyŁadujesz | wszystkie klasy | Zachodzi dla obiektu po jego utworzeniu w następujących sytuacjach: wczytaniu z pliku, wczytaniu ze Schowka Windows poleceniami ładuj, ładprojekt, utworzeniu poleceniem klonuj lub opcją Wklej ze schowka menu podręcznego. Jeśli obiekt posiada zdefiniowane to zdarzenie lub je dziedziczy, to reakcja na zdarzenie jest uruchamiana, a obiekt staje chwilowym adresatem.
gdyMyszJedzie Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz

Zachodzi, gdy mysz jest przesuwana nad obiektem - bez wciśniętych przycisków myszy. Reakcja na zdarzenie zachodzi wielokrotnie, aż mysz zjedzie z obiektu lub przestanie się przesuwać. Obiekt staje chwilowym adresatem.

Niech ż1 będzie jedynym aktywnym żółwiem:

? pod
? ustalPostać
   [ustalKolMal 14 lw 90
    wielokąt [powtórz 3
             [np 20 pw 120 np 20]]
    pw 90
    ustalKolMal 12 koło 20]
? s1'ustalZdarzenie "gdyMyszJedzie
   [proszę "ż1 [ustalKierunek
     azymut pozMyszy np 2]]
gdyMyszNajedzie Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Przycisk, SpecPrzycisk, OknoGłówne, Odtwarzacz, WWW Zachodzi, gdy mysz najedzie na obiekt - bez wciśniętych przycisków myszy. Obiekt staje chwilowym adresatem.

? s1'ustalZdarzenie "gdyMyszNajedzie [ustalKolTła 15]
gdyMyszZjedzie Strona, Plansza, Żólw, Suwak, PoleTekstowe, PasekNarzędzi, Przycisk, SpecPrzycisk, OknoGłówne, Odtwarzacz, WWW Zachodzi, gdy mysz zjedzie z obiektu - bez wciśniętych przycisków myszy. Obiekt staje chwilowym adresatem.

? s1'ustalZdarzenie "gdyMyszZjedzie [ustalKolTła 0]
gdyNarzędzie SpecPrzycisk Kiedy naciśniemy specjalny przycisk to:
  • Alias aktywnySpecPrzycisk jest ustawiany na ten przycisk, więc można się odwoływać do tego przycisku za pośrednictwem tego aliasu.
  • Jeśli potem klikniemy dowolny obiekt na stronie różny od jakiegokolwiek przycisku, to kliknięty obiekt stanie się chwilowym adresatem i reakcja na zdarzenie gdyNarzędzie specjalnego przycisku zostanie uruchomiona.
  • Jeśli ustawienie jednokrotny ma wartość fałsz (jest to wartość domyślna), reakcja będzie uruchamiana wielokrotnie (po klikaniu w różne obiekty), aż nie wyłączymy specjalnego przycisku (klikając w niego ponownie). Jeśli jednokrotny ma wartość prawda, to specjalny przycisk wyłączy się sam po pierwszym zajściu zdarzenia.
  • Po wyłączeniu przycisku przywracany jest poprzedni adresat.
gdyOdbierzesz | Sieć | Zachodzi, gdy zostanie odebrana wiadomość od innego użytkownika sieci. Funkcja wiadomość daje treść wiadomości.
gdyOdbierzeszObiekt | Sieć | Zachodzi, gdy obiekt zostanie odebrany od innego użytkownika sieci. Polecenie odbierzObiekt akceptuje (tzn. tworzy) obiekt u aktualnego adresata.
gdyOtwieraszStronę | Strona | Załóżmy, że została zdefiniowana reakcja na zdarzenie gdyOtwieraszStronę dla strony s2. Jeśli strona s1 jest aktywna (tzn. wyświetlona na ekranie) i zmienimy stronę na s2 (dowolną metodą), s1 zostanie zastąpiona przez s2 i zajdzie zdarzenie gdyOtwieraszStronę z chwilowym adresatem s2.
gdyPoZmianie | Suwak | Podobne do zdarzenia gdyZmieniasz. Zachodzi jednak tylko raz, kiedy użytkownik puści lewy przycisk myszy (po ciągnięciu suwadła suwaka).
gdyPrawyWciśnięty Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz Zachodzi, gdy zostanie wciśnięty prawy przycisk myszy na obiekcie. Obiekt staje się chwilowym adresatem.

Zauważmy, że zdarzenie gdyPrawyWciśnięty jest predefiniowane w Bazie. Otwiera menu podręczne dla każdego obiektu - jeśli istnieje. Można je usunąć lub przedefiniować w Bazie, a także zdefiniować dla dowolnej klasy lub jednostki. Wówczas predefiniowane zdarzenie jest pokryte przez nowe dla klasy lub jednostki i wszystkich jej potomków.
gdyPrawyZwolniony | Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz | Zachodzi, gdy zostanie puszczony prawy przycisk myszy na obiekcie (pod warunkiem, że był wcześniej wciśnięty na tym obiekcie). Obiekt staje się chwilowym adresatem.
gdyPrzejmujeszZachowanie | wszystkie klasy | Zachodzi po tym, jak wzorzec zostanie połączony z adresatem poleceniem przejmijZachowanie. Zdarzenie jest pamiętane z obiektem użyczającym zachowanie, obiekt przejmujący - aktualny adresat - uruchomi je.
gdyRuchJoysticka | dowolny obiekt, który może być sterowany joystick'iem | Zachodzi, gdy którakolwiek wartość z X, Y lub Z dowolnego joystick'a zmieni się.
gdyStart | WWW | Zachodzi, gdy rozpoczyna się proces wyświetlania strony WWW.
gdyŚrodkowyWciśnięty | Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz | Zachodzi, gdy zostanie wciśnięty środkowy przycisk myszy na obiekcie. Obiekt staje się chwilowym adresatem.
gdyŚrodkowyZwolniony | Strona, Plansza, Suwak, PoleTekstowe, PasekNarzędzi, Żółw, Odtwarzacz | Zachodzi, gdy zostanie puszczony środkowy przycisk myszy na obiekcie (pod warunkiem, że był wcześniej wciśnięty na tym obiekcie). Obiekt staje się chwilowym adresatem.
gdyTworzysz | wszystkie klasy | Kiedy użytkownik tworzy nową jednostkę poleceniem nowy lub nowyObiekt, zachodzą wszystkie zdarzenia gdyTworzysz (rodzica obiektu i wszystkich jego przodków). Zdarzenia te zachodzą w kolejności od góry do dołu poczynając od klasy Baza, a kończąc na rodzicu. To postępowanie nie jest standardową strategią w środowisku Imagine. Zwykle uruchamiane jest tylko pierwsze znalezione zdarzenie.
gdyUsuwaszZachowanie | Przycisk, Strona, Plansza, Suwak, PoleTekstowe, SpecPrzycisk, PasekNarzędzi, Żółw, OknoGłówne | Zachodzi, gdy wzorzec ma być odłączony od adresata poleceniem usuńZachowanie. Zdarzenie jest pamiętane z obiektem użyczającym zachowanie, obiekt tracący zachowanie - aktualny adresat - uruchomi je.
gdyWciśnięty | Przycisk, SpecPrzycisk | Zachodzi, gdy zostanie wciśnięty przycisk (staje się on czasowym adresatem).
gdyWciśnięty1PJ
…
gdyWciśnięty4PJ 		dowolny obiekt, który może być sterowany joystick'iem Zachodzi, gdy zostanie wciśnięty pierwszy przycisk joystick'a. Zdarzenie wykona sterowanyObiekt, który staje się chwilowym adresatem.

To samo dotyczy pozostałych przycisków joystik'a.
gdyZamykaszStronę | Strona | Załóżmy, że została zdefiniowana reakcja na zdarzenie gdyZamykaszStronę dla strony s1. Jeśli strona s1 jest aktywna (tzn. wyświetlona na ekranie) i zmienimy stronę na s2 (dowolną metodą), zajdzie zdarzenie gdyZamykaszStronę z chwilowym adresatem s1. Zostanie uruchomiony proces zdarzenia, strona s1 zniknie, zostanie wyświetlona strona s2. Jeśli strona s2 ma zdefiniowane zdarzenie gdyOtwieraszStronę, to zostanie ono uruchomione z chwilowym adresatem s2.
gdyZmianaListyStron | OknoGłówne | Zachodzi, gdy lista stron okna głównego się zmienia – przez dodanie, usunięcie lub zmianę nazwy strony.
gdyZmianaPozGrania | Odtwarzacz | Zachodzi, gdy odtwarzacz zmieni pozycję w pliku medialnym (który jest aktualnie otwarty) po wykonaniu jednego z poleceń: krokWstecz, przewiń, krok i ustalPozGrania (zakładając, że nowa pozycja jest różna od poprzedniej). Odtwarzacz staje się chwilowym adresatem.
gdyZmianaStanuGrania | Odtwarzacz | Zachodzi, gdy odtwarzacz zmieni swój stan. Występują trzy różne stany odtwarzacza: gra, stop i przerwa. Reakcja na zdarzenie jest uruchamiana tylko wtedy, kiedy nowy stan jest różny od poprzedniego. Odtwarzacz staje się chwilowym adresatem.
gdyZmieniasz | Suwak, PoleTekstowe | Zachodzi, gdy zmienia się pozycja suwadła lub zawartość pola tekstowego. Reakcja na zdarzenie jest powtarzana wielokrotnie, przy każdej zmianie ustawienia zawartość (dla pola tekstowego) lub pozycjaSuwadła (dla suwaka).
gdyZmienionyStan | Sieć | Zachodzi, gdy stan połączenia sieciowego zmienia się (następuje połączenie, rozłączenie, wystąpi błąd połączenia, itp.). Funkcja stan zwraca nowy stan.
gdyZwolniony | Przycisk, SpecPrzycisk | Zachodzi, gdy zostanie zwolniony przełącznik lub specjalny przycisk (który był wcześniej wciśnięty). Przycisk staje się chwilowym adresatem.
gdyZwolniony1PJ
…
gdyZwolniony4PJ 		dowolny obiekt, który może być sterowany joystick'iem Zachodzi, gdy zostanie zwolniony pierwszy przycisk joystick'a. Zdarzenie wykona sterowanyObiekt, który staje się chwilowym adresatem.

To samo dotyczy pozostałych przycisków joystik'a.

Zobacz także:

Procedury zarządzające zdarzeniami


Procedury zarządzające zdarzeniami

mojeZdarzenie?
ustalZdarzenie
usuńZdarzenie, uszd
zdarzenia
zdarzenie?
zdarzenie
zróbZdarzenie

Dla wszystkich poniższych procedur nazwa oznacza nazwę zdarzenia wymienionego w tabeli standardowych zdarzeń lub nazwę zdarzenia zdefiniowanego przez użytkownika (definiujemy je poleceniem ustalZdarzenie).

Procedura | Typ | Opis
mojeZdarzenie? nazwa | F | Wynikiem jest prawda, jeśli aktualny adresat bezpośrednio posiada (nie dziedziczy) zdarzenie nazwa.
ustalZdarzenie nazwa [treść] P Definiuje zdarzenie dla aktualnego adresata. Pierwszy parametr określa nazwę zdarzenia (standardowego lub definiowanego przez użytkownika), drugi reakcję - jest to lista instrukcji, która będzie wykonana, kiedy zajdą warunki zdarzenia.

W treści reakcji na zdarzenie można używać polecenia niech do tworzenia (i zmiany wartości) zmiennych lokalnych.
usuńZdarzenie nazwa
Skrót:
uszd 		P Usuwa zdarzenie nazwa u aktualnego adresata. Jeśli adresat nie posiada bezpośrednio zdarzenia, to wystąpi błąd. Dziedziczone zdarzenia nie mogą być usuwane z poziomu potomka.
zdarzenia F Wartością jest lista wszystkich zdarzeń zdefiniowanych dla adresata:

? pokaż ż1'zdarzenia
[]
? ż1'ustalZdarzenie "gdyKlik [skok 20]
? ż1'ustalZdarzenie "gdyCiągniesz [pokaż poz]
? pokaż ż1'zdarzenia
[zdarzenie'gdyKlik zdarzenie'gdyCiągniesz]
zdarzenie nazwa F Wartością jest treść reakcji na zdarzenie nazwa aktualnego adresata – zdefiniowane bezpośrednio lub dziedziczone. Jeśli adresat nie posiada i nie dziedziczy takiego zdarzenia, to wartością jest lista pusta [].

? s1'ustalZdarzenie "gdyKlik
    [nowy "Żółw [poz (pozMyszy) postać piłka]]
? pokaż s1'zdarzenie "gdyKlik
[nowy "Żółw [poz ( pozMyszy ) postać piłka]]
? pokaż s1'zdarzenie "gdyDwuKlik
[]
zdarzenie? nazwa | F | Wartością jest prawda, jeśli aktualny adresat posiada lub dziedziczy zdarzenie nazwa.
zróbZdarzenie nazwa | P | Podobne do polecenia zrób. Zamiast wykonać listę instrukcji, zróbZdarzenie uruchamia reakcję na zdarzenie nazwa aktualnego adresata.


Obiekty-aliasy

adresat
aktywnySpecPrzycisk, aktsp
mojaStrona
mojeMiejsce
mojeOkno
mójRodzic
ostObiekt

To są specjalne obiekty, które umożliwiają odwoływanie się do innych obiektów w instrukcjach. Na przykład, dla wielu obiektów alias mojaStrona reprezentuje stronę, na której obiekty funkcjonują (bezpośrednio na tej stronie lub na planszy osadzonej na tej stronie), a mojeMiejsce reprezentuje miejsce (stronę, planszę lub pasek narzędzi) obiektów.

Można używać dowolnego aliasu w instrukcjach i wyrażeniach w miejscach, gdzie odwołujemy się do obiektu. Na przykład:

  • Jeśli żółw Jaś żyje na planszy p1, to Jaś'mojaStrona'mojaNazwa określa nazwę strony, na której Jaś (i plansza p1) funkcjonuje.
  • Jeśli ż1 jest żółwiem, to pisząc ż1'mojeMiejsce'ustalKolTła ż1'kolpis ustawiamy kolor tła strony lub planszy, na której żyje żółw ż1, na taki sam jak jego kolor pisaka.
Obiekt-alias | Opis
adresat | Zastępuje aktualnego adresata (obiekt, nie jego nazwę). Jeśli chcemy poznać nazwę aktualnego adresata należy użyć adresat'mojaNazwa.
aktywnySpecPrzycisk
Skrót:
aktsp 		Zastępuje aktualnie wciśnięty (aktywny) specPrzycisk. W danym momencie może być maksymalnie jeden aktywny specjalny przycisk. Jeśli wynikiem funkcji aktywnySpecPrzycisk? jest fałsz, tzn. że nie ma w danym momencie aktywnego specjalnego przycisku. Jeśli wartością jest prawda, to jest jeden. W tym przypadku procedura użytkownika może użyć tego aliasu, na przykład, aby poznać nazwę miejsca przycisku - aktywnySpecPrzycisk'mojeMiejsce'mojaNazwa.
mojaStrona | Zastępuje stronę, na której adresat funkcjonuje.
mojeMiejsce | Zastępuje miejsce aktualnego adresata.
mojeOkno | Zastępuje okno główne, ponieważ na razie jest to jedyne okno, jakie Imagine posiada.
mójRodzic | Zastępuje rodzica adresata. Jeśli rodzic nie istnieje (jest to prawda tylko dla Bazy), to wystąpi błąd. Funkcja maRodzica? informuje o tym, czy rodzic istnieje.
ostObiekt Zastępuje nazwę ostatnio utworzonego obiektu, ale tylko jeśli zostanie użyte w tym samym procesie co polecenie nowy (lub nowyObiekt) tworzące obiekt (na przykład, w jednej procedurze definiowanej przez użytkownika).

Wartość wyrażenia ostObiekt'mojaNazwa jest zawsze taka sama jak funkcji ostNazwa.

Przykłady użycia aliasów:

? nowy "Żółw [nazwa Piotr]
? pokaż Piotr'mojeMiejsce'mojaNazwa
s1

Tworzy żółwia o nazwie Piotr. Ponieważ nic więcej nie jest określone, polecenie nowy adresata (jest nim okno główne) utworzy żółwia na aktywnej stronie. Jej nazwę można łatwo określić - s1.

? nowy "Plansza
  [nazwa p1 poz [-200 200]
    rozmiar [400 400]
    kolTła 1]

Tworzy nową planszę na stronie s1. Kilka ustawień nowej planszy zostało podanych w poleceniu, np. nazwa p1.

? pokaż p1'mojeMiejsce'mojaNazwa
s1

Plansza p1 funkcjonuje na stronie s1.

? p1'nowy "Plansza
  [nazwa p2 poz [-150 150]
    rozmiar [300 300]
    kolTła 12]

Tworzy planszę p2, tym razem na planszy p1 (dlatego p1'nowy zostało użyte zamiast nowy).

? pokaż p2'mojeMiejsce'mojaNazwa
p1

Pokazuje nazwę miejsca planszy p2.

? pokaż p2'mojaStrona'mojaNazwa
s1

Pokazuje nazwę strony planszy p2.

? pokaż p2'mojeOkno'mojaNazwa
OknoGłówne

Pokazuje nazwę okna planszy p2.


Okno główne i środowisko

Kiedy uruchomimy Imagine zostanie wyświetlone okno główne. To okno spełnia wiele celów: z niego kontrolujemy całe środowisko, wpisujemy instrukcje i oglądamy wyniki.

Okno pamięci
Dialog "Zmień mnie"
Prawy przycisk myszy
Pasek narzędzi
Przybornik malarski
Okno przycisków
Okno pokazów
Edytor postaci

Okno główne jest standardowym oknem aplikacji Windows ze wszystkimi funkcjami: ramką, ikoną menu systemowego w lewym rogu paska tytułu, przyciskami minimalizuj, maksymalizuj (lub przywróć) w prawym rogu, paskiem menu z poleceniami (patrz poniższy rysunek), paskiem narzędzi z przyciskami do szybszego i wygodniejszego wykonywania niektórych poleceń, oraz obszarem roboczym, który jest podzielony na ekran tekstowy i graficzny.

Poziomy pasek dzieli obszar roboczy na dwa ekrany i może być przeciągany myszką. Nie określa rozmiarów ekranów, a jedynie jaka ich część jest widoczna.

Wiele klawiszy funkcyjnych posiada specjalne znaczenie:

  • F2 - Zapisz projekt jako…
  • Shift + F2 - Zapisz projekt
  • F3 - Otwórz projekt...
  • F4 - otwórz / zamknij okno pamięci
  • F5 - ekran graficzny
  • F6 - ekran dzielony
  • F7 - ekran tekstowy
  • F9 - pokaż okno poleceń lub wybór
  • F10 - pokaż / schowaj okno przycisków
  • F11 - otwórz okno pokazów
  • F12 - zatrzymaj wszystkie uruchomione procesy


Okno pamięci

Okno pamięci można otworzyć na kilka sposobów:

  • Klikając w przycisk Pokaż pamięć paska narzędzi.
  • Klikając w obiekt prawym przyciskiem myszy i wybierając opcję Pokaż w pamięci z menu podręcznego.
  • Wykonując polecenie:
    ? pokażPamięć nazwa_obiektu

Okno pamięci umożliwia eksplorację struktury projektu: jego stron i żółwi, elementów do budowania aplikacji takich jak plansze, pola tekstowe, przyciski, suwaki, itd. Część struktury jest zwykle ukryta. Jeśli podwójnie klikniemy w obiekt (lub dowolny jego wiersz ze zdarzeniami, zmiennymi obiektu lub procedurami użytkownika), to odpowiadający dialog Zmień mnie zostanie otwarty. W tym oknie dialogowym możemy definiować i modyfikować procedury, zmienne i zdarzenia obiektu.


Dialog "Zmień mnie"

Jeśli:

  • klikniemy w obiekt prawym przyciskiem myszy i wybierzemy opcję Zmień mnie z menu podręcznego, lub
  • wpiszemy w wierszu poleceń:

    ? ż1'zmieńMnie

to zostanie otwarty dialog Zmień mnie.

W tym okienku dialogowym występuje kilka zakładek. Zdarzenia, Zmienne i Procedury są obecne zawsze. Kilka innych jest wyświetlanych dla niektórych obiektów, na przykład Podstawy, Postać, Pisak i Pozycja dla żółwi, a Podstawy i Wygląd dla suwaków.

W tym dialogu można:

  • Łatwo przeglądać i modyfikować większość standardowych ustawień obiektu.
  • Przeglądać, tworzyć i modyfikować (dla danego obiektu) zdarzenia, zmienne prywatne i wspólne oraz procedury użytkownika.
  • Przeglądać, tworzyć i modyfikować zmienne globalne (w zakładce Zmienne globalne dialogu dla klasy Baza).

Jeśli zamkniemy dialog klawiszem Esc, to zmiany nie zostaną zachowane.


Prawy przycisk myszy

Zobacz:


Kliknięcie w obiekt

Klikając prawym przyciskiem myszy w obiekt otwieramy jego menu podręczne, które zawiera bardzo przydatne polecenia rozpoznawane przez obiekt, na przykład Zmień mnie, Redaguj postać, Pokaż w pamięci. To, że menu podręczne otworzy się, kiedy klikniemy w obiekt prawym przyciskiem myszy, wynika z tego, że zostało predefiniowane zdarzenie gdyPrawyWciśnięty dla klasy Baza. Dla każdej klasy menu podręczne jest zdefiniowane w jej zmiennej wspólnej menuKontekstowe.

Jeśli wybierzemy opcję Zmień mnie z menu podręcznego obiektu, to zostanie otwarty jego dialog Zmień mnie. Jeśli wybierzemy opcję Pokaż w pamięci, to otworzy się okno pamięci.


Ciągnięcie z klawiszem Shift

Jeśli przytrzymamy klawisz Shift i wciśniemy prawy przycisk myszy na obiekcie, to możemy go przeciągać w obrębie jego miejsca. To samo można osiągnąć wybierając opcję Przesuń mnie z menu podręcznego obiektu i potem przesunąć obiekt myszką (bez wciskania żadnego przycisku myszy). Jeśli przesuwamy w ten sposób żółwia, nigdy nie rysuje on linii.


Ciągnięcie z klawiszem Ctrl

Jeśli przytrzymamy klawisz Ctrl i wciśniemy prawy przycisk myszy na obiekcie w jego prawym dolnym rogu, to możemy zmienić jego rozmiar. To jest możliwe dla podstawowych obiektów, takich jak żółwie, suwaki, plansze, przyciski, pola tekstowe. Jeśli zmienimy w ten sposób rozmiar wizerunku żółwia, w rzeczywistości przedefiniujemy bezpośrednio na ekranie jego ustawienie skalaPos.


Kliknięcie w ekran tekstowy

Jeśli klikniemy prawym przyciskiem myszy w ekran tekstowy, to wyświetli się menu podręczne, z którego można wybrać jeden z kilku standardowych wyborów.


Pasek narzędzi

Pasek narzędzi zawiera przyciski do otwierania i zapisywania projektów, do otwierania pokazów, do otwierania i zamykania okna pamięci, tworzenia nowych żółwi, plansz, przycisków, pól tekstowych, odtwarzaczy multimediów, suwaków, przeglądarek stron WWW i połączeń internetowych, wyświetlania i chowania przybornika malarskiego oraz kontrolowania procesów. Dalsza część paska narzędzi dotyczy stron - zawiera przycisk Nowa strona i ikony dla każdej strony projektu. Jedna z nich jest podświetlona - reprezentuje aktywną stronę.

Pasek narzędzi okna głównego jest jednostką klasy PasekNarzędzi. Elementy, które zawiera, są to przyciski i specjalne przyciski - jednostki klasy Przycisk i klasy SpecPrzycisk. Wartością jego ustawienia zamrożony jest prawda, więc nie można otworzyć jego (ani jego przycisków) menu podręcznego.

Wszystkie przyciski paska narzędzi są szare (za wyjątkiem ikony reprezentującej aktywną stronę). Tylko, kiedy kursor myszy najedzie na przycisk, staje się on kolorowy i aktywny.

Zarówno dla paska narzędzi, jak i przybornika malarskiego, domyślną wartością ich ustawienia wyrównanie jest góra. Możemy jednak wykonać polecenie:

? Narzędzia'ustalWyrównanie "lewo

(lub prawo, dół) zmieniając w ten sposób położenie paska narzędzi w oknie głównym.


Przybornik malarski

Przybornik malarski można otworzyć (i schować) wybierając przycisk Pokaż / Schowaj przybornik paska narzędzi lub opcję Widok / Przybornik menu głównego. Zawiera przyciski dla: czyszczenia, ładowania, zapisywania i modyfikowania tła, zaznaczania obszaru, zamalowywania aktualnym kolorem (wybór koloru - prawa strona przybornika), odręcznego rysowania, kreślenia linii, prostokątów, elips (także zamalowanych prostokątów i owali - jeśli klikniemy drugi raz w przycisk Prostokąt lub Elipsa, zmieni się on na Zamalowany prostokąt lub Owal), rozpylania atramentu oraz wycierania. Następna część przybornika malarskiego umożliwia wybór grubości linii oraz koloru. Można wybrać jeden z 18 kolorów, dla każdego z nich jeden z 12 poziomów jasności.

Jeśli klikniemy w wybrany kolor przybornika malarskiego, to włączy się narzędzie weź kolor. Można teraz kliknąć w stronę lub planszę i w ten sposób wybrać aktualny kolor. Jeśli to nie jest żaden z 18 kolorów (ani jego odcieni), to suwak poziomu jasności zniknie, a wybrany kolor pokazuje kliknięty kolor i podpowiedź wyświetla jego kod RGB.


Okno przycisków

To jest okienko, które zwykle zawiera 15 lub 30 przycisków. Dla każdego przycisku można zdefiniować jego rozmiar, pozycję w obrębie okna przycisków, tekst lub grafikę (postać) na przycisku, oraz reakcję po kliknięciu w przycisk. Można to zrobić używając procedur defprzy i przyciski. Rozmiar i pozycję całego okna przycisków określamy poleceniem ustalRozmiarPrzycisków. Otwieramy i zamykamy okno poleceniami pokażPrzyciski i schowajPrzyciski.

W środowisku można wykonywać bezpośrednio następujące operacje związane z oknem przycisków:

  • Otwierać i zamykać okno naciskając klawisz F10 (tylko, jeśli kursor znajduje się w wierszu poleceń - aby to osiągnąć, należy kliknąć lewym przyciskiem myszy w wierszu poleceń).
  • Zmieniać położenie całego okna przeciągając myszką jego pasek tytułu.
  • Zmieniać rozmiar przeciągając myszką róg okna lub ramkę.
  • Przemieszczać przycisk w obrębie okna trzymając klawisz Shift i przeciągając przycisk myszką z wciśniętym prawym przyciskiem myszy.
  • Zmieniać rozmiar przycisku trzymając klawisz Ctrl i przeciągając prawy dolny róg przycisku myszką z wciśniętym prawym przyciskiem myszy.
  • Definiować rozmiar, pozycję, tekst na przycisku, styl i reakcję klikając prawym przyciskiem myszy w przycisk. Spowoduje to otwarcie dialogu Nowy tekst dla przycisku N.

Kiedy zdefiniowany przycisk zostanie kliknięty lewym przyciskiem myszy, jego reakcja (tzn. instrukcja lub instrukcje związane z nim) zostanie skopiowana do wiersza poleceń (kopiowanie można wyłączyć w dialogu Nowy tekst dla przycisku) i wykonana. Jeśli chcemy tylko skopiować reakcję do wiersza poleceń (bez uruchamiania) należy wyłączyć opcję Wraz z Enter w dialogu Nowy tekst dla przycisku.

Pełna definicja wszystkich przycisków jest zapisywana razem z projektem.

Dialog Nowy tekst dla przycisku N pozwala określić wszystkie detale związane z przyciskiem N: tekst na nim, instrukcje stanowiące reakcję oraz radę (podpowiedź, która pojawi się po najechaniu myszką na przycisk). Można rozszerzyć dialog klikając w przycisk Więcej.... W rozszerzonym dialogu można określić styl przycisku (tekst, grafika, ukryty), jego pozycję, rozmiar oraz postać, jaka będzie użyta dla przycisku graficznego. Postać może składać się z dwóch faz, druga faza jest wyświetlana kiedy kursor myszy znajdzie się nad przyciskiem lub przycisk zostanie wybrany.

Zobacz także:


Procedury zarządzające oknem przycisków

defprzy
pokażPrzyciski
przyciski
rozmiarPrzycisków, rozprzy
schowajPrzyciski, sprz
ustalRozmiarPrzycisków, urp

Procedura | Typ | Opis
defprzy [definicja … ]
(defprzy liczba definicja)
defprzy [] 		P gdzie definicja oznacza definicję przycisku, a liczba numer przycisku z zakresu od 1 do 30.

Ustala tekst/grafikę na przycisku oraz reakcję po kliknięciu w przycisk. Pierwsza definicja dotyczy pierwszego przycisku, druga definicja drugiego przycisku, itd. Wariant polecenia z dwoma parametrami dotyczy definiowania jednego przycisku o danym numerze (parametr liczba). Jeśli parametrem jest lista pusta [], usuwane są wszystkie definicje przycisków, a ich rozmiary i położenie przywracane są do standardowych ustawień.

Polecenie defprzy może być używane niezależnie od tego, czy okno przycisków jest widoczne, czy schowane. Można także:

  • Definiować lub przedefiniować przycisk klikając w niego prawym przyciskiem myszy.
  • Przesunąć przycisk w obrębie okna przycisków trzymając klawisz Shift i ciągnąc go myszką z wciśniętym prawym przyciskiem myszy.
  • Zmienić rozmiar przycisku trzymając klawisz Ctrl i ciągnąc go za prawy dolny róg myszką z wciśniętym prawym przyciskiem myszy.
pokażPrzyciski | P | Wyświetla okno przycisków na ekranie.
przyciski
(przyciski liczba ) 		F gdzie liczba jest numerem przycisku z zakresu od 1 do 30.

Jeśli funkcja nie ma parametrów wynikiem jest lista wszystkich definicji przycisków.

Jeśli funkcja ma jeden parametr wynikiem jest definicja przycisku o danym numerze.

Wszystkie puste definicje na prawym końcu listy są pomijane.
rozmiarPrzycisków
Skrót:
rozprzy 		P Wynikiem jest lista 5 elementów określających aktualną pozycję, rozmiar i tytuł okna przycisków.

Lista jest postaci [X Y szer wys  tekst ], gdzie X i Y są to bezwzględne współrzędne lewego górnego rogu w oknie głównym, a szer i wys określają szerokość i wysokość (wnętrza okna - bez paska tytułu). Piąty element jest tytułem okna przycisków.

Jeśli nagłówek jest ukryty (okno przycisków nie może być wtedy przesuwane myszką), wynikiem jest lista postaci [X Y szer wys -].
schowajPrzyciski
Skrót:
sprz 		P Chowa okno przycisków na ekranie.
ustalRozmiarPrzycisków
[X Y szer wys tekst ]
ustalRozmiarPrzycisków
[X Y szer wys -]
ustalRozmiarPrzycisków
[X Y szer wys []]
ustalRozmiarPrzycisków []
Skrót:
urp 		P gdzie X, Y, szer i wys są liczbami.

Ustala pozycję, rozmiar i tytuł okna przycisków. Liczby X i Y są to bezwzględne współrzędne lewego górnego rogu w oknie głównym, a szer i wys określają szerokość i wysokość (wnętrza okna - bez paska tytułu).

Jeśli dana lista zawiera poza tym tekst, będzie on tytułem okna przycisków. Jeśli piąty element jest znakiem –, pasek tytułu będzie ukryty (okno przycisków nie może być wtedy przesuwane myszką). Jeśli piąty element jest listą pustą [], tytuł okna będzie pusty.

Jeśli parametrem polecenia ustalRozmiarPrzycisków jest lista pusta [], to zostanie przywrócona domyślna pozycja oraz rozmiar okna przycisków. Żeby przekształcić pozycję okna do współrzędnych kartezjańskich strony, należy wykonać: pokaż s1'naObiekt element [1 2] rozmiarPrzycisków

Jeśli zamiast X, Y, szer lub wys, damy listę pustą [], to odpowiadająca wartość nie zostanie zmieniona.

Przykłady:

? defprzy []
? defprzy [[cs] [[idź][np 100 pw 90]] [ustalKolPis]]
? pokaż przyciski
[[[cs]] [[idź] [np 100 pw 90]] [[ustalKolPis]]]
? pokaż (przyciski 2)
[[idź] [np 100 pw 90]]
? defprzy nak [ustalGrubość] przyciski
? pokaż przyciski
[[[cs]] [[idź] [fd 100 rt 90]] [[ustalKolPis]] [[ustalGrubość]]]


Definicja przycisku

Jest to lista, która zawiera wszystkie informacje dotyczące przycisku w oknie przycisków. Może mieć jeden z następujących formatów:

Format | Opis
[ ] Pusta lista oznacza, że przycisk jest niezdefiniowany, tzn. nie ma tekstu/grafiki na przycisku, ma standardowy rozmiar i nie jest związana z nim żadna reakcja.
[[ instrukcja1 … instruckcjaN ]] Lista jednej lub większej liczby instrukcji z ich danymi. Procedury na liście mogą być pierwotne lub zdefiniowane przez użytkownika. Tekst na przycisku będzie tekstem reakcji. Na przykład:
[[np 100 pw 90]]

[[mojaProcedura "a "b]]

są poprawnymi definicjami. Jeśli tekst będzie za długi zostanie obcięty do miejsca dostępnego na przycisku. Jeśli przycisk postaci [[instrukcja1 … instrukcjaN]] zostanie wciśnięty, to instrukcje zostaną skopiowane do wiersza poleceń i wykonane (chyba, że ta opcja zostanie wyłączona w dialogu Nowy tekst dla przycisku… ).
[[polecenie]] | Nazwa polecenia pierwotnego bez parametrów. Jeśli przycisk z taką definicją zostanie kliknięty, to otworzy się odpowiadający poleceniu wybór.
[ tekst1 [instrukcje … ]]
[ tekst1 [instrukcje … ]
[X Y szer wys]]
[ tekst1 [instrukcje … ]
[X Y szer wys] tekst2 ]
[ tekst1 [polecenie]]
[ tekst1 [polecenie][X Y szer wys]]
[ tekst1 [polecenie][X Y szer wys] tekst2 ] 		gdzie tekst1 będzie tekstem na przycisku.

Drugi element jest listą instrukcji określających reakcję przycisku. Jeśli ten element jest poleceniem bez parametrów, to działanie przycisku będzie analogiczne, jak opisane powyżej.

Opcjonalny trzeci element określa pozycję [X Y] lewego górnego rogu przycisku w obrębie wnętrza (bez paska tytułu) okna przycisków. Liczby szer i wys określają szerokość i wysokość przycisku.

Jeśli przycisk zostanie wciśnięty, to instrukcje zostaną skopiowane do wiersza poleceń i wykonane (chyba, że ta opcja zostanie wyłączona w dialogu Nowy tekst dla przycisku… ).

Opcjonalny czwarty element tekst2 określa podpowiedź wyświetlaną po najechaniu myszką na przycisk.

Przykłady:

[kwadrat [powtórz 4 [np 100 pw 90]]]

[[Naciśnij mnie!][cs ustalGrubość 2 ZróbTo][1 45 60 45]]
[ postać [instrukcje … ]]
[ postać [instrukcje … ]
[X Y szer wys]]
[ postać [instrukcje … ]
[X Y szer wys] tekst2 ] 		gdzie postać jest nazwą pliku LGF (lub innego rozpoznawanego pliku graficznego- na przykład "Flagi, "Flagi.LGF lub "Domy.lgw) lub zmiennej, której wartością jest postać (na przykład :Samochody) lub bezpośrednio postaci.

Opcjonalny trzeci i czwarty element mają znaczenie takie same, jak opisane powyżej.

Postać może składać się z 1 lub 2 faz. Jeśli zawiera tylko jedną fazę, to będzie ona użyta do wyświetlania obydwu stanów przycisku, wciśniętego i zwolnionego. Jeśli składa się z dwóch faz, to druga będzie użyta kiedy mysz znajdzie się nad przyciskiem lub kiedy przycisk zostanie wciśnięty.
[ cokolwiek cokolwiek [0 0 0 0]] | Jeśli trzeci element jest listą złożoną z czterech zer, to przycisk będzie ukryty i nie może być wciśnięty.


Okno pokazów

Jeśli wybierzemy opcję Plik / Otwórz pokaz… menu głównego lub klikniemy myszką w odpowiedni przycisk paska narzędzi, to zostanie otwarty dialog Pokazy. Zawiera on wszystkie projekty zapisane w podfolderze Pokazy.

Jeśli ten folder zawiera jakieś podfoldery, to zostaną one także wyświetlone. Jeśli pokaz posiada zmienną prywatną ikona zdefiniowaną w oknie głównym, to będzie ona użyta jako ikona projektu w oknie Pokazy. Musi być postacią nie większą niż 64 na 64 punkty (w przeciwnym przypadku zostanie przeskalowana do rozmiaru 64 na 64).


Edytor postaci

Edytor postaci jest użytecznym edytorem bitmap i animacji. Pracując w Imagine, Edytor postaci umożliwia tworzenie lub modyfikowanie wizerunków żółwi. Ponadto pozwala tworzyć i modyfikować bitmapy Windows używane jako tło w środowisku Imagine lub poza nim.

Edytor postaci dostarcza szereg narzędzi do rysowania (w tym podstawowych figur geometrycznych takich jak odcinki, okręgi, prostokąty, elipsy, owale oraz wygładzania ich), malowania, pisania tekstów dowolną czcionką, stylem, kolorem i rozmiarem na grafice.

Może być także używany do edytowania standardowych ikon i kursorów Windows, współpracuje ze schowkiem Windows. Umożliwia przeskalowanie, obracanie i kolorowanie rysunków. Dostarcza także wygodnych narzędzi do tworzenia i modyfikowania animacji lub animowanych filmów, tzn. sekwencji klatek. Przy pomocy Edytora postaci można wykonywać także inne zaawansowane operacje graficzne.

Edytor postaci współpracuje z Imagine - otwiera się umożliwiając modyfikację odpowiedniego elementu kiedy:

  • Wybierzemy opcję Redaguj tło po kliknięciu w przycisk Tło przybornika malarskiego.
  • Wybierzemy opcję Redaguj postać z menu podręcznego żółwia lub Redaguj obraz z menu podręcznego przycisku (specjalnego przycisku).
  • Otworzymy dialog Zmień mnie żółwia i klikniemy w wizerunek (na zakładce Podstawy lub Postać).
  • Otworzymy dialog Zmień mnie dla przycisku lub specjalnego przycisku i klikniemy w obraz (na zakładce Wygląd).
  • Jeśli obiekt posiada obrazkową zmienną prywatną lub wspólną, to można otworzyć dialog Zmień mnie i wybrać zakładkę Zmienne, następnie podwójnie kliknąć w obraz. Poniższe polecenie od razu otwiera ten dialog na zakładce Zmienne:
    ? nazwa_obiektu'redaguj "prywatne_lub_wspólne'nazwa_zmiennej.
  • Otworzymy dialog Zmień Baza na zakładce Zmienne globalne i klikniemy w globalną zmienną obrazkową.

Żeby zamknąć Edytor postaci należy nacisnąć klawisz F12 lub wybrać opcję menu Plik / Zapisz i Zakończ. Powrócimy wtedy do środowiska Imagine ze zmodyfikowanym elementem graficznym.


Kolejność obiektów na ekranie

kolż
naFront
naTył

Kiedy zostanie utworzonych kilka obiektów w projekcie, mogą one nachodzić na siebie. Zachodzą wówczas dwie możliwości:

  • Mają różny wiek. Im młodszy obiekt (tzn. później utworzony), tym mniej obiektów go przykrywa.
  • Różne obiekty należą do różnych warstw. Jeśli, na przykład, utworzymy przeglądarkę WWW i żółwia, to żółw nigdy nie będzie nad przeglądarką, dlatego że przeglądarki należą do warstwy, która jest zawsze nad żółwiami.

Warstwy obiektów (od tyłu do frontu) są następujące:

  • strona - zupełnie z tyłu.
  • żólwie i pola tekstowe (kiedy nie są w trybie edycji).
  • przyciski, specjalne przyciski i suwaki.
  • plansze, przeglądarki WWW, odtwarzacze i pola tekstowe (kiedy są w trybie edycji).

Obiekty z jednej warstwy nie mogą być przesunięte do innej warstwy, ale można zmieniać kolejność obiektów w obrębie jednej warstwy. Służą do tego polecenia kolż, naFront i naTył - patrz poniżej. Ponadto można kliknąć w obiekt prawym przyciskiem myszy i wybrać z menu podręcznego opcję Przenieś na front.

Jeśli klikniemy w pasek tytułu przeglądarki WWW lub odtwarzacza, to dany obiekt jest automatycznie przesuwany na front.

Procedura | Typ | Opis
kolż | P | Modyfikuje kolejność żółwi na liście wszystkie i ich miejscu (tzn. stronie lub planszy).
naFront | P | Aktualny adresat zostanie przesunięty na front przed inne obiekty tej samej warstwy. To polecenie jest zdefiniowane dla żółwi, pól tekstowych, plansz, suwaków, przeglądarek WWW, odtwarzaczy, przycisków i specjalnych przycisków.
naTył | P | Aktualny adresat zostanie przesunięty na tył za inne obiekty tej samej warstwy. To polecenie jest zdefiniowane dla żółwi, pól tekstowych, plansz, suwaków, przeglądarek WWW, odtwarzaczy, przycisków i specjalnych przycisków.


Układ współrzędnych

Używane są dwa układy współrzędnych: układ kartezjański i układ bezwzględnych współrzędnych systemu Windows. Współrzędne kartezjańskie wykorzystywane są tylko na stronach i planszach. Baza, okno główne i pasek narzędzi używają współrzędnych bezwzględnych. Wszystkie pozostałe obiekty korzystają z układu współrzędnych swojego miejsca. Dlatego, na przykład, żółwie zawsze używają układu kartezjańskiego stron lub plansz. Informacje na temat, jak pozycja jest interpretowana w obrębie każdej klasy obiektów, oraz jak dokonać konwersji pomiędzy dwoma układami współrzędnych, można znaleźć w poniższych sekcjach.

Układ współrzędnych Bazy
Układ współrzędnych strony i planszy
Układ współrzędnych okna głównego i paska narzędzi
Układ współrzędnych pozostałych obiektów


Układ współrzędnych Bazy

naAbsolutne, naabs
naEkran, naekr
naKartezjańskie, nakar
naObiekt, naobi
pozMyszy
ustalPozMyszy, upm

W Bazie wszystkie pozycje (dane i wyniki procedur pozMyszy, poz, ustalPoz, pozabs, ustalPozAbs, ustalPozMyszy itd.) są wyrażane w bezwzględnych współrzędnych ekranowych. Odpowiadające pary procedur (na przykład poz i pozabs) zawsze interpretują pozycję tak samo - w układzie bezwzględnych współrzędnych ekranowych. Dlatego konwersja funkcjami takimi jak naEkran i naObiekt dla Bazy nie jest użyteczna. Początek układu współrzędnych [0 0] znajduje się w lewym górnym rogu ekranu. W bezwzględnym układzie współrzędnych x-owa współrzędna zwiększa się od lewej do prawej, a y-owa współrzędna od góry do dołu.

Procedura Typ Opis
naAbsolutne punkt
Skrót:
naabs 		F Wynikiem jest ten sam punkt.
naEkran punkt
Skrót:
naekr 		F Wynikiem jest ten sam punkt.
naKartezjańskie punkt
Skrót:
nakar 		F Wynikiem jest ten sam punkt.
naObiekt punkt
Skrót:
naobi 		F Wynikiem jest ten sam punkt.
pozMyszy F Wynikiem jest aktualna pozycja kursora myszy wyrażona w bezwzględnych współrzędnych ekranowych.

Poniższe dwie funkcje dają identyczny wynik (pierwsza adresuje Bazę, aby określić aktualną pozycję myszy, druga adresuje okno główne określając pozycję myszy z jego punktu widzenia i konwertując ją do układu bezwzględnych współrzędnych ekranowych):

? pokaż Baza'pozMyszy
[293 371]
? pokaż naEkran OknoGłówne'pozMyszy
[293 371]
ustalPozMyszy punkt
Skrót:
upm 		P Przesuwa kursor myszy na dany punkt (wyrażony w bezwzględnych współrzędnych ekranowych).

? Baza'ustalPozMyszy [100 100]


Układ współrzędnych strony i planszy

naAbsolutne, naabs
naEkran, naekr
naKartezjańskie, nakar
naObiekt, naobi
pozMyszy
ustalPozMyszy, upm

Strony i plansze używają kartezjańskiego układu współrzędnych. Jego początkiem [0 0] jest środek strony lub planszy. Można go przedefiniować poleceniem ustalPoczątek. W kartezjańskim układzie współrzędnych x-owa współrzędna zwiększa się od lewej do prawej, a y-owa współrzędna od dołu do góry.

Możemy także wyrazić współrzędne punktu w układzie bezwzględnych współrzędnych strony lub planszy. Jego początek znajduje się w lewym górnym rogu. Ponadto, oprócz funkcji funkcji poz zwracającej pozycję żółwia, możemy zapytać się o jego bezwzględne współrzędne funkcją pozabs.

Procedura | Typ | Opis
naAbsolutne punkt Skrót: naabs | F | Wynikiem są zamienione współrzędne kartezjańskie danego punktu adresata na współrzędne bezwzględne adresata.
naEkran punkt Skrót: naekr | F | Wynikiem są zamienione współrzędne kartezjańskie danego punktu adresata na współrzędne bezwzględne ekranu.
naKartezjańskie punkt Skrót: nakar | F | Wynikiem są zamienione bezwzględne współrzędne danego punktu adresata na współrzędne kartezjańskie adresata.
naObiekt punkt Skrót: naobi | F | Wynikiem są zamienione bezwzględne współrzędne ekranowe danego punktu na współrzędne kartezjańskie adresata.
pozMyszy | F | Wynikiem jest aktualna pozycja kursora myszy wyrażona we współrzędnych kartezjańskich strony lub planszy. Kiedy przeciągamy planszę w obrębie innej planszy lub strony, jej kartezjański układ współrzędnych "przesuwa" się razem z nią. Jeśli zmieniamy rozmiar planszy lub strony, obiekty funkcjonujące na planszy lub stronie nie zmieniają swojej pozycji. Początek układu współrzędnych nie będzie już zlokalizowany w środku planszy lub strony. Przykład: Niech prz1 będzie przyciskiem na stronie s1. Wyrażenie s1'pozMyszy - prz1'poz określa przesunięcie kursora myszy od lewego górnego rogu przycisku.
ustalPozMyszy punkt Skrót: upm | P | Przesuwa kursor myszy na dany punkt wyrażony we współrzędnych kartezjańskich strony lub planszy.

Przykłady:

; Utwórzmy planszę p1 na stronie s1.
; Na planszy p1 utwórzmy żółwia ż2.
? proszę [ż2][ustalKolPis 12 ustalGrubość 4 ustalStylZakresu "okno]
? ż2'ustalPrzeciąganie "prawda
? proszę [ż1] [pod ustalGrubość 4]
? ż1'bezKońca [napoz s1'naObiekt p1'naEkran ż2'poz]
? ż1'opu
; Narysujmy cokolwiek ciągnąc myszką żółwia ż2, potem:
? proszę [ż1 ż2][sż]
; A teraz zgadnijmy co jest pod planszą p1?


Układ współrzędnych okna głównego i paska narzędzi

Okno główne i paski narzędzi używają bezwzględnego układu współrzędnych systemu Windows. Początek układu [0 0] znajduje się:

  • W lewym górnym rogu obszaru roboczego okna głównego (tzn. pod paskiem tytułu, paskiem menu i paskami narzędzi).
  • W lewym górnym rogu paska narzędzi.
Procedura Typ Opis
naAbsolutne punkt
Skrót:
naabs 		F Wynikiem jest ten sam punkt.
naEkran punkt
Skrót:
naekr 		F Wynikiem są zamienione bezwzględne współrzędne danego punktu adresata na współrzędne bezwzględne ekranu.
naKartezjańskie punkt
Skrót:
nakar 		F Wynikiem jest ten sam punkt.
naObiekt punkt
Skrót:
naobi 		F Wynikiem są zamienione bezwzględne współrzędne ekranowe danego punktu na współrzędne bezwzględne adresata.
pozMyszy
 F Wynikiem jest aktualna pozycja kursora myszy wyrażona w bezwzględnych współrzędnych okna głównego lub paska narzędzi.
ustalPozMyszy punkt
Skrót:
upm 		P Przesuwa kursor myszy na dany punkt wyrażony w bezwzględnych współrzędnych okna głównego lub paska narzędzi.


Układ współrzędnych pozostałych obiektów

Ta sekcja dotyczy układów współrzędnych żółwi, przycisków, specjalnych przycisków, pól tekstowych, suwaków, przeglądarek WWW i odtwarzaczy.

Wszystkie wizualne elementy wykorzystują układ współrzędnych swojego miejsca, na którym funkcjonują (tzn. strony lub planszy). Dla tych elementów procedury pozMyszy i ustalPozMyszy działają tak samo jak mojeMiejsce'pozMyszy i mojeMiejsce'ustalPozMyszy.

Przykład:

Utwórzmy planszę p1. Niech żółw ż1 żyje na stronie s1, a ż2 na planszy p1. Następnie napiszmy:

? ż2'ustalStylZakresu "okno
? ż2'bezKońca [napoz pozMyszy]

Żółw ż2 będzie teraz naśladować ruchy kursora myszy. Będzie jednak widoczny tylko na planszy p1 i tylko na tym obszarze będzie rysował. Zatrzymajmy proces i spróbujmy wykonać poniższe instrukcje:

? ustalKolTła "niebieski
? p1'ustalKolTła "biały
? proszę "ż2 [ustalGrubość 12 ustalKolPis "czarny]
? proszę "ż1 [ustalGrubość 12 ustalKolPis "biały ustalStylZakresu "okno]
? ż1'bezKońca [napoz pozMyszy] ż2'bezKońca [napoz pozMyszy]

Uruchomione dwa procesy powodują, że oba żółwie ż1 i ż2 podążają za kursorem myszy. Rysunki żółwia ż1 są widoczne poza planszą p1 (i pod nią), żółwia ż2 tylko na planszy p1. Rezultat takiego rysowania jest interesujący. Na rysunku jest widoczny tylko żółw ż1. Żółw ż2 opuścił swoją planszę i jest niewidoczny - znajduje się na tej samej pozycji, co żółw ż1. Jeśli przesuniemy kursor myszy na planszę p1, to będziemy widzieć tylko żółwia ż2. Żółw ż1 będzie na tej samej pozycji pod planszą.

Teraz zatrzymajmy procesy klikając w przycisk Zastopuj wszystkie procesy paska narzędzi i napiszmy:

? cs
? p1'cs
? proszę [ż1 ż2] [ustalGrubość 3]
? ż1'bezKońca [napoz pozMyszy ż2'napoz 0.5 * pozMyszy]

Uruchomiony proces bez końca dla żółwia ż1 powoduje, że podąża on za kursorem myszy. Równoległe żółw ż2 kopiuje na planszy p1 te same ruchy i zmniejsza je o połowę. Stanie się tak, ponieważ adresatem procesu jest żółw ż1. Oba polecenia pozMyszy dotyczą żółwia ż1 na stronie s1. Żółw ż2 powtarza te same ruchy (zredukowane o połowę i wykonywane względem środka układu [0 0] jego miejsca - czyli planszy p1).

Jaka będzie różnica, jeśli napiszemy:

? ż1'bezKońca [napoz pozMyszy ż2'napoz 0.5 * ż2'pozMyszy]


Żółwie i geometria żółwia

Okno główne może zawierać kilka stron, ale w danym momencie tylko jedna jest widoczna. Na każdej stronie może żyć dowolna liczba małych graficznych obiektów nazywanych żółwiami. Poza tym każda strona może zawierać kilka plansz, na których też mogą żyć żółwie.

Wiele procedur używa żółwie - są one przesuwane w obrębie ich strony lub planszy oraz przy pomocy ich pisaka coś rysują lub piszą. Inne procedury zmieniają ustawienia żółwi (ich pozycje, kolor pisaków, wizerunki itp.). Te zagadnienia nazywane są geometrią żółwia.

Podstawowe ruchy
Podstawowe obroty
Więcej o ruchach
Stan pisaka
Kolor, grubość i wzór pisaka
Malowanie
Pisanie tekstów
Kreślenie krzywych i łamanych
Kierunek i pozycja
Postacie
Stemplowanie
Fazy i animacja
Skala i kolor postaci
Ukrywanie i pokazywanie
Zakres i styl zakresu
Wiele żółwi
Klasa Żółw


Żółwie: podstawowe ruchy

Procedura Typ Opis
naprzód liczba
naprzód jld
Skrót:
np 		P Powoduje przesunięcie wszystkich aktywnych żółwi o daną liczbę kroków w ich aktualnych kierunkach. Zależnie od trybu pisaków (pod, opu, ścier lub odwr) będą one kreśliły linie lub nie, zgodnie z aktualnymi ustawieniami koloru, grubości i wzoru, albo je wycierały bądź odwracały.

Każdy żółw porusza się i rysuje tylko w obrębie swojego obszaru i zakresu. Skutek polecenia w przypadku przekroczenia granic zakresu zależy od stylu zakresu (zobacz ustalStylZakresu i stylZakresu).

Naprzód 0 oznacza przemieszczenie o 0 kroków, co powoduje narysowanie linii o długości 1 (punktu). Naprzód 1 powoduje narysowanie linii o długości 2.

Naprzód liczba ma ten sam skutek, co wstecz -liczba, a naprzód 0 zwykle taki jak pkt.
wstecz liczba
wstecz jld
Skrót:
ws
 P Powoduje przemieszczenie wszystkich aktywnych żółwi o daną liczbę kroków przeciwnie do aktualnego kierunku. Podobnie, jak w przypadku naprzód skutek zależy od trybu i stylu pisaka oraz stylu zakresu.

Przykłady:

oto spirala :krok :kąt
  jeśli :krok < 0.5 [stop]
  np :krok
  lw :kąt
  spirala :krok - 3 :kąt
już
? spirala 200 174
? wstecz 40
; ruch wstecz
? wstecz -40
; ruch do przodu o 40 kroków
? powtórz 4 [wstecz 100 lw 90]
; kwadrat rysowany przez ruch wstecz


Żółwie: podstawowe obroty

Procedura Typ Opis
lewo kąt
lewo losowy-kąt
Skrót:
lw
 P Powoduje, że każdy aktywny żółw obraca się w lewo o dany kąt. Aktualny kierunek pierwszego aktywnego żółwia daje nam funkcja kierunek. Można go też zmienić poleceniem prawo lub ustalKierunek.

Lewo kąt ma ten sam skutek co prawo -kąt.
prawo kąt
prawo losowy-kąt
Skrót:
pw 		P Powoduje, że każdy aktywny żółw obraca się o dany kąt w prawo. Aktualny kierunek pierwszego aktywnego żółwia daje nam funkcja kierunek. Można go też zmienić poleceniem lewo lub ustalKierunek.

Prawo kąt ma ten sam skutek co lewo -kąt.

Przykłady:

? lw 90
? pokaż kierunek
270
? lw -90
; to samo co prawo 90
? lw 390
; to samo co lewo 30
? pw -90
; to samo co lewo 90
? pw 340;
; to samo co lewo 20


Żółwie: więcej o ruchach

Wszystkie ruchy i rysunki żółwia zawsze są wykonywane w obrębie jego zakresu działania i uwzględniają aktualny styl zakresu.

Procedura Typ Opis
suń kod rysunku ustawienia

? ustalPostać "rowerzysta
? lw 60
? ustalGrubość 2 ustalKolPis "szary8
? suń
   [powtórz 20 [np 5 pw 9]
   powtórz 15 [np 5 pw 12]
   powtórz 12 [np 5 pw 15]]
   []

 P Każdy aktywny żółw przesuwa się po danej linii wynikającej z kodu rysunku i wykonuje polecenia określone przez drugi parametr. Na przykład:

? pod ustalGrubość 4
? suń [powtórz 4 [np 100 pw 90]]
      [rób [pkt]]

będzie przesuwać żółwia po kwadracie [powtórz 4 [np 100 pw 90]] i regularnie (co 5 kroków - patrz opis drugiego parametru) stawiać punkt.

Pierwszy parametr zamieniany jest na sekwencję punktów, które określają drogę żółwia. Część poleceń danego kodu rysunku jest ignorowana, konkretnie:

  • Zmiany ustawień pisaka i wypełnienia. Używane są aktualne ustawienia żółwia.
  • Polecenia pod i opu są interpretowane inaczej: każdy odcinek pomiędzy pod i opu (lub końcem całej sekwencji) jest traktowany jako jeden krok.
  • Wszystkie kropki, punkty, okręgi, wielokąty oraz teksty wypisywane poleceniami piszTekst i wpiszTekst są ignorowane.

Drugi parametr, ustawienia określa "prędkość" i rodzaj wykonywanych czynności podczas ruchu. Może zawierać:

  • co - jego wartością jest dodatnia liczba określająca, co ile punktów polecenia listy rób zostaną wykonane. Domyślną wartością jest co 5.
  • rób - jego wartością jest lista poleceń, które będą wykonywane po każdorazowym przejściu przez żółwia odległości określonej przez co. Domyślną wartością jest [].
  • czekaj - jego wartością jest liczba określająca przerwę wyrażoną w milisekundach. Funkcjonuje tylko wtedy, gdy rób jest niezdefiniowane. Czekaj 20 jest równoznaczne rób [czekaj 20].

Lista pusta [] reprezentuje domyślne ustawienia [co 5 rób [czekaj 30]].

Przykłady:

oto cegła
 ustalKolZam "czerwony5
 wielokąt [2 [9 90 20 90]]
już
? pod
? suń
    [np 80 pw 0
     powtórz 60 [np 3 pw 3]
     np 70]
    [co 12 rób [cegła]]

? pw 90 pod
? suń [np 300]
      [co 15
       rób [ustalGrubość jld pkt]]

? pod ustalGrubość 16
? suń [powtórz 4
         [np 90 pw 90]]
      [co 18
       rób [ustalKolPis jld pkt]]


Żółwie: stan pisaka

odwracanie, odwr
opuść, opu
pisak
podnieś, pod
ścieranie, ścier
ustalPisak, upis

Aktualny stan pisaka żółwia (podniesiony, opuszczony, w trybie ścierania lub odwracania) jest pamiętany w ustawieniu pisak. To ustawienie można odczytać lub modyfikować następującymi procedurami:

Procedura | Typ | Opis
odwracanie
Skrót:
odwr
 P Każdy aktywny żółw zmienia stan swojego pisaka w ten sposób, że poruszając się po swoim obszarze rysowania odwraca (tzn. zmienia kolor pisaka i kolor tła) punkty (używając aktualnej grubości pisaka), przez które przechodzi.

Ten stan pisaka oferuje wiele interesujących efektów w zależności od aktualnej kombinacji kolorów pisaka i tła. Na przykład, jeśli ustawimy kolor pisaka taki sam jak aktualny kolor tła, można usunąć narysowaną linię bez uszkadzania innych linii, rysując ją ponownie w tym samym kierunku.

? odwr
? ustalKolPis "biały
? ustalgrubość 2
? np 250
? pod ws 250
? odwr
? np 250
opuść
Skrót:
opu
 P Każdy aktywny żółw opuszcza swój pisak. Od tej chwili każdy aktywny żółw będzie rysował linie (używając swojego aktualnego koloru, grubości i wzoru pisaka) poruszając się po swoim miejscu.
pisak | F | Wynikiem jest jedno ze słów podnieś, opuść, ścieranie lub odwracanie określające stan pisaka pierwszego aktywnego żółwia.
podnieś
Skrót:
pod 		P Każdy aktywny żółw podnosi swój pisak. Od tej chwili każdy aktywny żółw przemieszczając się po swoim miejscu nie będzie rysował linii.
ścieranie
Skrót:
ścier 		P Każdy aktywny żółw zmienia stan swojego pisaka w ten sposób, że poruszając się po swoim miejscu ściera (tzn. ustawia na kolor tła) punkty (używając aktualnej grubości pisaka), przez które przechodzi.
ustalPisak słowo
Skrót:
upis 		P gdzie słowo jest jednym ze słów pod, opu, ścier lub odwr.

Ustawia dla każdego aktywnego żółwia stan pisaka na odpowiednio: podnieś, opuść, ścieranie lub odwracanie.

Na przykład, ustalPisak "opu robi to samo co polecenie opuść lub opu.

Uwaga: Polecenie cs nie zmienia stanu pisaka żadnego żółwia.

Przykłady:

oto zmień.pisak
 jeżeli pisak = "opu [podnieś] [opuść]
 ; jeśli pisak jest opuszczony, to podnosimy go,
 ; w przeciwnym przypadku opuszczamy
już
oto nowy.wielokąt :n :bok :kąt
 powtórz :n [zmień.pisak np :bok pw :kąt]
już
? nowy.wielokąt 180 150 142
oto spirala :a
 np :a
 pw 90
 spirala :a + 1
już
? ustalKolPis "biały
? ustalKolTła "biały
? ustalGrubość 1
? odwracanie
? sż
? spirala 1


Żółwie: kolor, grubość i wzór pisaka

grubość; gp
kolpis
ustalGrubość; ustalGP; ugp
ustalKolPis; ukp
ustalWzórPis; ustalWZP; uwp; uwz
wzórpis; wzp

Aktualny kolor, grubość i wzór pisaka żółwia są pamiętane w jego ustawieniach kolpis, grubość i wzórpis. Te ustawienia można odczytać lub modyfikować następującymi procedurami:

Procedura Typ Opis
grubość
Skrót:
gp 		F Wynikiem jest grubość pisaka pierwszego aktywnego żółwia. Domyślną grubością jest 1.
kolpis
         F Wynikiem jest kolor pisaka pierwszego aktywnego żółwia. Kiedy żółw jest tworzony, jego domyślnym kolorem pisaka jest czarny.
ustalGrubość grubość pisaka
ustalGrubość losowa grubość pisaka
Skróty:
ustalGP, ugp
 P Ustala grubość pisaka dla wszystkich aktywnych żółwi.

Żółw rysuje linie (aktualnym kolorem, grubością i wzorem) tylko wtedy, kiedy pisak jest opuszczony (lub jest w stanie odwracanie, wówczas mają miejsce pewne specjalne efekty).

Polecenie ustalGrubość posiada wybór.
ustalKolPis kolor
ustalKolPis losowy kolor
Skrót:
ukp
 P Ustala kolor pisaka dla wszystkich aktywnych żółwi. Żółw rysuje linie (aktualnym kolorem, grubością i wzorem) tylko wtedy, kiedy pisak jest opuszczony (lub jest w stanie odwracanie, wówczas mają miejsce pewne specjalne efekty).

Jeśli kolor pisaka jest kolorem RGB, którego komputer nie może wyświetlić jako pełny kolor, efekty będą widoczne tylko dla grubości pisaka większej od 1.

Polecenie ustalKolPis posiada wybór.
ustalWzórPis wzór pisaka
ustalWzórPis losowy wzór pisaka
Skróty:
ustalWZP, uwp, uwz 		P Ustala wzór pisaka dla wszystkich aktywnych żółwi używany przy opuszczonym pisaku. Domyślną wartością wzoru pisaka dla nowotworzonych żółwi jest linia ciągła.

Polecenie ustalWzórPis posiada wybór.
wzórpis
Skrót:
wzp 		F Wynikiem jest wzór pisaka pierwszego aktywnego żółwia.

Przykłady:

? pokaż grubość
1
? powtórz 5 [np 30 ustalGrubość grubość * 3]
? pokaż grubość
243
? cs ustalGrubość 1 ustalWzórPis 2
? powtórz 4 [np 150 pw 90]


Żółwie: malowanie

kolmal; kolzam
kolpkt
ustalKolMal; ustalKolZam; ukm
ustalWzórMal; ustalWzórZam; uwm
wzórmal; wzórzam
zamaluj; zam

Wszystkie zamalowania dotyczą aktualnego zakresu żółwia.

Procedura | Typ | Opis
kolmal lub kolzam
         F Wynikiem jest aktualny kolor malowania pierwszego aktywnego żółwia. Jeśli nie został on wcześniej ustalony inaczej, jest domyślnie taki sam jak kolor pisaka.

Wynik funkcji kolmal jest kolorem używanym przez polecenia zamaluj i wielokąt.
kolpkt | F | Wynikiem jest kolor punktu strony lub planszy aktualnej pozycji pierwszego aktywnego żółwia.
ustalKolMal kolor
ustalKolMal losowy kolor
Także:
ustalKolZam
Skrót:
ukm
 P Ustala kolor malowania wszystkich aktywnych żółwi. Ten kolor jest używany przez polecenia zamaluj i wielokąt.

Jeśli kolor malowania nie był ustalony inaczej, żółw używa swojego aktualnego koloru pisaka. To polecenie umożliwia używanie innego koloru do rysowania linii, a innego do zamalowywania. Za każdym razem, kiedy kolor pisaka jest zmieniany poleceniem ustalKolPis, zmienia się także kolor malowania na taki sam, jak kolor pisaka.
ustalWzórMal wzór malowania
ustalWzórMal losowy wzór malowania
Także:
ustalWzórZam
Skrót:
uwm
 P Ustala wzór malowania wszystkich aktywnych żółwi. Ten wzór jest używany przez polecenia zamaluj i wielokąt.

Domyślnym wzorem malowania jest wzór 0.

Polecenie ustalWzórMal posiada wybór.
wzórmal lub wzórzam
         F Wynikiem jest wzór malowania pierwszego aktywnego żółwia. Domyślną wartością, jeśli wzór malowania nie był zmieniany, jest wartość 0 oznaczająca wypełnienie pełne.

Wynikiem funkcji wzórmal jest wzór używany przez polecenia zamaluj i wielokąt.
zamaluj
Skrót:
zam
 P Każdy aktywny żółw zamalowuje otaczający go obszar używając swojego koloru i wzoru malowania, oraz stosując aktualną strategię zamalowywania.


Żółwie: pisanie tekstów

czcionka; font
piszTekst
rozmiarTekstu
ustalCzcionkę; ustalFont
wpiszTekst

Przy wypisywaniu tekstów poleceniami piszTekst i wpiszTekst dany tekst jest obcinany do aktualnego zakresu żółwia.

Procedura | Typ | Opis
czcionka
Także:
font 		F Wynikiem jest czcionka pierwszego aktywnego żółwia. Domyślną wartością, jeśli czcionka nie była zmieniana, jest [[System] [0 400 0 0 0 1]].
piszTekst tekst | P | Działa analogicznie jak polecenie wpiszTekst, z tym że przesuwa żółwia wraz z pisanym tekstem. Żółw zostanie przesunięty na prawy koniec wypisywanego tekstu.
rozmiarTekstu tekst F Wynikiem jest lista czterech liczb: [szer wys liczba3 liczba4]. Funkcja nie powoduje wypisania żadnego tekstu.

Pierwsze dwie liczby określają rozmiar prostokąta, który byłby zakryty przez dany tekst, gdyby pierwszy aktywny żółw wypisywał go poleceniem piszTekst lub wpiszTekst na swoim miejscu używając aktualnej czcionki. Trzecia liczba (tzw. ascent) i czwarta (tzw. external leading) określają specyficzne cechy aktualnej czcionki związane z zaawansowanymi technikami DTP.
ustalCzcionkę czcionka
Także:
ustalFont 		P Ustala czcionkę (uwzględniając jej rozmiar, styl... itp.) każdego aktywnego żółwia. Ta czcionka jest używana, kiedy żółw wypisuje teksty poleceniami piszTekst lub wpiszTekst.

Jeśli chcemy, aby żółw pisał tekst w dowolnym kierunku, to należy używać czcionek wektorowych (True Type, Adobe Type).

Polecenie ustalCzionkę posiada wybór.
wpiszTekst tekst P Każdy aktywny żółw pisze dany tekst na swoim miejscu w swojej aktualnej pozycji używając bieżącej czcionki. Dany tekst jest wypisywany aktualnym kolorem pisaka żółwia. Jeśli tekst jest listą, to zostanie wypisany bez zewnętrznych nawiasów.

Dane są wpisywane prostopadle do kierunku żółwia w prawą stronę. Jeśli żółw jest skierowany do góry, to tekst będzie wypisany poziomo. Wszystkie wektorowe czcionki mogą być używane do pisania tekstu w dowolnym kierunku.

Jeśli dany tekst zawiera znaki akapitu ¶ (Alt + 0182) lub symbole \13, to są one interpretowane jako koniec wiersza. Można więc jednym poleceniem wpiszTekst wypisać kilka wierszy tekstu.

Polecenie wpiszTekst nie zmienia pozycji żółwia.

Przykład:

? wykwp
   [wpiszTekst :% pod ws 20]
   [Tekst może być używany do tworzenia interesujących kompozycji.]


Żółwie: kreślenie krzywych i łamanych

elipsa
koło
kreśl
kropka
naPunkty
naWektory
okrąg
owal
pkt
rysujGładko; rysg
rysuj
wielokąt
wygładź

Używając podstawowych ruchów i obrotów żółwia, takich jak:

? powtórz 5 [np 100 pw 90]
? powtórz 3 [np 100 lw 120]
? lw 90
? ws 120

żółw tworzy rysunek w wielu krokach rysując linię po linii. Procedury z tej grupy są inne. Jeśli wydamy polecenie okrąg 40, to okrąg o średnicy 40 i środku w aktualnej pozycji żółwia zostanie narysowany bardzo szybko - w jednym kroku, bez zmiany pozycji i kierunku żółwia. Więcej, te polecenia powodują rysowanie przez wszystkie aktywne żółwie zgodnie z ich kierunkiem. Dotyczy to także elipsy i owalu. Tworzone rysunki są obcinane do aktualnego zakresu żółwia.

Poniższe polecenia używają aktualnego koloru, grubości i wzoru pisaka żółwia oraz (dla poleceń koło, owal i wielokąt) koloru malowania. Ponadto polecenia, których daną jest kod rysunku mogą tworzyć interesujące rysunki wykorzystując funkcje naPunkty i wygładź.

Procedura | Typ | Opis
elipsa [ liczba1 liczba2 ]
elipsa [ liczba1 liczba2 k1 k2]
P Każdy aktywny żółw rysuje elipsę o osi wielkiej liczba1 i osi małej liczba2 oraz o środku w aktualnej pozycji żółwia. Żółw używa swojego aktualnego koloru, grubości i wzoru pisaka. Oś wielka jest prostopadła do aktualnego kierunku żółwia.

Jeśli dana lista ma dwa dodatkowe elementy k1 i k2, to określają one, jaka część elipsy będzie rysowana, tzn. wówczas rysowany jest wycinek elipsy od kąta k1 do kąta k2.
koło liczba | P | Każdy aktywny żółw rysuje koło o średnicy liczba i środku w aktualnej swojej pozycji. Żółw używa swojego aktualnego koloru, grubości i wzoru pisaka oraz koloru malowania.
kreśl lista punktów P Każdy aktywny żółw kreśli na swoim miejscu rysunek na podstawie danej listy punktów. Każdy żółw kreśli rysunek od swojej aktualnej pozycji i aktualnego kierunku, używając swojego aktualnego koloru, grubości i wzoru pisaka. Po wykreśleniu rysunku pozycja i kierunek żółwia pozostają niezmienione.
? kreśl naPunkty [powtórz 3 [np 100 pw 90]]

Dana lista punktów może zawierać listę pustą [] jako element, na przykład:

? kreśl [[0 0] [10 0] [] [20 0] [30 0]]

Lista pusta pomiędzy dwoma punktami [… P1 [] P2 …] oznacza przejście od punktu P1 do P2 bez rysowania linii.
kropka liczba | P | Każdy aktywny żółw stawia kropkę (koło w aktualnym kolorze pisaka) o średnicy liczba.
naPunkty kod rysunku F Zamienia kod rysunku na listę punktów określających węzły rysunku. Punkty umiejscowione są tak, jakby żółw tworzył rysunek zaczynając od środka i kierunku do góry.

Wynik funkcji naPunkty może być używany jako parametr poleceń kreśl i wygładź do tworzenia interesujących rysunków.
naWektory kod rysunku | F | Zamienia kod rysunku na odpowiadającą listę wektorów. Wektory umiejscowione są tak, jakby żółw tworzył rysunek zaczynając od środka i kierunku do góry.
okrąg liczba | P | Każdy aktywny żółw rysuje okrąg o średnicy liczba i środku w swojej aktualnej pozycji. Żółw używa swojego aktualnego koloru, grubości i wzoru pisaka.
owal [ liczba1 liczba2 ]
owal [ liczba1 liczba2 k1 k2] 		P Każdy aktywny żółw rysuje owal o osi wielkiej liczba1 i osi małej liczba2 oraz o środku w aktualnej pozycji żółwia. Żółw używa swojego aktualnego koloru, grubości i wzoru pisaka oraz koloru malowania. Oś wielka jest prostopadła do aktualnego kierunku żółwia.

Jeśli dana lista ma dwa dodatkowe elementy k1 i k2, to określają one, jaka część owalu będzie rysowana, tzn. wówczas rysowany jest wycinek owalu od kąta k1 do kąta k2.
pkt P Każdy aktywny żółw stawia punkt w swojej aktualnej pozycji używając aktualnego koloru i grubości pisaka.

Żółw postawi punkt nawet, jeśli pisak jest podniesiony.

Polecenie pkt jest podobne do polecenia np 0, jeśli pisak jest opuszczony. Jednak np 0 nie rysuje dokładnie okręgu. Widać to przy grubości pisaka większej od 10.
rysuj kod rysunku

P Każdy aktywny żółw rysuje na swoim miejscu rysunek na podstawie danego kodu rysunku.

Poniższe polecenie rysuje kwadrat:

? rysuj [powtórz 4 [np 100 pw 90]]

Określając bardziej skomplikowany kod rysunku można tworzyć bardzo złożone rysunki (także z zamalowanymi częściami):

? rysuj [ukm 2
          powtórz 6
           [np 60 koło 50 pw 60]]

? rysuj [ukm 12
          powtórz 4
           [np 100
            wielokąt [powtórz 4 [pw 90 np 40]]
            pw 90]
rysujGładko kod rysunku
Skrót:
rysg
 P Każdy aktywny żółw rysuje gładko na swoim miejscu rysunek na podstawie danego kodu rysunku.

Dany kod rysunku jest najpierw zamieniany na sekwencję punktów, potem wygładzany i rysowany przez żółwia.

Polecenie rysujGładko kod_rysunku jest równoważne poleceniu
kreśl wygładź naPunkty kod_rysunku.
wielokąt kod rysunku

P Każdy aktywny żółw rysuje na swoim miejscu wypełniony wielokąt na podstawie kodu rysunku.

Żółw używa swojego aktualnego koloru, grubości i wzoru pisaka oraz koloru malowania. Jeśli figura nie jest zamknięta (tzn. ostatni punkt jest różny od pierwszego), to zostanie automatycznie zamknięta przez dodanie jednego odcinka. Polecenie wielokąt [powtórz 2 [np 100 pw 120]] narysuje tą samą figurę co polecenie wielokąt [powtórz 3 [np 100 pw 120]].

Przykłady:

? wielokąt [ukm "ciemnoniebieski powtórz 3 [np 100 pw 120]]

wielokąt zawsze zamalowuje wnętrze figury. Dla bardziej skomplikowanych figur trudno przewidzieć efekt. Na przykład:

? wielokąt [ukm "fioletowy powtórz 24 [np 200 pw 165]]

Niektóre instrukcje kodu rysunku są ignorowane przez polecenie wielokąt:

  • Ustawienia koloru, grubości, wzoru pisaka i koloru malowania są pomijane, chyba że zostaną użyte na samym początku listy (wówczas ustawienia zmieniają się tylko na czas działania polecenia wielokąt).
  • Instrukcje pomiędzy poleceniami pod i opu są pomijane i zastępowane odcinkiem.
  • Polecenia okrąg, koło, elipsa, owal, pkt i kropka są pomijane.

Bardziej złożone przykłady:

? wielokąt [ugp 2
            ukm "żółty
            powtórz 3 [np 100
             wielokąt [powtórz 36
                      [np 7 pw 10]]
                       pw 120]]
? wielokąt [ugp 2
            ukm "czerwony
            rysujg [powtórz 3
             [np 125 pw 120]]]
? ugp 3 ukm "niebieski
? wielokąt [rysg [5 [200 144]]]
wygładź lista punktów

F Wynikiem jest zmodyfikowana lista punktów. Dodatkowe punkty są wstawiane do listy, tak że łamana jest wygładzona. Funkcja może być używana do tworzenia interesujących rysunków przez polecenia rysuj, wielokąt i kreśl.


Żółwie: kierunek i pozycja

azymut
kierunek
pozAbs
poz
pozX
pozY
stanWyjściowy
ustalKierunek; skieruj; skier
ustalPoz; napoz
ustalPozAbs
ustalPozX; noweX
ustalPozY; noweY
ustalStanWyjściowy
ustalXY; noweXY
wróć

Poniższe polecenia przedstawiają alternatywę względem podstawowych ruchów i obrotów żółwia. Przeciwnie do "czystej" geometrii żółwia, system kartezjański używa układu współrzędnych, w którym każdy punkt reprezentowany jest przez parę współrzędnych.

Zauważmy, że:

  • parametrem poleceń ustalPoz i ustalPozAbs może być losowy punkt,
  • parametrem poleceń ustalXY, ustalPozX i ustalPozY może być losowa współrzędna.

Oprócz poleceń wymienionych poniżej, pozycję aktywnego żółwia zmieniają także polecenia naprzód, wstecz i cs.

Procedura | Typ | Opis
azymut punkt
azymut żółw 		F Wynikiem jest kierunek, który powinien przyjąć pierwszy aktywny żółw, by był zwrócony na dany punkt. Kierunek jest wyrażany w stopniach, narasta zgodnie z ruchem wskazówek zegara zaczynając od północy.

Jeśli parametrem jest nazwa żółwia, to wynikiem jest kierunek, który powinien przyjąć pierwszy aktywny żółw, aby ustawić się "twarzą w twarz" z danym żółwiem.
kierunek | F | Wynikiem jest aktualny kierunek pierwszego aktywnego żółwia.
poz F Wynikiem jest punkt [X Y] reprezentujący (w kartezjańskim układzie współrzędnych miejsca żółwia) pozycję pierwszego aktywnego żółwia.

Domyślny początek kartezjańskiego układu współrzędnych strony lub planszy mieści się w środku, może być przedefiniowany poleceniem ustalPoczątek.
pozAbs | F | Wynikiem jest punkt [X Y] reprezentujący (w bezwzględnym układzie współrzędnych miejsca żółwia) pozycję pierwszego aktywnego żółwia.
pozX | F | Wynikiem jest x-owa współrzędna pozycji pierwszego aktywnego żółwia.
pozY | F | Wynikiem jest y-owa współrzędna pozycji pierwszego aktywnego żółwia.
stanWyjściowy | F | Wynikiem jest wartość ustawienia stanWyjściowy pierwszego aktywnego żółwia. Określa macierzystą pozycję i macierzysty kierunek żółwia. Jeśli początek układu współrzędnych miejsca żółwia nie był zmieniany, to domyślną wartością jest lista [[0 0] 0].
ustalKierunek kąt
ustalKierunek losowy kąt
Skróty:
skieruj, skier 		P Powoduje, że każdy aktywny żółw wykonuje obrót przyjmując kierunek wyznaczony przez dany kąt. Kierunek jest wyrażany w stopniach, narasta zgodnie z ruchem wskazówek zegara zaczynając od północy. Na przykład, ustalKierunek 0 ustawia aktywne żółwie w kierunku na północ, a ustalKierunek 90 ustawia je w kierunku na wschód.
ustalPoz punkt
ustalPoz losowy punkt
Skrót:
napoz 		P Przemieszcza każdego aktywnego żółwia na dany punkt w kartezjańskim układzie współrzędnych miejsca żółwia. Polecenie nie zmienia aktualnego kierunku żółwia. Jeśli pisak jest opuszczony, to żółw przemieszczając się rysuje kreskę.
ustalPozAbs punkt
ustalPozAbs losowy punkt 		P Przemieszcza każdego aktywnego żółwia na dany punkt w bezwzględnym układzie współrzędnych miejsca żółwia. Polecenie nie zmienia aktualnego kierunku żółwia. Jeśli pisak jest opuszczony, to żółw przemieszczając się rysuje kreskę.
ustalPozX liczba
ustalPozX losowa współrzędna
Skrót:
noweX 		P Przemieszcza każdego aktywnego żółwia poziomo na pozycję o x-owej współrzędnej określonej przez liczbę.

Polecenie nie zmienia kierunku żółwia ani y-owej współrzędnej. Jeśli pisak jest opuszczony, to żółw przemieszczając się rysuje kreskę.

Polecenie ustalPozX liczba jest równoważne poleceniu ustalPoz zd liczba pozY.
ustalPozY liczba
ustalPozY losowa współrzędna
Skrót:
noweY 		P Przemieszcza każdego aktywnego żółwia pionowo na pozycję o y-owej współrzędnej określonej przez liczbę.

Polecenie nie zmienia kierunku żółwia ani x-owej współrzędnej. Jeśli pisak jest opuszczony, to żółw przemieszczając się rysuje kreskę.

Polecenie ustalPozY liczba jest równoważne poleceniu ustalPoz zd pozX liczba.
ustalStanWYjściowy [[X Y] kąt ]
ustalStanWyjściowy losowy stan wyjściowy 		P Ustala stanWyjściowy każdego aktywnego żółwia na dany punkt [X Y] i kąt.
ustalXY liczba1 liczba2
ustalXY losowa współrzędna1
losowa współrzędna2
Także:
noweXY 		P Przesuwa każdego aktywnego żółwia na punkt o x-owej współrzędnej określonej przez daną liczba1 i y-owej współrzędnej określonej przez daną liczba2.

Polecenie ustalXY nie zmienia kierunku żółwia. Jeśli pisak jest opuszczony, to żółw przemieszczając się rysuje kreskę.

Polecenie ustalXY liczba1 liczba2 jest równoważne poleceniu ustalPoz zd liczba1 liczba2.
wróć P Przesuwa każdego aktywnego żółwia do jego macierzystej pozycji i macierzystego kierunku. Ta pozycja i kierunek są ustalone przez ostatnie użycie polecenia ustalStanWyjściowy lub podczas tworzenia żółwia.

Aktualny stan (pod, opu, ścier lub odwr), kolor, grubość i wzór pisaka nie zmieniają się. Żółw wracając do pozycji macierzystej nie rysuje linii. Żółw pozostaje widoczny, jeśli wcześniej był widoczny. Miejsce nie jest czyszczone.

Przykłady:

oto wachlarz
 powtórz 360 [np kierunek ws kierunek pw 1]
już
? wachlarz
? proszę "ż1 [bezKońca [powtórz 150 [np 1 czekaj 1] pw 90]]
? proszę "ż2 [bezKońca [ustalKierunek azymut proszę "ż1 [poz] np 0.6 czekaj 1]


Żółwie: postacie

obpos
postać
prostokątPostaci; prostpos
ustalPostać

Żółw posiada swoją reprezentację graficzną (wizerunek). Wizerunkiem żółwia może być:

  • postać - specjalny typ danych Imagine. Każda postać jest sekwencją faz. Każda faza składa się z jednej lub kilku klatek określających animację.
  • kod rysunku. Kod rysunku jest ograniczonym zestawem poleceń, które opisują jak skonstruować reprezentację graficzną żółwia.

Aktualna reprezentacja graficzna żółwia jest pamiętana w ustawieniu postać. Można ją odczytać lub modyfikować następującymi procedurami:

Procedura Typ Opis
obpos F Wynikiem jest postać składająca się z jednej fazy zawierającej jedną klatkę aktualnie używaną przez pierwszego aktywnego żółwia. Ta klatka jest dokładnie postacią żółwia używaną w danym momencie:
  • Jeśli skalaPos jest różna od 1, wynik jest odpowiednio przeskalowany.
  • Jeśli wizerunek żółwia jest zdefiniowany jako kod rysunku, to wynikiem jest odpowiadająca postać.
postać F Wynikiem jest postać aktualnie używana przez pierwszego aktywnego żółwia:
  • Jeśli wizerunkiem żółwia jest kod rysunku, to wynikiem funkcji postać jest lista, a nie postać.
  • Jeśli wizerunek żółwia jest zdefiniowany przez listę kodów rysunków, to wynikiem jest ta lista.
? pokaż postać
[ustalGrubość 2 ustalKolMal 14 wielokąt [rysujGładko [powtórz 5 [np 60 pw 72 np 60 pw 144]]]]
prostokątPostaci
Skrót:
prostpos

F Wynikiem jest prostokąt [X Y szer wys], który zawiera aktualny wizerunek pierwszego aktywnego żółwia na jego stronie lub planszy – dokładniej klatkę lub wygląd opisany kodem rysunku. Liczby X i Y określają pozycję lewego górnego rogu prostokąta, a szer i wys jego szerokość i wysokość.

Jeśli pierwszy aktywny żółw jest schowany, wynikiem funkcji prostokątPostaci będzie [X Y 0 0], gdzie [X Y] określa aktualną pozycję żółwia.

Taki sam będzie wynik funkcji, kiedy wizerunkiem pierwszego aktywnego żółwia jest pusta postać.

ustalPostać postać
ustalPostać plik
ustalPostać []
ustalPostać kod rysunku

ustalPostać [ kod rysunku
kod rysunku …]
ustalPostać "Schowek

 P Określa postać, jaka będzie używana jako wizerunek wszystkich aktywnych żółwi:
  • Jeśli parametrem jest plik LGF lub plik bez rozszerzenia, polecenie jest równoważne poleceniu: ustalPostać ładpos "plik.
  • Jeśli parametrem jest inny akceptowalny plik graficzny, to po załadowaniu, jego zawartość jest konwertowana do postaci.
  • Jeśli parametrem jest lista pusta [], to każdy aktywny żółw przyjmie domyślną postać:
  • Jeśli parametrem jest kod rysunku, to zostanie on użyty jako wizerunek żółwia. Jest on automatycznie przerysowywany po każdorazowej zmianie kierunku żółwia, ponieważ wszystkie obroty kodu rysunku będącego wizerunkiem żółwia są generowane automatycznie w trakcie działania. Przykład po lewej stronie ilustruje trzy kierunki (40, 50 i 60 stopni) reprezentacji graficznej:

    ? ustalPostać [ugp 2 ukm "żółty wielokąt
       [rysujGładko
        [powtórz 5 [np 60 lw 72 np 60 pw 144]]]]

  • Jeśli parametrem jest lista kodów rysunków, to Imagine traktuje kody rysunków - elementy listy, tak samo jak klatki. Tworzona jest w ten sposób animacja. Domyślną wartością spowolnienia jest 100, mnożone przez aktualną wartość ustawienia tempo. Na przykład:

    ? ustalTempo 3
    ? ustalPostać [[ukp "czerwony5 kropka 50]
                   [ukp "czerwony4 kropka 46]]

  • Jeśli parametrem jest słowo Schowek, to użyta będzie zawartość standardowego schowka Windows. Schowek musi zawierać rysunek w jednym z akceptowanych formatów graficznych, utworzony wcześniej, na przykład poleceniem zapiszPostać bezpośrednio do schowka, opcjami Wytnij lub Kopiuj Edytora postaci lub innego edytora graficznego (np. Paint). Polecenie ustalPostać "Schowek jest równoważne poleceniu:

    ? ustalPostać ładpos "Schowek

Przykłady:

? przypisz "mojaPostać ładpos "robot
? pokaż postać? :mojaPostać
prawda
? ustalPostać :mojapostać
; To samo zrobi polecenie: ustalPostać ładpos "robot
; lub ustalPostać "robot
? pokaż postać? postać
prawda


Żółwie: stemplowanie

stempluj
stemplujObraz
zdjęcie

Żółwie mogą stemplować swoją aktualną postać - lub dowolny inny obraz - na swoim miejscu. Są także w stanie pobrać obraz z określonego obszaru swojego miejsca. Stemplowania mogą się odbywać w aktualnym zakresie widoczności żółwia.

Procedura | Typ | Opis
stempluj | P | Każdy aktywny żółw stempluje swój wizerunek (aktualną klatkę) na swoim miejscu. W wyniku działania polecenia stempluj postacie stają się zawartością ekranu, tj. strony lub planszy.
stemplujObraz postać
stemplujObraz plik
stemplujObraz kod rysunku 		P Każdy aktywny żółw stempluje daną postać (pierwszą klatkę pierwszej fazy) w swojej aktualnej pozycji. Punkt zaczepienia obrazu zostanie umieszczony w aktualnej pozycji żółwia - w ten sposób położenie obrazu na ekranie jest dokładnie określone.

Aktualna skalaPos żółwia określa skalę stemplowanego obrazu, a aktualny kierunek jego obrót.

Jeśli parametrem jest akceptowany plik graficzny, to jest ładowany, a jego zawartość stemplowana na ekranie. Obraz odstemplowany poleceniem stemplujObraz staje się częścią obrazu tła strony lub planszy i nie może być już ruszany - chyba, że miejsce zostanie wyczyszczone (lub żółw żyjący na planszy stempluje obraz, a potem przesuwamy całą planszę).
zdjęcie [x1 y1 x2 y2] F Wynikiem jest postać składająca się z jednej fazy i jednej klatki. Utworzy ją (zrobi zdjęcie) pierwszy aktywny żółw ze swojego otoczenia na swoim miejscu, tj. stronie lub planszy.

Dana lista [x1 y1 x2 y2] określa prostokątny obszar strony lub planszy - względem aktualnej pozycji pierwszego aktywnego żółwia - który zostanie skopiowany do nowej postaci:

  • x1 określa odległość (w punktach) od aktualnej pozycji pierwszego aktywnego żółwia do lewej granicy obszaru.
  • y1 określa odległość do górnej granicy obszaru.
  • x2 określa odległość do prawej granicy obszaru.
  • y2 określa odległość do dolnej granicy obszaru.

      • Ten obszar nie musi się w całości znajdować na stronie lub planszy. Części poza stroną lub planszą będą przezroczyste. Pierwsze dwie liczby danej listy określają także punkt zaczepienia [x1 y1] nowotworzonej postaci.

      Szerokość postaci będzie miała wartość x1+x2+1, a wysokość y1+y2+1. Punkt zaczepienia (względem lewego górnego rogu postaci) nie musi być w środku. Na przykład, niech lista [-100 -100 140 160] określa obszar dla polecenia zdjęcie - wynikiem będzie postać o rozmiarach [41 61], z punktem [-100 -100] jako zaczepienie. Jeśli x1+x2<1 lub y1+y2<1, to wynikiem będzie pusta postać.

      Klasy strona i plansza posiadają podobną funkcję wycinekTła.

      Wizerunki żółwi znajdujących się w wybranym obszarze nie będą włączone do wynikowej postaci, chyba że zostaną wcześniej odstemplowane na stronie lub planszy poleceniem stempluj.

      Aktualna wartość zmiennej wspólnej przezroczystość Bazy określa, czy część wynikowej postaci będzie przezroczysta, czy nie.

Przykłady:

? ustalPostać "robot
? stempluj
? pod ustalKierunek 90
? np 100
? stemplujObraz "papuga.bmp


Żółwie: fazy i animacja

animacja
faza
klatka
trybFaz
ustalAnimację
ustalFazę; ufa
ustalKlatkę
ustalTrybFaz

Żeby wyświetlić aktualny wizerunek żółwia Imagine używana postaci (lub kodu rysunku, zobacz żółwie: postacie). Postać może składać się z kilku faz i posiada informację, jak fazy mają być używane. Istnieją dwie metody:

  • Tryb kierunku, fazy są automatycznie zmieniane przez Imagine i wskazują aktualny kierunek żółwia,
  • Tryb faz, fazy nie są związane z kierunkiem żółwia. Polecenie ustalFazę określa, która faza będzie aktualnie używana jako wizerunek żółwia.

Kiedy poleceniem ustalPostać ustalamy postać żółwia, jego ustawienie trybFaz automatycznie przyjmuje wartość prawda lub fałsz zależnie od tego, czy postać znajduje się w trybie faz, czy w trybie kierunku. Zwykle wartością trybuFaz jest fałsz, ponieważ większość postaci używana jest do wskazywania kierunku. Można zmienić to ustawienie i tym samym tryb pracy żółwia (pisząc ustalTrybFaz "fałsz lub ustalTrybFaz "prawda).

Każda faza postaci może składać się z kilku klatek. Zwykle klatki są automatycznie i cyklicznie zmieniane w nieskończonej pętli tworząc w ten sposób animację. Mechanizm automatycznej animacji można wyłączyć dla konkretnego żółwia poleceniem ustalAnimację "fałsz, a potem ponownie włączyć poleceniem ustalAnimację "prawda. Jeśli automatyczna animacja zostanie wyłączona, to poleceniem ustalKlatkę liczba można wybrać klatkę, która będzie wyświetlana.

Procedura | Typ | Opis
animacja | F | Wynikiem jest prawda, jeśli dla pierwszego aktywnego żółwia jest włączona automatyczna animacja. W przeciwnym przypadku wynikiem jest fałsz. To ustawienie jest modyfikowane przez polecenie ustalAnimację.
faza | F | Wynikiem jest aktualnie wyświetlona faza pierwszego aktywnego żółwia.
klatka | F | Wynikiem jest aktualnie wyświetlona klatka aktualnej fazy pierwszego aktywnego żółwia.
trybFaz F Wynikiem jest fałsz, jeśli pierwszy aktywny żółw znajduje się w trybie kierunku (domyślna wartość).

Jeśli ustawienie zostanie zmienione poleceniem ustalTrybFaz "prawda, to żółw znajdzie się w trybie faz. Wówczas poleceniem ustalFazę można zmieniać aktualnie wyświetlaną fazę.
ustalAnimację wartość logiczna P Jeśli parametrem jest fałsz, to polecenie wyłącza mechanizm automatycznej animacji (w którym znajdują się wszystkie klatki aktualnej fazy używane do animowania żółwia).

Jeśli parametrem jest prawda, to polecenie włącza ponownie mechanizm automatycznej animacji.
ustalFazę liczba
Skrót:
ufa 		P Jeśli żółw znajduje się w trybie faz, polecenie ustawia wyświetlaną fazę postaci żółwia określoną przez daną liczbę.

Jeśli żółw znajduje się w trybie kierunku (tzn. wartością ustawienia trybFaz jest fałsz), to polecenie nie powoduje żadnego efektu.
ustalKlatkę liczba P Ustawia klatkę używaną do wyświetlania wizerunku żółwia określoną przez daną liczbę.

Jeśli ustawienie żółwia animacja ma wartość prawda (domyślna wartość), to dana klatka zostanie wyświetlona, ale po upływie czasu spowolnienia zostanie automatycznie zamieniona przez następną klatkę.
ustalTrybFaz wartość logiczna P Jeśli parametrem jest prawda, to polecenie ustawia wszystkie aktywne żółwie w tryb faz. Wówczas poleceniem ustalFazę można określać fazę używaną do wyświetlania wizerunku żółwia.

Jeśli parametrem jest fałsz, to polecenie ustawia wszystkie aktywne żółwie w tryb kierunku. W tym przypadku fazy postaci żółwi będą automatycznie wyrażać aktualny kierunek żółwia.

Samej postaci polecenie nie modyfikuje, tylko aktualny wizerunek żółwia. Następne polecenie ustalPostać będzie ponownie akceptować tryb pamiętany z postacią.

Przykłady:

? ustalPostać []
; Ustala domyślną postać.
? pw 90
? pokaż klatka
7
? ustalPostać naFilm postać
? ustalPostać ustalSpowolnienie postać 30
? powtórz 240 [np 2 pw 1.5 czekaj 5 stempluj]
? ustalAnimację "fałsz
? powtórz 120 [np 5 pw 3 czekaj 5 stempluj]


Żółwie: skala i kolor postaci

kolpos
skalaPos
ustalKolPos
ustalSkalęPos

Kiedy żółw używa określoną postać lub kod rysunku jako swój wizerunek, można go modyfikować na dwa sposoby (bez modyfikacji postaci lub kodu rysunku jako danych). Można określić:

  • Skalę, z uwzględnieniem której wyświetlany jest wizerunek żółwia.
  • Aktywny kolor postaci.

Aktualna skala i kolor dla żółwia pamiętane są w jego ustawieniach skalaPos i kolpos. Można je odczytywać i modyfikować przy pomocy poniższych procedur:

Procedura | Typ | Opis
kolpos | F | Wynikiem jest aktualny aktywny kolor postaci pierwszego aktywnego żółwia.
skalaPos | F | Wynikiem jest aktualna skala postaci pierwszego aktywnego żółwia, na przykład 2 lub [3 1] lub [-1 1].
ustalKolPos kolor
ustalKolPos [] 		P Ustala aktywny kolor postaci dla wszystkich aktywnych żółwi.

Jeśli parametrem jest lista pusta [], to żaden kolor nie jest wybrany jako aktywny kolor postaci. W takim przypadku wartością funkcji kolpos jest lista pusta [].
ustalSkalęPos liczba
ustalSkalęPos
  [ liczba1 liczba2 ] 		P Ustala skalę postaci wszystkich aktywnych żółwi na daną liczbę. Zarówno szerokość jak i wysokość aktualnej klatki będzie przeskalowana o tą samą wartość.

Jeśli parametrem jest lista dwóch liczb, to szerokość będzie mnożona przez daną liczba1, a wysokość przez daną liczba2.

Przykłady:

? ustalPostać "rowerzysta
? pw 20 pod
? powtórz 150 [np 1.5 ustalSkalęPos skalaPos * 0.98 czekaj 50]
? rt 180
? powtórz 150 [np 1.5 ustalSkalęPos skalaPos / 0.98 stempluj czekaj 50]


Żółwie: ukrywanie i pokazywanie

pokażMnie
pż
schowajMnie
sż
ustalWidoczny
ustalZakWid
widoczny
widoczny?
zakwid

Każdy żółw może być widoczny lub ukryty na swoim miejscu, tj. stronie lub planszy. Ponadto, dla każdego żółwia poleceniem ustalZakWid można ograniczyć obszar, na którym jest on widoczny. To polecenie określa prostokąt, w obrębie którego żółw będzie wyświetlany. Żółw może jednak rysować i pisać teksty poza swoim zakresem widoczności (patrz Żółwie: zakres i styl zakresu).

Aktualny zakres widoczności żółwia jest pamiętany w jego ustawieniu zakwid. Widoczność żółwia może być odczytywana i modyfikowana przy pomocy następujących procedur:

Procedura | Typ | Opis
pokażMnie | P | Działa tak samo jak pż.
pż | P | Pokazuje wszystkie aktywne żółwie na ich miejscach.
schowajMnie | P | Działa tak samo jak sż.
sż | P | Chowa wszystkie aktywne żółwie ze strony lub planszy (ale nie modyfikuje ich w inny sposób). Aby uczynić wszystkie aktywne żółwie ponownie widoczne należy użyć polecenia pż. Żeby sprawdzić, czy pierwszy aktywny żółw jest widoczny należy użyć funkcji widoczny?.
ustalWidoczny wartość logiczna | P | ustalWidoczny "prawda działa tak samo jak pż. ustalWidoczny "fałsz działa tak samo jak sż.
ustalZakWid prostokąt | P | Ustala obszar, w obrębie którego żółw będzie widoczny, na dany prostokąt (tzn. modyfikuje ustawienie zakwid).
widoczny | F | Wynikiem jest aktualna wartość ustawienia widoczny pierwszego aktywnego żółwia. Działa tak samo jak funkcja widoczny?.
widoczny? | F | Wynikiem jest prawda, jeśli pierwszy aktywny żółw jest widoczny na swoim miejscu. W przeciwnym przypadku wynikiem jest fałsz. Odpowiada ustawieniu widoczny żółwia.
zakwid | F | Wynikiem jest prostokąt, w obrębie którego pierwszy aktywny żółw będzie widoczny (tzn. wynikiem funkcji jest wartość ustawienia zakwid).


Żółwie: zakres i styl zakresu

oknoŻółwia
sklej
stylZakresu
ustalStylZakresu
ustalZakres
zakres

Każdy żółw żyje na swoim miejscu, tzn. stronie lub planszy. W obrębie jego miejsca określony jest prostokąt, po którym żółw kreśli linie, rysuje figury, pisze teksty, itd. Istnieją cztery różne sposoby postępowania, kiedy żółw przekracza granice swojego zakresu. Może się znajdować w jednym z czterech trybów: sklej, okno, płot lub odbij. Czasami wygodnie jest, aby część żółwi znajdowała się w trybie sklej, inne w trybie okno, a jeszcze inne na przykład w trybie odbij ... itp.

Dla każdego żółwia można poleceniem ustalZakres ograniczyć (lub rozszerzyć) zakres działania (czyli prostokąt, w obrębie którego żółw rysuje) na stronie lub planszy. Można także określić prostokąt, w obrębie którego żółw jest widoczny (ustawienie zakwid). Obydwa te zakresy (widoczności i rysowania) mogą być oddzielnie określane dla każdego żółwia. Aktualny zakres działania i jego styl są pamiętane w ustawieniach zakres i stylZakresu. Mogą one być odczytywane i modyfikowane przy pomocy następujących procedur:

Procedura | Typ | Opis
oknoŻółwia
(oknoŻółwia prostokąt )
(oknoŻółwia []) 		P Ustala zakres działania dla każdego aktywnego żółwia. W obrębie zakresu żółw może rysować, pisać teksty itd. Polecenie przedefiniowuje także zakres widoczności żółwia, oraz ustala styl zakresu na okno.

Jeśli polecenie nie ma parametru i nie był wcześniej ustalany zakres działania żółwia, to zostanie on ustalony, a także zakwid, jako cały obszar miejsca żółwia.

Jeśli parametrem jest prostokąt, to zostanie ustalony nowy zakres i zakwid.

Jeśli parametrem jest lista pusta [], to polecenie usuwa poprzednie ustawienie zakresu i definiuje zakres i zakwid jako cały obszar miejsca żółwia.

Kiedy żółw jest tworzony, zawsze znajduje się w trybie sklej, a jego zakres i zakwid to cała strona lub plansza. Jeśli przesuniemy żółwia gdzieś "daleko" i zgubi się na nieograniczonej płaszczyźnie, to można znaleźć jego pozycję funkcją poz lub przywołać go do pozycji macierzystej poleceniem wróć.

Polecenie (oknoŻółwia prostokąt ) działa tak samo jak:

? ustalZakres prostokąt
? ustalZakwWid prostokąt
? ustalStylZakresu "okno
sklej
(sklej prostokąt )
(sklej []) 		P Ustala zakres działania dla każdego aktywnego żółwia. W obrębie zakresu żółw może rysować, pisać teksty itd. Polecenie przedefiniowuje także zakres widoczności żółwia, oraz ustala styl zakresu na sklej.

Jeśli polecenie nie ma parametru i nie był wcześniej ustalany zakres działania żółwia, to zostanie on ustalony, a także zakwid, jako cały obszar miejsca żółwia.

Jeśli parametrem jest prostokąt, to zostanie ustalony nowy zakres i zakwid.

Jeśli parametrem jest lista pusta [], to polecenie usuwa poprzednie ustawienie zakresu i definiuje zakres i zakwid jako cały obszar miejsca żółwia.

Kiedy żółw jest tworzony, zawsze znajduje się w trybie sklej, a jego zakres i zakwid to cała strona lub plansza.

Polecenie (sklej prostokąt) działa tak samo jak:

? ustalZakres prostokąt
? ustalZakWid prostokąt
? ustalStylZakresu "sklej
stylZakresu | F | Wynikiem jest aktualny styl zakresu pierwszego aktywnego żółwia, tzn. jedno ze słów sklej, okno, płot lub odbij.
ustalStylZakresu styl | P | Ustala styl zakresu każdego aktywnego żółwia na dany styl (sklej, okno, płot lub odbij). Domyślnym stylem jest sklej.
ustalZakres prostokąt
ustalZakres []

P
Ustala zakres wszystkich aktywnych żółwi (w obrębie ich miejsc) na dany prostokąt. Polecenie jest najczęściej używane do ograniczenia obszaru rysowania żółwia do mniejszego prostokąta.

To polecenie ustala dla aktywnych żółwi obszar kreślenia linii, rysowania figur, pisania tekstów itd. Aktualne zachowanie żółwia na granicy zakresu jest określone przez styl zakresu.

Zakres może być większy niż plansza lub strona, na której żyje żółw (jakkolwiek, dla stylu zakresu okno jest to bez znaczenia).

Jeśli parametrem jest lista pusta [], to zakresem będzie całe miejsce żółwia, tzn. cała strona lub plansza. Jest to domyślne ustawienie.

zakres
 | F
 | Wynikiem jest aktualny zakres pierwszego aktywnego żółwia. Jest to prostokąt [X Y szer wys] lub lista pusta [], która reprezentuje całe miejsce żółwia.


Wiele żółwi

Żółw jest podstawowym obiektem środowiska Imagine. Projekty są bardziej interesujące, kiedy używamy wielu żółwi zamiast jednego. Wiele żółwi może równolegle rysować oraz pomagać tworzyć złożone rysunki na ekranie. Liczba żółwi jest ograniczona jedynie przez hardware, na którym pracuje Imagine.

Kiedy uruchomimy Imagine, istnieje tylko jeden żółw o nazwie ż1 (jeśli nie zmienimy tej standardowej reguły) żyjący na stronie s1. Kolejne żółwie można tworzyć następującymi metodami:

  • klikając w przycisk Nowy żółw paska narzędzi, a potem na stronie lub planszy,
  • poleceniem nowy "Żółw [ … ustawienia …] tworzącym nową jednostkę klasy Żółw,
  • poleceniem (nowyObiekt "Żółw ustawienie wartość … ) działającym tak samo jak nowy,
  • poleceniem nowaKlasa "Żółw "mojaKlasa [ … ] tworzącym klasę żółwi bazujących na klasie Żółw, prawdopodobnie z dodanymi lub zmienionymi pewnymi cechami, zmiennymi obiektu, procedurami, zdarzeniami itp. Potem poleceniem nowy lub nowyObiekt można utworzyć nowego żółwia bazującego na klasie mojaKlasa,
  • poleceniem nowy lub nowyObiekt tworzącym nowego żółwia na bazie innego żółwia użytego jako prototyp. Na przykład nowy "ż1 [postać :gwiazda pisak pod].

Każdy żółw żyje na stronie lub planszy nazywanej miejscem żółwia. Po swoim miejscu przez całe swoje życie żółwie mogą przesuwać się, rysować, pisać teksty, itd. Każdy żółw posiada unikalną nazwę w obrębie strony - nawet jeśli żółwie żyją na różnych planszach tej samej strony lub na stronie i planszy osadzonej na tej stronie. Dzięki tej regule można bezpośrednio odwołać się do dowolnego żółwia aktualnej strony używając jego nazwy. Żeby odwołać się do żółwia żyjącego na innej stronie należy oprócz nazwy żółwia podać nazwę strony, na przykład:

? s3'ż4'np 30

; lub
? proszę "s3'ż3 [np 50]

Usunąć żółwia lub żółwie można w następujący sposób:

? usuńObiekt "ż22
; lub
? usuńObiekt [ż2 ż4 ż20]

; lub
? usuńObiekt wszystkie

W danym momencie żółw jest aktywny lub nieaktywny. Żółwie pamiętane są na dwóch listach:

  • wszystkie - lista wszystkich żółwi żyjących na stronie lub planszy.
  • kto - lista wszystkich aktualnie aktywnych żółwi.

Dwie ważne reguły podczas pracy z wieloma żółwiami:

  • Dowolne polecenie dotyczące żółwia (np. przesunięcie do przodu) jest wykonywane równolegle przez wszystkie aktywne żółwie.
  • Wynikiem dowolnej funkcji dotyczącej żółwia (np. funkcja zwracająca pozycję żółwia) jest wartość odpowiadająca ustawieniu pierwszego aktywnego żółwia. Jeśli nie ma aktywnego żółwia, to wystąpi błąd.

Tworząc zaawansowane projekty metodami programowania obiektowego, korzystające z wielu żółwi, bardzo użyteczne mogą być procedury pierwotne takie jak klasa?, jest?, ostNazwa, mojaNazwa, mojeMiejsce, obiekt?, maRodzica?.

Zobacz także:


Procedury zarządzające wieloma żółwiami

każdy
kto
ktoNaStronie
proszę
proszęKażdego
słuchaj
wszystkie
wszystkieZ

Kiedy określamy żółwie jako parametry poleceń proszę, słuchaj lub proszęKażdego musimy podać ich nazwy, ponieważ do obiektów można się odwołać tylko za pośrednictwem ich nazw (albo za pośrednictwem obiektów-aliasów).

Procedura Typ Opis
każdy lista instrukcji P Każdy aktywny żółw (w kolejności występowania na liście kto) wykonuje daną listę instrukcji.

Chwilowo tylko pierwszy aktywny żółw (lub inny kompatybilny obiekt) wykonuje wszystkie instrukcje danej listy. Staje się on chwilowo adresatem. Następnie to samo robi drugi aktywny żółw, trzeci, itd.

Można użyć funkcji kto na liście instrukcji: jej wartością w danym momencie jest nazwa pojedynczego żółwia aktualnie wykonującego instrukcje.

Po wykonaniu polecenia każdy, aktywne są te żółwie, które były przed wykonaniem polecenia.

Polecenie każdy jest podobne do polecenia proszę, różnica polega na tym, że w poleceniu każdy daną listę instrukcji wykonuje jeden żółw po drugim, a w przypadku polecenia proszę instrukcje są wykonywane równolegle przez wszystkie żółwie będące parametrem polecenia.

? usw usuńObiekt "ż1
? powtórz 20 [nowy "Żółw [kierunek (npw * 18)]]
? słuchaj wszystkie
? ustalPostać [ukp "czerwony ugp 5 np 30]
? pod
? bezKońca [każdy [np bp kto pw bp kto czekaj 1]]
kto F Wynikiem jest lista nazw wszystkich żółwi (lub innych kompatybilnych obiektów) aktywnych w uruchomionym procesie, tzn. proces wylicza wartość kto. Jeśli jest tylko jeden aktywny żółw (lub inny obiekt) w procesie, wynikiem kto jest jego nazwa zamiast jednoelementowej listy.

Żółwie (lub inne obiekty) są aktywowane poleceniem słuchaj oraz chwilowo poleceniem proszę:

? proszę [ż4 ż2] [pokaż kto]
[ż4 ż2]

Funkcja kto bywa często używana razem z poleceniem każdy:

? usuńObiekt wszystkie
? powtórz 10 [nowy "Żółw [nazwa (npw)]]
? słuchaj wszystkie
? bezKońca [każdy [np kto pw kto czekaj 1]]

Więcej szczegółów na temat poleceń kto i ktoNaStronie znajduje się w sekcji procesy.
ktoNaStronie F Wynikiem jest lista nazw wszystkich aktywnych żółwi (lub innych aktywnych kompatybilnych obiektów) funkcjonujących na aktywnej stronie. Jeśli jest tylko jeden aktywny żółw (lub inny obiekt) funkcjonujący na aktywnej stronie, to wynikiem funkcji ktoNaStronie jest jego nazwa zamiast jednoelementowej listy.

Informacja dotyczy strony, więc wynik funkcji dla wszystkich plansz osadzonych na tej stronie będzie taki sam.

Kompatybilne obiekty inne niż żółwie mogą być także aktywowane poleceniem słuchaj, a wynikiem funkcji ktoNaStronie będą ich nazwy.
proszę żółwie lista instrukcji
proszę żółwie [ wyrażenie ] 		P
F 		To jest:
  • polecenie, jeśli drugim parametrem jest lista instrukcji do wykonania.
  • funkcja, jeśli drugim parametrem jest lista zawierająca wyrażenie dające wynik.

Jeśli proszę jest poleceniem, to dany żółw lub dane żółwie (lub inne kompatybilne obiekty) wykonują polecenia zawarte na danej liście instrukcji. Te żółwie mogą być aktywne lub nie – na czas wykonywania polecenia staną się chwilowo aktywne. Inaczej niż w przypadku polecenia każdy, dane żółwie wykonują polecenia z listy instrukcji równolegle.

Jeśli proszę jest funkcją, to dany żółw lub dane żółwie staną się chwilowo aktywne (tzn. wynikiem funkcji kto będzie czasowo pierwszy parametr proszę), następnie wyliczone zostanie dane wyrażenie. Jego wartość jest wynikiem funkcji.

Po wykonaniu procedury proszę, aktywne są te żółwie, które były przed wykonaniem procedury.

Zauważmy, że:

jeśli powiemy proszę "ż1 […], to zarówno adresatem jak i aktywnym obiektem staje się czasowo ż1,

proszę "ż1 [np 10] oznacza to samo co ż1'np 10 (w notacji z apostrofem),

proszę [ż1 ż2 ż3] […] jest wykonywane w następujący sposób:

  • Zapamiętywana jest lista aktywnych obiektów (aby przywrócić ją po zakończeniu wykonywania procedury).
  • Znajdowany jest wspólny przodek obiektów (na przykład żółwi) - danych procedury proszę.
  • Stają się one czasowo aktywne.
  • Nie zmienia się adresat.
  • Jeśli polecenie do wykonania należy do wspólnego przodka (na przykład, jest procedurą klasy Żółw), każdy czasowo aktywny obiekt wykonuje równolegle to polecenie (lub jego własną wersję, jeśli jest przedefiniowane dla określonego obiektu).
  • Jeśli polecenie nie należy do przodka, to jest wykonywane przez adresata.
  • Przywracana jest zapamiętana lista aktywnych obiektów.
proszęKażdego żółwie lista instrukcji P Kombinacja poleceń proszę i każdy, tzn.
proszęKażdego żółwie lista_instrukcji jest równoważne poleceniu
proszę żółwie [każdy lista_instrukcji].
słuchaj żółwie P Dane żółwie stają się aktywne. Parametrem muszą być nazwy żółwi (lub innych kompatybilnych obiektów) funkcjonujących na aktywnej stronie (niektóre bezpośrednio na stronie, inne na planszach osadzonych na tej stronie).

Po uruchomieniu Imagine jedynym istniejącym i aktywnym żółwiem jest ż1:

? pokaż kto
ż1

Jeśli użyjemy polecenia słuchaj w wierszu poleceń, to modyfikuje ono listę kto procesu wiersza poleceń i listę ktoNaStronie aktywnej strony. Jeśli zostanie użyte w innym procesie, to zmodyfikuje listę kto tego procesu.

Polecenie słuchaj nie zmienia adresata.

Inne kompatybilne obiekty mogą być także aktywowane poleceniem słuchaj, na przykład:

? słuchaj [p1 p2 p3]
; to są 3 plansze
? cs

Polecenie cs zostanie wykonane przez wszystkie trzy aktywne plansze.
wszystkie

F Wynikiem jest lista wszystkich żyjących żółwi na adresacie, czyli stronie lub planszy. Jeśli adresatem funkcji jest okno główne (domyślny adresat), to wynikiem jest lista żółwi żyjących na aktywnej stronie.

Jeśli strona zawiera kilka plansz z ich własnymi żółwiami, to nie znajdą się one na liście wszystkie tej strony. Podobnie, jeśli plansza p zawiera inne plansze z żółwiami, to nie znajdą się one na liście wszystkie planszy p.

? pokaż wszystkie
[ż1]
? pokaż s1'wszystkie
[ż1]
? pokaż p1'wszystkie
[ż2 ż3]
? pokaż p2'wszystkie
[ż4 ż5]

Lista wszystkie może być różna od listy kto – niektóre lub wszystkie żółwie mogą nie być aktywne.

Funkcja wszystkie działa tak samo jak wszystkieZ "Żółw.

Kolejność występowania żółwi na liście wszystkie odpowiada kolejności ich tworzenia. Ten porządek może być zmieniony poleceniem kolż. Żółwia można usunąć poleceniem usuńObiekt.

Funkcja wszystkie należy do klasy Strona (i jest dziedziczona przez każdą planszę) i obiektu Okno główne.
wszystkieZ klasa
wszystkieZ jednostka 		F Wynikiem jest lista nazw wszystkich jednostek, które są potomkami danej klasy i ich miejscem jest aktualny adresat).

Jeśli parametrem jest jednostka, to wynikiem jest lista wszystkich jednostek utworzonych na bazie danej jednostki włącznie z nią:

? nowy "Plansza [nazwa mojaPlansza rozmiar [280 100]]
? mojaPlansza'nowy "Żółw [nazwa mójŻółw grubość 10]
? pokaż mojaPlansza'wszystkieZ "mójŻółw
[mójŻółw]
? mojaPlansza'nowy "mójżółw [poz [100 0]]
? pokaż mojaPlansza'wszystkieZ "mójŻółw
[mójŻółw ż2]
? nowaKlasa "Żółw "mojaKlasaŻółwi [kolpis czerwony7]
? pokaż mojaPlansza'wszystkieZ "Żółw
[mójŻółw ż2]
? mojaPlansza'nowy "mojaKlasaŻółwi [poz [-100 0]]
? pokaż mmojaPlansza'wszystkieZ "Żółw
[mójŻółw ż2 ż3]
? nowy "mojaKlasaŻółwi [poz [-100 -100]]
; Miejscem tego żółwia nie jest mojaPlansza.
; Nie będzie go na liście wszystkieZ
; dla tej planszy.
? pokaż mojaPlansza'wszystkieZ "Żółw
[mójŻółw ż2 ż3]

Przykłady:

? pokaż s1'ktoNaStronie
ż1
? pokaż kto
ż1
? proszę "p2 [pokaż kto]
p2
? pokaż kto
ż1
? pokaż proszę aktywnaStrona [kto]
s1
? pokaż proszę aktywnaStrona [ktoNaStronie]
ż1


Tworzenie żółwi na pustej stronie

Jeśli utworzymy nową stronę (klikając w przycisk Nowa strona paska narzędzi lub przy pomocy polecenia nowy "Strona […]), to nie zawiera ona żadnych żółwi:

? pokaż wszystkie
[]
? pokaż kto
[]

Jeśli potem utworzymy żółwia (dowolną metodą), stanie się on automatycznie aktywny na tej stronie:

? nowy "Żółw [nazwa Piotr]
? pokaż kto
Piotr

Nowotworzony żółw jest także aktywny, kiedy:

  • Nie ma żadnego żółwia na stronie i zostanie utworzony nowy żółw na planszy osadzonej na tej stronie.
  • Zostaną usunięte wszystkie żółwie ze strony (i plansz osadzonych na tej stronie), a potem zostanie utworzony nowy żółw.


Nachodzące żółwie

kolż
nachodzą?
nachodzące
nachodząceŻ
naFront
naTył
poza?
wewnątrz?; w?

Kiedy mamy na stronie lub planszy kilka żółwi, sposób w jaki ich wizerunki nachodzą na siebie, zależy (standardowo), od ich wieku, tzn. kolejności, w jakiej były tworzone. Najmłodszy żółw jest zawsze na wierzchu, a najstarszy na spodzie. Dokonuje się to dzięki rysowaniu żółwi, od najstarszego do najmłodszego, według kolejności występowania na liście wszystkie. Kolejność żółwi na liście wszystkie może być zmieniona poleceniem kolż. To umożliwia osiąganie interesujących efektów animacyjnych.

Żółwie nachodzą na siebie kiedy postać jednego żółwia (jego aktualna klatka) ma punkty wspólne z postacią innego żółwia. Istnieją dwie strategie rozpoznawania, kiedy żółwie nachodzą na siebie:

  • Imagine testuje, czy elipsy zawierające postacie żółwi nachodzą na siebie. Jest to domyślna strategia (zmienna wspólna trybNachodzenia Bazy ma wartość 0),

  • Imagine testuje, czy prostokąty zawierające postacie żółwi nachodzą na siebie. Ta strategia jest używana, kiedy zmienna wspólna trybNachodzenia Bazy ma wartość 1.

Dokładne sprawdzanie, czy postacie dwóch żółwi mają co najmniej jeden nieprzezroczysty punkt wspólny mogłoby znacznie spowolnić wszystkie procesy.

Dwie uwagi:

  • Żółw nigdy nie nachodzi na siebie.
  • Żółw, który nie jest widoczny, nigdy nie nachodzi na żadnego żółwia, ani żaden inny żółw nie nachodzi na niego.

Zobacz także nachodząceNaPunkt w sekcji Funkcje informujące o stanie strony i planszy.

Procedura | Typ | Opis
kolż żółwie

P Zmienia kolejność żółwi na liście wszystkie. To umożliwia osiąganie interesujących efektów animacyjnych.

Jeśli parametrem jest nazwa jednego żółwia, to stanie się on najstarszym żółwiem:

? pokaż p2'wszystkie
[ż1 ż2 ż3 ż4 ż5]
? kolż "ż3
[ż3 ż1 ż2 ż4 ż5]

Jeśli parametrem jest lista [żółw1 żółw2 … ], to żółw1 będzie najstarszym żółwiem, tzn. pierwszym elementem listy wszystkie, żółw2 drugim elementem itd. Jeśli dana lista żółwi polecenia kolż nie zawiera wszystkich żółwi, to te, których nie ma na liście zachowują swoją kolejność na liście, ale zostaną przesunięte w prawą stronę (na młodsze pozycje):

? pokaż wszystkie
[ż1 ż2 ż3 ż4 ż5]
? kolż [ż2 ż4]
? pokaż wszystkie
[ż2 ż4 ż1 ż3 ż5]

Jeśli parametrem jest lista postaci [[] żółw1 żółw2 …], to żółwie wymienione na liście staną się najmłodszymi. Reszta nie wymienionych żółwi zachowa swoją kolejność, ale zostanie przesunięta w lewą stronę (na starsze pozycje):

? pokaż wszystkie
[ż1 ż2 ż3 ż4 ż5]
? kolż [[] ż2 ż3]
? pokaż wszystkie
[ż1 ż4 ż5 ż2 ż3]

Jeśli parametrem jest lista postaci [żółw1 żółw2 … [żółwA] żółwB żółwC …], to żółwA zachowa swoją pozycję na liście wszystkie, natomiast żółwie żółw1, żółw2, … zostaną przesunięte bezpośrednio przed żółwia żółwA, a żółwie żółwB, żółwC, … bezpośrednio za niego. Pozostałe zachowają swoje pozycje:

? kolż [ż1 ż2 ż3 ż4 ż5]
? kolż [ż5 [ż3] ż1]
? pokaż wszystkie
[ż2 ż5 ż3 ż1 ż4]

Jeśli nazwa żółwia występuje więcej niż raz na danej liście, to wszystkie wystąpienia za wyjątkiem ostatniego zostaną zignorowane.
nachodzą? żółw
nachodzą? [ żółw1 żółw2 … ] 		F Wynikiem jest prawda, jeśli pierwszy aktywny żółw nachodzi na danego żółwia. Jeśli parametrem jest lista żółwi, to wynikiem będzie prawda, kiedy pierwszy aktywny żółw nachodzi na co najmniej jednego z żółwi wymienionych na danej liście. W przeciwnym przypadku wynikiem funkcji jest fałsz. Nachodzenie żółwi jest testowane zgodnie ze strategią wynikającą z wartości zmiennej trybNachodzenia, zobacz wyżej.
nachodzące | F | Wynikiem jest lista wszystkich żółwi aktualnie nachodzących na pierwszego aktywnego żółwia. Nachodzenie żółwi jest testowane zgodnie ze strategią wynikającą z wartości zmiennej trybNachodzenia, zobacz wyżej.
nachodząceŻ żółw
nachodząceŻ [ żółw1 … ] 		F Wynikiem jest lista żółwi - wybranych z danych żółwi - które nachodzą na pierwszego aktywnego żółwia. Nachodzenie żółwi jest testowane zgodnie ze strategią wynikającą z wartości zmiennej trybNachodzenia, zobacz wyżej.
naFront

P Aktywny żółw (lub żółwie) stanie się najmłodszym żółwiem (lub najmłodszymi żółwiami). Polecenie ż1'naFront działa tak samo jak kolż [[] ż1].

? pokaż wszystkie
[ż1 ż2 ż3 ż4 ż5]
? proszę [ż4 ż3] [naFront]
? pokaż wszystkie
[ż1 ż2 ż5 ż4 ż3]
? słuchaj [ż1 ż4]
? naFront
? pokaż wszystkie
[ż2 ż5 ż3 ż1 ż4]
? ż5'naFront
? pokaż wszystkie
[ż2 ż3 ż1 ż4 ż5]
naTył P Aktywny żółw (lub żółwie) stanie się najstarszym żółwiem (lub najstarszymi żółwiami). Polecenie ż1'naTył działa tak samo jak kolż "ż1.

? pokaż wszystkie
[ż1 ż2 ż3 ż4 ż5]
? proszę [ż4 ż3] [naTył]
; działa tak samo jak
; proszę "ż4 [naTył]
; proszę "ż3 [naTył]
? pokaż wszystkie
[ż3 ż4 ż1 ż2 ż5]
poza? prostokąt | F | Wynikiem jest prawda, jeśli wizerunek pierwszego aktywnego żółwia znajduje się (wystarczy, że częściowo) poza danym prostokątem. Jeśli postać żółwia znajduje się całkowicie wewnątrz tego obszaru, to wynikiem jest fałsz.
wewnątrz? prostokąt
Skrót:
w? 		F Wynikiem jest prawda, jeśli wizerunek pierwszego aktywnego żółwia znajduje się (wystarczy, że częściowo) wewnątrz danego prostokąta. Jeśli postać żółwia znajduje się zupełnie poza tym obszarem, to wynikiem jest fałsz.


O postaciach

Postacie są złożonymi danymi graficznymi, których zwykle używamy jako postacie żółwi. Każda postać jest pustą lub niepustą sekwencją faz.

Z całą tą sekwencją związana jest informacja (dotycząca animacji, kąta zerowego itd.). Każda faza jest pojedynczym obrazem lub sekwencją obrazów klatek, które łącznie tworzą rodzaj filmu, pokazującego na przykład ruch postaci w określonym kierunku. W takim przypadku, różne fazy mogą przedstawiać ruch tej samej postaci w różnych kierunkach (na przykład: marsz postaci w prawo, w kierunku widza, w lewo oraz w głąb ekranu).

Zobacz:

Klasyfikowanie i porównywanie postaci
Wybieranie faz
Usuwanie faz
Tworzenie i modyfikowanie postaci
Konwersja na animowane filmy i odwrotnie
Ustalanie spowolnienia
Atrybuty postaci
Ładowanie, zapisywanie i redagowanie plików LGF
Zaczepienia postaci
Inne informacje o postaciach
Fazy
Używanie plików graficznych jako postaci żółwi


Klasyfikowanie i porównywanie postaci

Każda postać jest sekwencją faz. Liczba faz jest nieograniczona.

Procedura | Typ | Opis
postać? cokolwiek | F | Wynikiem jest prawda, gdy dana jest postać. W przeciwnym przypadku wynikiem jest fałsz.
puste? postać | F | Wynikiem jest prawda, gdy dana postać jest pusta.
równe? postać1 postać2 | F | Wynikiem jest prawda, gdy dwie dane postacie są identyczne. W przeciwnym przypadku wynikiem jest fałsz.

Przykłady:

? przyp "mojaPostać ładob "robot
? pokaż :mojaPostać
{postać4}
? pokaż postać? :mojaPostać
prawda
? pokaż puste? :mojaPostać
fałsz
? pokaż równe? bo :mojaPostać bo :mojaPostać
prawda
? pokaż równe? :mojaPostać bp :mojaPostać
fałsz


Wybieranie faz

Wynikiem następujących funkcji jest element (tzn. postać mająca jedną fazę) lub część (postać złożona z wielu faz) danej postaci. Jeśli dana jest pusta postać, wystąpi błąd.

Procedura | Typ | Opis
element liczba postać
element wycinek postać 		F Wynikiem jest faza danej postaci o numerze wskazanym prze daną liczbę. Powinna to być liczba całkowita nie mniejsza niż 1 i nie większa niż długość (liczba faz) postaci

Jeśli dana liczba nie jest całkowita, to jest zaokrąglana do wartości całkowitej.

Jeśli pierwsza dana to wycinek [X Y], wynikiem jest postać utworzona z Y kolejnych faz danej postaci - poczynając od fazy nr X.

Jeśli dany wycinek ma postać [[X1 Y1][X2 Y2] … ], to wynikiem jest postać utworzona przez połączenie wielu prostych wycinków.
los postać | F | Wynikiem jest postać, która ma tylko jedną - losowo wybraną fazę danej postaci.
ost postać | F | Wynikiem jest postać, która ma tylko jedną fazę - ostatnią fazę danej postaci.
pierw postać | F | Wynikiem jest postać, która ma tylko jedną fazę - pierwszą fazę danej postaci.

Przykłady:

? niech "mojaPostać ładob "robot
? pokaż postać? pierw :mojaPostać
prawda
? pokaż długość :mojaPostać
4
? pokaż długość element [2 3] :mojaPostać
3


Usuwanie faz

bezElementu; be
bezElNum; ben
bezOst; bo
bezPierw; bp
odElementu; odel

Każda postać jest sekwencją faz. Wynikiem następujących funkcji jest dana postać bez niektórych faz lub złożona z tych samych faz ułożonych w innej kolejności.

Procedura Typ Opis
bezElementu postać1 postać2
Skrót:
be 		F Dana postać1 musi się składać tylko z jednej fazy. Wynikiem jest postać2 z usuniętymi wszystkimi wystąpieniami tej fazy.
bezElNum liczba postać
bezElNum wycinek postać
Skrót:
ben 		F Jeśli pierwsza dana to liczba – interpretowana jako numer fazy postaci – to wynikiem jest dana postać bez tej fazy. Powinna to być liczba całkowita nie mniejsza niż 1 i nie większa niż długość (liczba faz) postaci.

Jeśli dana liczba nie jest całkowita, to jest zaokrąglana do wartości całkowitej.

Jeśli pierwsza dana to wycinek [X Y], wynikiem jest dana postać z wyciętą sekwencją Y kolejnych faz (zaczynając od fazy numer X).
bezOst postać
Skrót:
bo 		F Wynikiem jest dana postać bez jej ostatniej fazy.
bezPierw postać
Skrót:
bp 		F Wynikiem jest dana postać bez jej pierwszej fazy.
odElementu postać1 postać2
Skrót:
odel 		F Dana postać1 musi się składać tylko z jednej fazy. Wynikiem jest postać2 od pierwszego wystąpienia tej fazy. Jeśli nie występuje ona w postaci2, wynikiem jest pusta postać.

Przykłady:

? przyp "alfabet ładPos "abc.lgw
? pokaż długość :alfabet
26
pokazana została liczba faz postaci
? pokaż postać? bezPierw :alfabet
prawda


Tworzenie i modyfikowanie postaci

nak
nap
postać
powlecz
pustaPostać
tasuj
wspak
zastąp

Te funkcje (z wyjątkiem powlecz) tworzą jedną postać z wielu postaci lub zmieniają kolejność faz danej postaci. Funkcja powlecz zmienia kolory danej postaci.

Procedura | Typ | Opis
nak postać1 postać2 F nak to skrót od na koniec.

Wynikiem jest postać utworzona przez połączenie wszystkich faz postaci2 i wszystkich faz postaci1.

nap postać1 postać2 jest równoważne z sumaPostaci postać2 postać1. (Zwróć uwagę na kolejność danych.)

nap postać1 postać2 F nap to skrót od na początek.

Wynikiem jest postać utworzona przez połączenie wszystkich faz postaci1 i wszystkich faz postaci2.

nap postać1 postać2 jest równoważne z sumaPostaci postać1 postać2.
powlecz kolor postać F Wynikiem jest dana postać, której wszystkie kolory zmieniły odcień na takie, jak dany kolor.

puspos F Wynikiem jest pusta postać, która nie ma żadnych faz. Żółwiom można również nadawać taką postać za pomocą polecenia ustalPostać.

? ustalPostać puspos
? pokaż postać
{postać 0}
sumaPostaci postać1 postać2
(sumaPostaci postać1 … )
Skrót:
sumPos 		F Wynikiem jest postać utworzona przez połączenie wszystkich danych postaci. Wynik składa się ze wszystkich faz wszystkich danych postaci, ale może być pusty.
tasuj postać | F | Wynikiem jest postać złożona ze wszystkich faz danej postaci lecz o zmienionej losowo kolejności.
wspak postać | F | Wynikiem jest dana postać z odwrotną kolejnością faz. Ostatnia faza będzie pierwszą, przedostatnia – drugą... itd.
zastąp liczba postać1 postać2
zastąp wycinek postać1 postać2 		F Jeśli pierwsza dana to liczba – interpretowana jako numer fazy – wynikiem jest druga dana – postać1 – w której faza o danym numerze została zastąpiona przez postać2. Dana liczba musi być niemniejsza niż 1 i niewiększa niż liczba faz postaci1. Jeśli to nie jest liczba całkowita, to jest zaokrąglana do wartości całkowitej.

Jeśli pierwsza dana jest prostym wycinkiem [początek długość], wynikiem jest druga dana – postać1, której wycinek o danym początku i długości został zastąpiony przez postać2.

Za pomocą zastąp z wycinkiem jako pierwszą daną można usuwać sekwencje faz z postaci i wstawiać. Jeśli postać1 ma 5 faz, to wynikiem zastąp [1 0] postać1 postać2 jest postać1 z wstawionymi na początek wszystkimi fazami postaci2, zaś wynikiem zastąp [6 0] postać1 postać2 jest postać1 z wstawionymi na koniec wszystkimi fazami postaci2.

Przykłady:

? przyp "alfabet ładPos "abc
? pokaż równe? pierw :alfabet ost wspak :alfabet
prawda
? pod ustalPostać "unicykl
? stempluj np 60
? ustalPostać powlecz "pomarańczowy ładPos "unicykl
? stempluj np 60
? ustalPostać powlecz "ciemnoniebieski4 ładPos "unicykl
? stempluj np 60
? ustalPostać powlecz "szary10 ładPos "unicykl
? stempluj np 60
? ustalPostać powlecz "szary3 ładPos "unicykl
? stempluj np 60
? ustalPostać powlecz "czerwony8 ładPos "unicykl
? stempluj


Konwersja na animowane filmy i odwrotnie

naFazy
naFilm

Postać składa się z wielu (zero lub więcej) faz, których zwykle używamy do pokazywania aktualnego kierunku żółwia. Każda faza może się składać z jednej lub większej liczby klatek, które służą do animacji postaci żółwia - wrażenia ruchu w określonym kierunku. Dwie funkcje naFilm oraz naFazy służą do konwersji faz na animowane filmy oraz filmów na fazy. Można to także robić bardzo wygodnie w Edytorze Postaci.

Rysunek przedstawia podgląd postaci naPiłce w Edytorze Postaci:

  • Postać w górnej części ma jedną fazę (do pokazywania wszystkich kierunków) złożoną z 6 klatek.
  • W dolnej części widzimy tę samą postać przekształconą na sekwencję 6 faz, z których każda ma jedną klatkę.
Procedura Typ Opis
naFazy postać
(naFazy postać1 postać2 … ) 		F Dana postać powinna mieć tylko jedną fazę złożoną z N klatek. Wynikiem jest postać, która ma N faz, każda złożona z jednej klatki danej postaci.
naFilm postać
(naFilm postać1 postać2 … ) 		F Wynikiem jest postać, która ma tylko jedną fazę utworzoną przez połączenie wszystkich klatek wszystkich faz danej postaci.

Przykłady:

? przyp "naPiłce ładPos "naPiłce
? pokaż długość :naPiłce
1
? ustalPostać :naPiłce
? ustalPostać naFazy :naPiłce
Zauważ, jaka jest różnica między tymi postaciami.


Ustalanie spowolnienia

Jeśli faza postaci składa się z wielu klatek i przedstawia na ekranie postać żółwia, Logo automatycznie zmienia klatki jedna po drugiej w cykliczny sposób. Czas wyświetlania konkretnej klatki określa spowolnienie ustalone osobno dla każdej klatki.

Procedura | Typ | Opis
spowolnienie postać | F | Wynikiem jest spowolnienie pierwszej klatki pierwszej fazy danej postaci.
ustalSpowolnienie postać liczba | F | Wynikiem jest dana postać, której każda klatka każdej fazy ma ustalone spowolnienie równe danej liczbie. Druga dana musi być nieujemną liczbą całkowitą. Spowolnienie 1000 odpowiada 1 sekundzie. Różne spowolnienia dla różnych klatek można ustalić tylko w Edytorze Postaci.

Przykłady:

? przyp "alfabet ładPos "abc
? pokaż spowolnienie :alfabet
0
Zobacz jaki skutek da:
? ustalPostać naFilm :alfabet
? ustalPostać naFilm ustalSpowolnienie :alfabet 150


Atrybuty postaci

atrPos
ustalAtrPos

Gdy określona postać staje się wizerunkiem żółwia, Logo pokazując na ekranie nową postać automatycznie zmienia kolejno wszystkie klatki fazy, która wskazuje aktualny kierunek żółwia. Tempo zmian określają odpowiednie spowolnienia klatek. Ta automatyczna animacja (podobna do animacji obrazów GIF) zostanie wykonana raz albo będzie powtarzana bez końca zależnie od wartości ustawienia film danej postaci (fałsz albo prawda).

Na przykład, jeśli postać składa się z 4 faz, standardowo pierwsza faza będzie reprezentowała wszystkie kierunki żółwia z zakresu od -45 do 45 stopni, druga - wszystkie kierunki od 45 do 135 itd. Środkowa wartość zakresu kątów odpowiadających pierwszej fazie jest nazywana orientacją. Standardowo jest to 0 stopni, tzn. kierunek w górę.

W razie potrzeby, można zmienić orientację posługując się funkcją ustalAtrPos. Na przykład, jeśli postać ma 2 fazy, przedstawiające jakąś istotę wędrującą od lewej do prawej i przeciwnie, dobrze jest nadać orientacji wartość 90 stopni. Można to zrobić posługując się wyrażeniem ustalAtrPos postać [orientacja 90] (Orientację można też zmienić w Edytorze Postać).

Czasem przydatna jest postać, złożona z kilku faz niepowiązanych z kierunkiem żółwia (jak na przykład różne ustawienia świateł sterujących ruchem drogowym ). Do wyróżnienia takich przypadków służy ustawienie styl, które może mieć wartość faza albo kierunek.

Procedura | Typ | Opis
atrPos postać | F | Wynikiem jest lista - ustawienia danej postaci, która określa wartości ustawień: styl, orientacja oraz film.
ustalAtrPos postać ustawienia F Wynikiem jest dana postać ze zmienionymi atrybutami zgodnie z danymi ustawieniami.

Dane ustawienia określają trzy wartości:

  • styl - może mieć wartość: kierunek albo faza, domyślną wartością jest faza,
  • orientacja - wartością może być dowolny kąt, określający środek zakresu kierunków reprezentowanych przez pierwszą fazę, domyślną wartością jest 0 stopni, czyli kierunek w górę,
  • film - może mieć wartość prawda albo fałsz, domyślną wartością jest prawda co oznacza, że sekwencja klatek określonej fazy będzie cyklicznie wyświetlana bez końca, w przeciwnym przypadku zostanie wyświetlona tylko raz.

Funkcja faza zawsze daje numer aktualnie wyświetlanej fazy postaci żółwia. Ten automatyczne mechanizm można wyłączyć za pomocą ustalAnimację "fałsz, oraz ponownie włączyć za pomocą ustalAnimację "prawda. Gdy animacja jest zatrzymana, można ustalić, która klatka ma być następnie wyświetlona za pomocą polecenia ustalKlatkę liczba.


Otwieranie, zapisywanie i redagowanie plików LGF

dopiszPostać
ładListPos
ładPos
redPos
zapiszPostać

Procedura | Typ | Opis
dopiszPostać plik postać
dopiszPostać plik [ postać … ] 		P Dopisuje daną postać (lub wiele postaci) na koniec danego pliku LGF. Jeśli taki plik nie istnieje, tworzy go.
ładListPos plik F Wynikiem jest zawartość danego pliku. Jeśli w pliku zapisano jedną lub więcej postaci, wynikiem będzie ich lista. Jeśli w pliku nie zapisano żadnej postaci, wynikiem funkcji będzie pusta lista [].

Jeśli nie określono ścieżki, przeszukiwany jest folder (ścieżka "postacie).
ładPos plik
ładPos "Schowek 		F Wynikiem jest postać zapisana w pliku LGF lub dowolnym innym akceptowalnym pliku graficznym. Jeśli w nazwie pliku nie ma rozszerzenia, ładPos dodaje .LGF. Jeśli nie określono ścieżki, przeszukiwany jest folder (ścieżka "postacie).

Jeśli chcesz przypisać tę postać żółwiowi jako jego nowy wizerunek, użyj polecenia ustalPostać.

Jeśli dane jest słowo Schowek, wynikiem funkcji jest postać zapisana w schowku. W takim przypadku Schowek musi mieć odpowiednią zawartość, np. utworzoną przez polecenie zapiszPostać.
redPos słowo P Otwiera Edytor Postaci, umożliwiając redagowanie postaci będącej wartością zmiennej, której nazwą jest dane słowo, i ostatecznie odpowiednią modyfikację wartości tej zmiennej.

Dane słowo musi być nazwą zmiennej: globalnej, lokalnej, wspólnej lub prywatnej, której wartością jest postać.

zapiszPostać plik [ postać … ] | P | Zapisuje wszystkie dane postacie w pliku LGF. By ponownie otworzyć np. trzecią z nich można użyć: ładPos "plik:3.
ładPos plik liczba F Wynikiem jest postać zapisana w pliku LGF.

Jeśli w pliku zapisano wiele postaci, dana liczba określa, która z nich będzie wynikiem funkcji. Postaci zapisane w pliku są numerowane od zera: 0, 1, 2… . Jeśli dana liczba jest większa niż numer ostatniej postaci w pliku, wynikiem będzie pusta postać.
zapiszPostać plik postać
zapiszPostać "Schowek postać 		P Zapisuje daną postać w danym pliku:
  • Jeśli w nazwie pliku nie podano rozszerzenia, zapiszPostać dodaje LGF.
  • Jeśli rozszerzeniem nazwy pliku jest GIF, to pierwsza faza (czyli cały komplet jej klatek) zostanie zapisana jako animowany gif.
  • Jeśli jest rozszerzenie JPG albo BMP, w pliku zostanie zapisana pierwsza klatka pierwszej fazy danej postaci.
  • Jeśli dane jest słowo Schowek, to dana postać zostanie zapisana w Schowku Windows. Będzie ją można ponownie otworzyć korzystając z funkcji ładPos albo polecenia ustalPostać.

Przykłady:

? przyp "klown ładPos "klown.lgw
? pokaż postać? :klown
prawda
? pokaż :klown
{postać3}
? ustalPostać naFilm :klown


Zaczepienia postaci

Każda klatka każdej fazy dowolnej postaci ma swoje zaczepienie. Zwykle ustalamy je w Edytorze Postaci. Poniższy rysunek ilustruje 3 różne pozycje zaczepienia widoczne w Edytorze Postaci.

Czasem zachodzi potrzeba ustalenia zaczepienia za pomocą języka Logo. Używamy w tym celu następujących funkcji.

Procedura | Typ | Opis
ustalZaczepienie postać [X Y] | F | Wynikiem jest dana postać, w której dla każdej klatki, każdej fazy ustalono zaczepienie [X Y].
zaczepienie postać | F | Wynikiem jest zaczepienie pierwszej klatki pierwszej fazy danej postaci.

Przykłady:

? ustalPostać []
przywraca standardową postać żółwia.
? pokaż zaczepienie postać
pokazuje zaczepienie pierwszej klatki pierwszej fazy.


Inne informacje o postaciach

Procedura | Typ | Opis
długość postać | F | Wynikiem jest liczba faz danej postaci.
element? postać1 postać2 | F | Wynikiem jest prawda, jeśli postać1 jest wycinkiem postaci2 (tzn. jest identyczna z jakąś sekwencją jej kolejnych faz). W przeciwnym przypadku wynikiem jest fałsz.
numel postać1 postać2 | F | Jeżeli dana postać1 jest wycinkiem postaci2, wynikiem funkcji jest numer pozycji od której zaczyna się (pierwsze) wystąpienie postaci1 w postaci2, w przeciwnym przypadku wynikiem jest liczba 0.
rozPos postać | F | Wynikiem jest rozmiar [ szerokość wysokość ] pierwszej klatki pierwszej fazy danej postaci.

Przykłady:

? przyp "klown ładPos "klown.lgw
? pokaż postać? :klown
prawda
? pokaż długość :klown
3
? pokaż rozPos :klown
[62 60]


Fazy

Każda faza jest sekwencją jednej lub więcej klatek mających ustalone spowolnienia. Ale w Logo nie ma specjalnych selektorów i konstruktorów ułatwiających działania na klatkach faz. Jeśli chcemy je tworzyć lub modyfikować (na przykład, zwiększyć spowolnienie piątej klatki trzeciej fazy), musimy:

  1. Przekształcić sekwencję wszystkich klatek na sekwencję faz za pomocą funkcji naFazy.
  2. Zmienić co trzeba.
  3. Przekształcić tę sekwencję ponownie na jedną fazę złożoną z wielu klatek za pomocą funkcji naFilm.

To samo można osiągnąć łatwiej w Edytorze Postaci.


Używanie plików graficznych jako postaci żółwia

Poniższe przykłady pokazują, jak można użyć zawartości popularnych plików graficznych jako wizerunku żółwia:

  • Za pomocą ładPos otwórz bitmapę (zapisaną w pliku plik.bmp) i przypisz ją żółwiowi jako jego nową postać ustalPostać ładPos "plik.bmp, albo jeszcze prościej - ustalPostać "plik.bmp.
  • Standardowy wizerunek żółwia jest postacią złożoną z 24 faz, każda z nich jest zwykłym obrazem bez żadnej animacji (składa się tylko z jednej klatki).

  • Żółw animacyjny Logo Komeniusza jest odpowiednikiem żółwia, którego postać składa się tylko z jednej fazy mającej N klatek. Otwórz plik LGW w Edytorze Postaci. Zaznacz wszystkie fazy (ctrl A) w oknie Treść. Kliknij prawym przyciskiem myszy i wybierz z menu polecenie Zamień wszystkie na klatki. Zapisz rezultat jako plik LGF. Bez tej konwersji, zawartość pliku LGW byłaby interpretowana jako postać złożona z N faz - każda jednoklatkowa, nie byłoby więc żadnej automatycznej animacji. Ale nawet w takim przypadku można wywołać animację za pomocą procedur ustalFazę oraz faza.
  • Po załadowaniu animowanego pliku GIF za pomocą ładPos "plik.GIF, otrzymujemy postać składającą się z jednej fazy mającej wiele klatek, każda z nich ma spowolnienie takie jak plik GIF.


Inne niż żółw narzędzia rysowania

Istnieje wiele procedur dostępnych dla każdej strony i planszy, umożliwiających rysowanie linii, prostokątów, itd. na zasadach innych niż geometria żółwia. Na każdej stronie i planszy dostępny jest niewidzialny pisak kreślący rysunki. Jego kolor, wzór i grubość są określone przez trzy ustawienia strony oraz planszy: kolorLinii, wzórLinii i grubośćLinii (w skrócie kollin, wzlin i grlin). Można zmienić ich wartość za pomocą poleceń: ustalKolorLinii, ustalWzórLinii i ustalGrubośćLinii (w skrócie ustalKollin, ustalWzlin i ustalGrlin). Na stronach i planszach można nie tylko rysować odcinki, prostokąty i elipsy, jak w edytorze grafiki Paint, ale także manualnie określać dane odcinków, dane prostokątów itd., co tworzy nowe wspaniałe możliwości.

Pamiętaj, że tylko konkretne strony i plansze rozpoznają nieżółwiowe procedury rysowania oraz, że ich dane (punkty, prostokąty, itd.) określamy w absolutnym układzie współrzędnych. Używając tych procedur musisz zawsze wskazać adresata. Na przykład:

? elipsaTła [[80 100] [140 140]]
Nie wiem jak wykonać ElipsaTła
Sprawdź pisownię. Może to nowe nieokreślone słowo

Polecenie spowodowało błąd, ponieważ jego adresatem było OknoGłówne, nie strona. Należało napisać:

? s1' elipsaTła [[41 111] [140 140]]
albo
? p1' elipsaTła [[41 111] [140 140]]

Zobacz:


Ustawienie pisaka na stronie/planszy

Poniższe procedury ustalają lub dają aktualną wartość koloru, wzoru i grubości pisaka, jaki jest dostępny na każdej stronie i planszy. Te pisaki są używane przez nieżółwiowe procedury rysowania do kreślenia odcinków, prostokątów, elips itd.

Procedura Typ Opis
grubośćLinii
Skrót:
grLin 		F Wynikiem jest aktualna grubość pisaka adresata, którym musi być strona albo plansza.
kolorLinii
Skrót:
kolLin 		F Wynikiem jest aktualny kolor pisaka adresata, którym musi być strona albo plansza.
ustalGrubośćLinii grubość
Skrót:
ustalGrLin 		P Ustala grubość pisaka adresata, którym musi być strona albo plansza. Domyślną wartością jest 1.
ustalKolorLinii kolor
Skrót:
ustalKolLin 		P Ustala kolor pisaka adresata, którym musi być strona albo plansza. Domyślną wartością jest czarny.
ustalWzórLinii wzór pisaka
Skrót:
ustalWzLin 		P Ustala wzór pisaka adresata, którym musi być strona albo plansza. Domyślną wartością jest 0.
wzórLinii
Skrót:
wzLin 		F Wynikiem jest aktualny wzór pisaka adresata, którym musi być strona albo plansza.


Nieżółwiowe procedury rysowania

daneElipsy
daneOdcinka
daneOwalu
daneProstokąta
daneZamProst
elipsaTła
łukElipsyTła
odcinekTła
owalTła
prostokątTła
punktyTła
rozpylanie
rysowanieOdręczne
zamalujTło
zamProstTła

Adresatem musi być strona albo plansza. Kolor, wzór i grubość linii kreślonych przez poniższe procedury są określone przez wartości ustawień kolorLinii, wzórLinii i grubośćLinii adresata procedury.

Wszystkie nieżółwiowe procedury rysowania korzystają z absolutnego układu współrzędnych odpowiedniej strony lub planszy (na której są kreślone rysunki).

Procedura | Typ | Opis
daneElipsy F Wynikiem jest lista dwóch punktów ustalona przez użytkownika za pomocą myszy. Funkcja po wywołaniu kreśli na stronie lub planszy (będącej adresatem procedury), elipsę której kształt można elastycznie zmieniać za pomocą przeciągania myszą. Położenie i aktualny kształt elipsy wyznacza niewidoczny prostokąt, którego lewy górny róg [X Y] wyznacza początkowa pozycja myszy, a prawy dolny róg - aktualna pozycja wskaźnika myszy. Z chwilą puszczenia lewego przycisku elastyczna elipsa znika i wynik jest ustalony. Będzie to lista utworzona przez 2 punkty: lewy górny i prawy dolny wierzchołek prostokąta wyznaczającego elipsę. Oba te punkty są określone we współrzędnych absolutnych.

Ustalanie danych elipsy można przerwać naciśnięciem prawego przycisku myszy, w takim przypadku wynikiem funkcji daneElipsy będzie pusta lista [].

Jeśli w czasie przeciągania trzymamy wciśnięty klawisz Shift, rysowany jest okrąg.
daneOdcinka F Wynikiem jest lista dwóch punktów ustalona przez użytkownika za pomocą myszy. Funkcja po wywołaniu kreśli na stronie lub planszy (będącej adresatem procedury) odcinek, który można zmieniać za pomocą przeciągania myszą. Początek odcinka wyznacza początkowa pozycja myszy, a koniec - bieżąca pozycja wskaźnika myszy. Z chwilą puszczenia lewego przycisku odcinek znika i wynik jest ustalony. Będzie to lista utworzona przez 2 końce odcinka. Oba te punkty są określone we współrzędnych absolutnych.

Ustalanie danych odcinka można przerwać naciśnięciem prawego przycisku myszy, w takim przypadku wynikiem funkcji daneOdcinka będzie pusta lista [].

Jeśli w czasie przeciągania trzymamy wciśnięty klawisz Shift, rysowany jest odcinek pionowy albo poziomy albo pod kątem 45 stopni do poziomu.
daneOwalu | F | Wynik jest identyczny jak funkcji daneElipsy, ale w trakcie jego ustalania na ekranie widoczna jest elipsa zamalowana na aktualny kolorLinii.
daneProstokąta
Skrót:
daneProst 		F Wynikiem jest lista 4 liczb ustalona przez użytkownika za pomocą myszy. Funkcja daneProstokąta po wywołaniu kreśli na stronie lub planszy (będącej adresatem procedury) prostokąt, który można zmieniać za pomocą przeciągania myszą. Jeden róg prostokąta wyznacza początkowa pozycja myszy, a drugi - przeciwny - bieżąca pozycja wskaźnika myszy. Z chwilą puszczenia lewego przycisku prostokąt znika i wynik jest ustalony.

Jest to lista [X Y szer wys ] gdzie X Y to absolutne współrzędne lewego górnego rogu prostokąta.

Ustalanie danych prostokąta można przerwać naciśnięciem prawego przycisku myszy, w takim przypadku wynikiem funkcji daneProstokąta będzie pusta lista [].

Jeśli w czasie przeciągania trzymamy wciśnięty klawisz Shift, rysowany jest kwadrat.
DaneZamProst | F | Wynik jest identyczny jak funkcji daneProstokąta, ale w trakcie jego ustalania na ekranie widoczny jest prostokąt zamalowany na aktualny kolorLinii.
elipsaTła [ punkt1 punkt2 ]
Skrót:
elipsaT 		P Kreśli elipsę wpisaną w (niewidoczny) prostokąt, którego lewym górnym rogiem jest punkt1, a prawym dolnym punkt2 (oba punkty są określone we współrzędnych absolutnych strony lub planszy). Polecenie korzysta z aktualnych ustawień kolLin, grLin i wzLin.

Tego polecenia używamy często łącznie z funkcją daneElipsy (umożliwiającą wskazanie myszą odpowiedniego prostokąta):

? s1'elipsaT s1'daneElispy
łukElipsyTła prostokąt1
prostokąt2
Skrót:
łElipsyT

P Kreśli łuk elipsy wpisanej w prostokąt1 (określony we współrzędnych-absolutnych), korzystając z aktualnych ustawień kolLin, grLin i wzLin.

Łuk jest kreślony w kierunku przeciwnym do ruchu wskazówek zegara. Punktem startowym jest przecięcie elipsy z odcinkiem łączącym środek elipsy z lewym górnym rogiem prostokąta2. Punktem końcowym jest przecięcie elipsy z odcinkiem łączącym środek elipsy z prawym dolnym rogiem prostokąta2.

odcinekTła [ punkt1 punkt2 ]
Skrót:
odcinekT 		P Rysuje odcinek od punktu1 do punktu2 (oba punkty muszą być określone we współrzędnych absolutnych - względem lewego górnego rogu strony lub planszy). To polecenie często łączymy z funkcją daneOdcinka (umożliwiającą pokazanie odcinka myszą), na przykład:

? s1'odcinekTła s1'daneOdcinka
owalTła [ punkt1 punkt2 ]
Skrót:
owalT 		P Ma skutek podobny jak elipsaTła ale dodatkowo zamalowuje obszar ograniczony elipsą na aktualny kolorLinii.
prostokątTła prostokąt
Skrót:
prostT 		P Rysuje prostokąt - dany w postaci listy 4 liczb [X Y szer wys ], gdzie [X Y] to współrzędne absolutne jego lewego górnego rogu na stronie lub planszy) a kolejne dwie liczby to szerokość i wysokość.

To polecenie często łączymy z funkcją daneProstokąta (umożliwiającą określenie danych przez narysowanie), na przykład:

? s1'prostT s1'daneProst
punktyTła punkt liczba1 liczba2
Skrót:
punktyT

P Rysuje losowo chmarę punktów w promieniu liczba2 wokół punktu danego (w absolutnych współrzędnych na stronie lub planszy), liczbę punktów określa dana liczba1.
? s1'ustalKolLin "ciemnoniebieski
? s1'ustalGrLin 2
? s1'powtórz 20 [punktyTła [200 200] 150 20 + 3 * npw]
rozpylanie
Skrót:
rozp 		P Umożliwia rozpylanie farby na stronie lub planszy za pomocą przeciągania myszy. Ten proces się kończy, gdy kończymy przeciąganie.

Rozpylacz korzysta z ustawień kolLin oraz grLin.
rysowanieOdręczne
Skrót:
rod 		P Otwiera możliwość odręcznego rysowania ołówkiem (podobnie jak w edytorach grafiki Paint albo Paintbrush) na stronie lub planszy (będącej adresatem procedury). Ten proces się kończy, gdy przerywamy ciągnięcie myszy. Kolor, grubość i wzór rysowanej linii określają ustawienia kolLin, grLin oraz wzLin.
zamalujTło punkt
Skrót:
zamT 		P Zamalowuje obszar wokół danego punktu (określonego we współrzędnych absolutnych) na aktualny kolorLinii.

Jest to obszar złożony z punktów tego samego koloru co dany punkt aż do granic wyznaczonych przez punkty innego koloru.

Granica obszaru nie może mieć żadnych dziur, bo inaczej kolor malowania rozleje się na całą stronę lub planszę.

zamProstTła prostokąt
Skrót:
zamProstT 		P Rysuje zamalowany prostokąt - dany w postaci listy 4 liczb [X Y szer wys ], gdzie [X Y] to współrzędne absolutne jego lewego górnego rogu na stronie lub planszy) a kolejne dwie liczby to szerokość i wysokość. Prostokąt zostanie zamalowany na aktualny kolorLinii. Tego polecenia często używamy łącznie z funkcją daneProstokąta lub daneZamProst (które umożliwiają ustalenie danych za pomocą myszy), np.:

? s1'zamProstT s1’daneProst
? s1'zamProstT s1’daneZamProst

Przykłady:

oto Wskaż_i_Rysuj
  ustalKolLin "czarny
  ustalWzLin 2
  ustalGrLin 1
  niech "p daneZamProst
  ustalKolLin "czerwony
  ustalWzLin 0
  ustalGrLin 10
  prostT :p
już

? proszę "plansza [ustalZdarzenie "gdyLewyWciśnięty [Wskaż_i_Rysuj]]
Teraz można na dowolnej planszy rysować myszą rozciągliwy prostokąt zamalowany na czarno, a po puszczeniu przycisku identyczny prostokąt zostanie narysowany czerwonym konturem o grubości 10.


Wybory

Wybory to specjalne okna i dialogi ułatwiające wprowadzanie poprawnych danych. Oferują one różnorodne pomoce graficzne i tekstowe, wskazówki, menu itd. Wybory dzielimy na:

  • Specjalne wybory - zaprojektowane dla konkretnych procedur dialogi i pomoce takie jak linijka, kompas, paleta, itd.
  • Uniwersalne wybory - które otwierają się, gdy należy określić dane:
    • procedur pierwotnych, które nie mają swoich wyspecjalizowanych wyborów,
    • procedur użytkownika,
    • gdy nie można otworzyć specjalnego wyboru.

Zobacz:


Jak otworzyć wybór

Każdy wybór należy do jednej lub wielu procedur pierwotnych i można go otworzyć w jeden z następujących sposobów:

  • Po napisaniu w wierszu poleceń, jednego albo kilku poleceń, bez określenia danych procedury, której nazwa jest ostatnim słowem w wierszu i naciśnięciu F9, otworzy się, jeżeli taki istnieje, wybór (specjalny albo uniwersalny) należący do tej procedury. Jeżeli taki wybór nie istnieje, otworzy się Okno listy poleceń. Na przykład:
    ? czyść słuchaj wszystkie ugp
    otwiera wybór Grubość linii.
  • Można napisać w wierszu poleceń samą nazwę procedury (jako jedyne słowo w tym wierszu) i nacisnąć Enter.
  • W dialogu Zmień mnie dowolnego obiektu - gdy definiując zdarzenie lub procedurę użytkownika nie określimy danych dla procedury, której nazwa jest ostatnim słowem w wierszu i naciśniemy F9.

Niektóre specjalne wybory (gdy otwieramy je z wiersza poleceń) są małymi wyskakującymi okienkami, które tak długo pozostają otwarte, dopóki nie klikniemy gdziekolwiek na stronie lub planszy. W ten sposób, na przykład, można określić dane dla naprzód (wybór ma postać linijki), napoz, określić prostokąt dla wewnątrz? itd.

Wiele wyborów ma 3 przyciski: Wykonaj!, Wpisz! i Anuluj. Zależnie od sposobu otworzenia wyboru niektóre z nich mogą być nieczynne. Czasem są jeszcze inne przyciski specyficzne dla konkretnego wyboru, jak np. Graj lub Nowy w dialogu Otwórz plik dźwiękowy.

  • Przycisk Wykonaj! - Przenosi dane określone za pomocą wyboru do odpowiedniego polecenia. Tworzy kopię pełnego polecenia (z danymi) w wierszu poleceń i dodaje Enter. Wybór natychmiast zamyka się.
  • Przycisk Wpisz! - Uzupełnia niekompletny tekst o dane określone za pomocą wyboru. Tworzy jego kopię w wierszu poleceń lub w redagowanym wierszu (np. w dialogu Zmień Mnie) - tam skąd otworzyliśmy wybór. Wybór zamyka się, ale polecenie nie jest wykonywane natychmiast, Logo czeka na dalszy ciąg tekstu.
  • Przycisk Anuluj - Jeśli wybór otworzył się po naciśnięciu Enter (po wpisaniu nazwy procedury w wierszu poleceń), przycisk Anuluj zamyka wybór i usuwa nazwę procedury z wiersza poleceń. Jeśli wybór otworzył się po naciśnięciu F9, Anuluj zamyka wybór (ale niczego nie usuwa). Taki sam skutek ma naciśnięcie Esc lub Alt+F4.


Menu wyborów

Jednym ze sposobów otwierania wyborów jest kliknięcie wiersza poleceń prawym przyciskiem myszy. Otworzy się menu wyborów, z którego można wybrać dowolny standardowy wybór. Podczas gdy otworzenie wyboru za pomocą Enter lub F9 pomaga wprowadzić poprawne dane określonej - związanej z nim procedury, Menu wyborów umożliwia podanie danych dowolnej procedury pierwotnej lub procedury użytkownika, a także po prostu utworzenie określonych danych.

Dwa przykłady:

  • Możesz wpisać nazwę własnej procedury zagrajDwukrotnie, następnie z Menu wyborów wybrać graj plik wav, w dialogu Otwórz plik dźwiękowy wskazać plik WAV i zamknąć dialog kliknięciem przycisku Wpisz!. W wierszu poleceń dostaniesz nazwę pliku wraz z pełną ścieżką dostępu.
  • W wierszu poleceń możesz wpisać:

    ? przyp "trasa (lista

    następnie z Menu wyborów wybrać Współrzędne [X Y] i po otworzeniu się wyboru Współrzędne wskazać kliknięciem punkt strony. Wskazany punkt [X Y] zostanie dopisany na końcu wiersza poleceń. Powtarzając ten krok wiele razy otrzymasz listę punktów.


Używanie wyborów w procedurach użytkownika

Funkcja pierwotna wybór umożliwia otwieranie specjalnych wyborów z dowolnej procedury użytkownika. Jej pierwszą daną jest nazwa procedury pierwotnej, która ma wybór. Funkcja otwiera odpowiedni wybór i umożliwia określenie danych. Następnie - możliwe są dwie sytuacje:

  • po określeniu danych i naciśnięciu Enter lub Wpisz! wynikiem funkcji wybór będzie lista zawierająca kompletne polecenie - nazwę danej procedury wraz z danymi określonymi za pomocą wyboru.
  • po naciśnięciu Esc lub Anuluj wynikiem będzie pusta lista [].
Procedura Typ Opis
wybór procedura
(wybór procedura dana1 dana2 …)
         F Funkcja wybór otwiera wybór danej procedury i umożliwia określenie jej argumentów.

Gdy jest tylko jedna dana, wartości początkowe pokazywane w wyborze są zawsze aktualnymi ustawieniami pierwszego aktywnego żółwia (z wyjątkiem przypadków, gdy to nie ma sensu, jak np. gdy określamy prostokąt). W przypadku wielu danych, wartości początkowe pokazywane w wyborze to kolejne dane: dana1, dana2... itd.

[plik? "D:\Imagine\Media\mouse.wav]

? pokaż wybór "ustalCzcionkę

[ustalCzcionkę [PosterBodoni BT [24 700 0 0 0 0]]]


Specjalne wybory

W pierwszej kolumnie poniższej tabeli jest lista wszystkich wyborów specjalnych, w drugiej - nazwy procedur, które je otwierają. Na przykład, zarówno ustalKolPis jak i ustalKolTła otwierają wybór Kolory.

Wybór | Procedura | Komentarze
Czcionki

ustalCzcionkę Pomaga określić dane polecenia ustalCzcionkę. Pozwala również podejrzeć wybraną czcionkę. W tym dialogu określamy czcionkę, styl, rozmiar, skrypt (dla niektórych czcionek można wybrać Zachodni, Hebrajski, Arabski, Grecki… itd.) i efekty specjalne:
  • Znaki z tłem - zobacz rysunek po lewej. Pierwsza próbka jest efektem polecenia wpisz bez zaznaczonej tej opcji, druga - po jej zaznaczeniu. Cały prostokąt, na którym został wypisany tekst, został zamalowany na aktualny kolor tła.
  • Żółw na podstawowej linii - trzecia próbka została wydrukowana z zaznaczonymi opcjami Znaki z tłem i Żółw na podstawowej linii. Zauważ, jaka jest pozycja tekstu względem żółwia.
  • Przekreślenie
  • Podkreślenie
Grubości linii | ustalGrubość ustalGrubośćLinii | Pomaga ustalić grubość pisaka żółwia lub pisaka dostępnego na stronie lub planszy, która jest adresatem polecenia. W tym celu, trzeba kliknąć linię w menu lub wpisać jej numer w polu tekstowym.
Kolory ustalKolPis
ustalKolTła
ustalKolZam
ustalKolLin 		Pomaga wybrać kolor. W tym celu wystarczy kliknąć w paletę podstawowych kolorów Logo i dobrać odcień, lub ustalić kolor RGB dobierając proporcje trzech składników: Czerwony, Zielony i Niebieski.
Kolory, wariant
         ustalKolMarginesu Jest taki sam jak Kolory, ale oferuje dodatkową możliwość zwykły. Zaznaczamy ją, jeśli chcemy użyć domyślnych ustawień Windows dla marginesu okna głównego. Ten sam skutek ma polecenie ustalKolMarginesu [].
Kolory, wariant | ustalKolPos | Jest taki sam jak Kolory, ale oferuje dodatkową możliwość Nic. Zaznaczamy ją, jeśli chcemy, by żaden kolor nie był aktywnym kolorem postaci. Ten sam skutek ma polecenie ustalKolPos [].
Liczba kroków (Linijka) naprzód
wstecz 		Pomaga określić liczbę kroków żółwia. Jeśli wybór został otworzony z wiersza poleceń, na stronie pojawia się linijka i małe okienko Liczba kroków - inaczej otwiera się wybór uniwersalny.
Otwórz obraz ustalObrazTła
wklejWycinekZPliku
ładujEkran
ładListPos
wklejObraz 		Pomaga określić dane poleceń wymienionych obok. Domyślnie otwieranym folderem, od którego zaczyna się poszukiwanie pliku jest podfolder Obrazy, lub aktualna wartość (ścieżka "Obrazy), jeśli została zdefiniowana poleceniem ustalŚcieżkę. W wyborze można przeszukiwać pliki graficzne (dowolnego akceptowalnego formatu graficznego), podglądać je i wybrać jeden z nich.

Zauważ, że wybór dla wklejObraz jest wariantem standardowego dialogu Otwórz obraz. Pod okienkiem podglądu można wybrać styl określający sposób wklejenia obrazu na stronę lub planszę. Standardową opcją jest Tapeta, inne opcje to: Na środku i Rozciągnij.
Otwórz plik dźwiękowy | grajDźwięk | Pomaga ustalić dane polecenia grajDźwięk. Może również zagrać dowolny plik WAV lub MP3 z danej listy.
Otwórz projekt ładProjekt Pomaga określić daną polecenia ładProjekt. W tym dialogu można wskazać folder i plik. Można również kliknąć przycisk Opcje i otworzyć dialog Opcje otwierania projektu, w którym można zaznaczyć lub skasować opcje:
Uruchom Starter - gdy ta opcja jest zaznaczona i w projekcie jest zdefiniowane polecenie starter, zostanie ono wywołane natychmiast po załadowaniu projektu.

Czyść pamięć - gdy ta opcja jest zaznaczona, cały obszar pamięci roboczej Logo zostanie wyczyszczony przed załadowaniem projektu.
Prostokąt

wewnątrz?
poza?
wycinekTła
zdjęcie
ustalZakres
ustalZakWid
oknoŻółwia
sklej
wytnijTło
lospoz
zamProstTła
prostokątTła 		Pomaga wskazać interaktywnie prostokąt na stronie lub planszy.

By wskazać prostokąt [X Y szer wys ], musisz ulokować wskaźnik myszy w jego lewym górnym rogu i przeciągnąć do prawego dolnego rogu. W tym celu można również użyć klawiszy ze strzałkami: w górę, w lewo, w prawo i w dół.
Wpisz tekst wpiszTekst
piszTekst 		Pomaga określić dane poleceń wpiszTekst i piszTekst. Umożliwia również podgląd tekstu, jaki będzie wypisany przez każdego aktywnego żółwia z użyciem czcionki, rozmiaru i stylu wybranych dla pierwszego aktywnego żółwia).

Współrzędne napoz
ustalXY
kolorPunktuTła
nachodząceNaPunkt
ustalPozMyszy
naAbsolutne
naEkran
naObiekt
ustalPozabs
ustalPoczątek
naKartezjańskie
zamalujTło 		Pomaga ustalić punkt jako daną procedury pierwotnej. Wybieramy go kliknięciem w stronę lub planszę.
Wybierz głos | ustalGłos | Ustala barwę głosu dla polecenia powiedz. Daną jest słowo (zwykle imię), które określa styl wymowy, płeć i wiek hipotetycznej osoby wypowiadającej frazy. Konkretne wartości zależą od wersji językowej zainstalowanego systemu rozpoznawania mowy. Jako daną często używa się wybórGłosu.
Wybierz plik | plik? | Pomaga wybrać plik. Otwiera typowy dialog Otwórz z otworzonym bieżącym folderem oraz domyślną wartością wszystkie pliki w polu Typ pliku.
Wybierz postać ustalPostać
ładPos
stemplujObraz
ustalWskaźnikMyszy
przycisk'ustalObraz 		Pomaga wybrać wizerunek żółwia lub obraz. Otwiera dialog Wybierz postać z otworzonym podfolderem Obrazy. Jeśli zaznaczone jest pole Podgląd oglądamy pierwszą klatkę pierwszej fazy zaznaczonego pliku. Jeśli klikniemy w przycisk Więcej..., to zobaczymy podgląd wszystkich faz (dokładniej pierwsze klatki faz). Zaznaczając pole Wybierz fazy możemy wybrać tylko zaznaczone fazy z postaci (ale wszystkie klatki tych faz).
Wzory linii ustalWzórPis
ustalWzórLinii 		Pomaga ustalić wzór pisaka żółwia lub pisaka dostępnego na stronie lub planszy, która jest adresatem polecenia. W tym celu, trzeba kliknąć wzór w menu lub wpisać jego numer w polu tekstowym.
Wzory malowania | ustalWzórZam | Pomaga ustalić wzór malowania. W tym celu, trzeba kliknąć wybrany wzór w menu lub wpisać jego numer w polu tekstowym.
Zapisz obraz | zapiszEkran | Pomaga określić w jakim folderze i pliku chcemy zapisać obraz tła. W tym dialogu można wybrać lub wpisać nazwę pliku, można również określić Typ pliku. Może to być dowolny akceptowalny format graficzny.
Zwrot prawo
lewo
skieruj 		Pomaga określić kąt. Można przeciągnąć myszą wskazówkę kompasu lub wpisać liczbę w polu tekstowym.


Procedury pierwotne otwierające wybory

demoDialog
dialogOtwórzDźwięk
dialogOtwórz
dialogOtwórzProjekt
dialogZapisz
dialogZapiszObraz
dialogZapiszProjekt
dialogZapiszWWW
wybórGłosu
wybórGrubościlinii
wybórKoloru
wybórObrazu
wybórObrazu1
wybórURL
wybórWzorulinii
wybórWzoruZam

Oprócz procedury pierwotnej wybór, która otwiera dowolny wybór specjalny, istnieją procedury otwierania konkretnych wyborów. Możesz ich używać w programach, kiedy tworzysz swój projekt. Na przykład funkcja wybórURL otwiera dialog, w którym można określić adres WWW:

? pokaż wybórURL "|Gdzie idziemy?|
www.logo.com

Wszystkie poniższe procedury są rozpoznawane przez klasę Baza, a tym samym przez dowolny obiekt (dzięki dziedziczeniu). Pamiętaj, że gdy oczekiwana jest dana ścieżka, możesz wpisać ścieżkę lub [] – co oznacza macierzysty folder. W określeniu ścieżki to samo znaczenie ma symbol %. Po zamknięciu wyboru w zwykły sposób (kliknięciem Ok, Wykonaj!, Wpisz!, … ), wynikiem jest dokonany wybór. Na przykład funkcje dialogOtwórz, dialogZapisz, wybórObrazu, dialogZapiszObraz i dialogZapiszWWW przekazują jako wynik pełną ścieżkę. Ale, po zamknięciu dialogu naciśnięciem klawisza Escape lub kliknięciem przycisku Anuluj lub Zamknij, wynikiem jest pusta lista [].

Procedura Typ Opis
demoDialog F Otwiera dialog Pokazy, który umożliwia wybranie pokazu z podfolderu Pokazy. Jeśli nie ma tam żadnego projektu pojawi się komunikat Nie istnieje żaden pokaz. Jeśli chcesz, by Logo szukało pokazów w innych folderach, musisz zmienić ścieżkę poleceniem (ustalŚcieżkę "pokazy ścieżka).

Wynikiem funkcji demoDialog jest kompletna nazwa wraz ze ścieżką pliku z wybranym pokazem (lub []). Ten wynik jest często daną polecenia ładujProjekt.
dialogOtwórz ścieżka nagłówek typ pliku
F Otwiera standardowy dialog Otwórz (otwierania dowolnego pliku) z otwartym folderem określonym przez daną ścieżkę, nagłówkiem określonym przez drugą daną oraz ustaleniem Typ pliku określonym przez trzecia daną. Umożliwia wybranie lub wpisanie nazwy pliku.

? pokaż
  dialogOtwórz [] [Otwórz projekt]
  "|Projekty@*.IMP@Teksty@*.IMT| c:\Logomocja\Projekty\piłki.IMP

Wynikiem funkcji dialogOtwórz jest kompletna nazwa wybranego pliku wraz ze ścieżką dostępu. Można jej użyć jako danej dla polecenia ładProjekt.
dialogOtwórzDźwięk ścieżka F Otwiera dialog Otwórz plik dźwiękowy z otwartym folderem określonym przez daną ścieżkę. Wyświetla listę plików dźwiękowych w tym folderze.

Wynikiem funkcji dialogOtwórzDźwięk jest pełna nazwa pliku z kompletną ścieżką dostępu.
dialogOtwórzProjekt F Otwiera dialog Otwórz projekt i pokazuje aktualną zawartość folderu Projekty (lub określonego przez aktualną wartość ustawienia ścieżka, jeśli ostatni projekt otworzyłeś z innego folderu). Dialog oferuje dwie opcje w polu Typ pliku: Projekty i Pliki tekstowe.

Po kliknięciu przycisku Opcje… można zaznaczyć (lub odwołać opcje) Uruchom starter i Czyść pamięć.

Wynikiem funkcji dialogOtwórzProjekt jest lista – specyfikacja pliku projektu – mająca następującą postać:

[C:\Logomocja\Projekty\p100.IMP [starter kasuj]]

gdzie pierwszy element to pełna nazwa pliku a drugi to wartości opcji. Drugi element może być pusty (jeśli wyłączymy obie opcje), lub zawierać jedno lub oba słowa starter i kasuj, (jeśli odpowiednie opcje są zaznaczone).
dialogZapisz ścieżka nagłówek typ pliku
F Otwiera standardowy dialog Zapisz jako z otwartym folderem określonym przez pierwszą daną, nagłówkiem – określonym przez drugą daną i wartością Typ pliku określoną przez trzecią daną. Umożliwia wybór pliku lub wpisanie nazwy pliku.
? pokaż
   dialogZapisz [] [Zapisz projekt]
     "|Projekty @*.IMP|

c:\Logomocja\Projekty\Plansze.IMP

Wynikiem funkcji dialogZapisz jest pełna nazwa pliku z kompletną ścieżką dostępu.
dialogZapiszObraz ścieżka F Otwiera standardowy dialog Zapisz obraz z otwartym folderem określonym przez daną ścieżkę. Umożliwia wybór i podgląd pliku, a także wpisanie nazwy pliku. Z listy Typ pliku można wybrać akceptowany format graficzny.

Wynikiem funkcji dialogZapiszObraz jest pełna nazwa pliku z kompletną ścieżką dostępu.
dialogZapiszProjekt F Otwiera dialog Zapisz projekt i pokazuje aktualną zawartość folderu Projekty (lub określonego przez aktualną wartość ustawienia ścieżka, jeśli ostatni projekt otworzyłeś z innego folderu). Po kliknięciu przycisku Opcje… można zmienić opcje zapisu. Kliknięcie Ok zamyka dialog.

Wynikiem funkcji dialogZapiszProjekt jest lista – specyfikacja pliku projektu – mająca następującą postać:

[C:\Logomocja\Projekty\p100.IMP [tłostron tłoplansz]]

gdzie pierwszy element to pełna nazwa pliku a drugi to wartości opcji.

Drugi element może być pusty (jeśli wyłączymy wszystkie opcje), lub zawierać jedno lub kilka z następujących słów (zależnie od tego, jakie zaznaczyliśmy opcje): kopia, tylkoDoOdczytu, starter, tłostron, tłoplansz lub ekstraPlik, zobacz Opcje zapisu projektu w Otwieranie i Zamykanie Projektów.
dialogZapiszWWW ścieżka
nagłówek
typ pliku 		F Otwiera dialog Zapisz jako WWW. Dane określają domyślny folder, nagłówek okna oraz wartość Typ pliku okienka do wyboru pliku wyświetlanego po wybraniu przycisku Przeglądaj... dialogu Zapisz jako WWW. Umożliwia wybranie lub wpisanie:
  • Nazwy dokumentów HTML i IMP razem z folderem, w którym mają być zapisane.
  • Tytułu, który będzie wyświetlany w pasku tytułu przeglądarki oraz na górze strony WWW.
  • Tekstu wyświetlanego poniżej tytułu, a powyżej okna z dokumentem HTML.
  • Dodatkowych plików, które powinny być dołączone.
  • Opcji dołączenia elementów systemu rozpoznawania mowy.

Ostatnie dwa punkty są opisane w wewnętrznej pomocy do dialogu uruchamianej przyciskiem Pomoc.

Wynikiem dialogu Zapisz jako WWW jest lista z wybranym folderem, nazwą, tekstami, dołączanymi plikami i stanem opcji. Może służyć jako dana polecenia zapiszWWW.
wybórGłosu F Otwiera dialog Wybierz głos. Wybiera barwę głosu, jako jedną z przewidzianych w systemie rozpoznawania mowy. Zwykle poszczególne barwy głosu są reprezentowane różnymi imionami hipotetycznych osób, a różni je styl wymowy, płeć i wiek. Wybór polega na kliknięciu na wybrane imię, a następnie zaakceptowaniu go, poprzez kliknięcie przycisku OK. Wcześniej można nacisnąć przycisk Wypróbuj!, a będzie można usłyszeć próbkę wybranego głosu.

Wynikiem funkcji wybórGłosu jest słowo określające dokonany wybór.
wybórGrubościlinii grubość F Otwiera wybór Grubość linii, który pomaga określić grubość pisaka. Dana określa ustawienie początkowe pokazywane bezpośrednio po otworzeniu wyboru. Grubość pisaka można wybrać kliknięciem w linię lub wpisując grubość w polu tekstowym.

Wynikiem funkcji wybórGrubościlinii jest ustalona grubość pisaka.
wybórKoloru kolor
Skrót:
wybKol 		F Otwiera dialog Kolory z paletą podstawowych kolorów Logo i suwakiem do ustawiania odcieni. Można też za pomocą trzech suwaków (czerwony, zielony i niebieski) utworzyć kolor RGB. Dana określa ustawienie początkowe widoczne po otworzeniu wyboru.

Wynikiem funkcji wybórKoloru jest wybrany kolor (lub []).

wybórObrazu ścieżka F Otwiera standardowy dialog Otwórz obraz z folderem początkowym określonym przez daną ścieżkę. Umożliwia przeszukiwanie plików graficznych, ich podgląd i wybór. Dialog wyświetla wszystkie akceptowane formaty graficzne.

Wynikiem funkcji wybórObrazu jest kompletna nazwa wraz ze ścieżką dostępu wybranego pliku.

wybórObrazu1 ścieżka

Otwiera wariant dialogu Otwórz obraz z folderem początkowym określonym przez daną ścieżkę. Umożliwia przeszukiwanie plików graficznych, ich podgląd i wybór. Dialog wyświetla wszystkie akceptowane formaty graficzne.

Pod okienkiem podglądu można wybrać styl (jeden z pięciu) określający sposób wklejenia obrazu na stronę lub planszę. Domyślną opcją jest Tapeta.

Wynikiem funkcji wybórObrazu1 jest dwuelementowa lista. Pierwszy element to pełna nazwa wybranego pliku wraz ze ścieżką dostępu, drugi - to liczba od 0 do 4 włącznie, określająca wybrany styl.

wybórURL nagłówek F Otwiera prosty dialog umożliwiający określenie adresu WWW lub nazwy dokumentu HTML. Daną jest tekst, który będzie wyświetlony w pasku tytułu dialogu. Możesz wpisać adres WWW lub nazwę dokumentu HTML, lub kliknąć w przycisk Przeglądaj….

Wynikiem funkcji wybórURL jest pełna nazwa pliku z kompletną ścieżką dostępu.
wybórWzorulinii wzór pisaka F Otwiera wybór Wzory linii. Dana określa ustawienie początkowe - widoczne w wyborze bezpośrednio po jego otworzeniu. Wzór wybieramy przez kliknięcie we wzór. Można też wpisać jego numer w polu tekstowym.

Wynikiem funkcji wybórWzorulinii jest wybrany wzór.
wybórWzoruZam wzór malowania

Także:
wybórWzoruMal

F Otwiera wybór Wzory malowania. Dana określa ustawienie początkowe - widoczne w wyborze bezpośrednio po jego otworzeniu. Wzór wybieramy przez kliknięcie we wzór. Można też wpisać jego numer w polu tekstowym.

Wynikiem funkcji wybórWzoruZam jest wybrany wzór.


Okno poleceń

Jest to okno zawierające listę wybranych poleceń pierwotnych. Treść listy może ustalić nauczyciel - za pomocą polecenia ustalOpcje odpowiednio do potrzeb ucznia.

Można je otworzyć klawiszem F9 i korzystać z jego pomocy w różnych sytuacjach:

  • Ustalając treść wiersza poleceń można wybrać procedurę z okna poleceń, a następnie kliknąć przycisk Dane lub Wpisz!. Po kliknięciu Dane otworzy się specjalny wybór wybranego polecenia (jeśli istnieje). Można w nim ustalić dane i kliknąć Wykonaj!.
    Kiedy klikniemy przycisk Wpisz! w oknie poleceń, to nazwa wybranej procedury kopiowana jest do wiersza poleceń. Następnie można podać dane - wpisując je samodzielnie, bądź wybierając z menu wyborów),
  • Definiując procedurę lub zdarzenie w dialogu Zmień mnie. Należy wybrać nazwę procedury i kliknąć w przycisk Dane lub Wpisz!.
    Kiedy zostanie kliknięty przycisk Dane, to otworzy się specjalny wybór odpowiadający wybranemu poleceniu (jeśli istnieje). W nim ustalamy dane polecenia i klikamy w przycisk Wpisz! - polecenie razem z danymi jest automatycznie wpisywane w pozycji kursora.
    Kiedy zostanie kliknięty przycisk Wpisz!, to tylko nazwa polecenia jest wpisywana w pozycji kursora, tak więc dane polecenia należy określić samodzielnie.

Zawartość okna poleceń może być przedefiniowana poleceniem ustalOpcje. Wynikiem funkcji opcje "komendy jest aktualna zawartość okna.


Funkcje i predykaty liczbowe

Funkcjami liczbowymi nazywamy procedury, które mają dane i wyniki liczbowe. Ich wyniki mogą być danymi innych funkcji i poleceń (w szczególności poleceń geometrii żółwia, na przykład pw 360 / 24).

Predykat to dowolna funkcja, której wynikiem jest wartość logiczna prawda albo fałsz. Predykat numeryczny to taka funkcja (predykat), która ma dane liczbowe. Logo oferuje wiele funkcji umożliwiających tworzenie kombinacji prostych warunków.

Zobacz:

Podstawowa arytmetyka
Geometria
Liczby losowe
Część całkowita i zaokrąglenie
Użyteczna matematyka
Notacja przedrostkowa
Porównywanie liczb
Porównywanie liczb w notacji przedrostkowej


Podstawowa arytmetyka

Procedura | Typ | Opis
liczba1 * liczba2 | F | Wynikiem jest iloczyn liczby1 i liczby2. Identyczną wartość ma wyrażenie iloczyn liczba1 liczba2.
liczba1 + liczba2
+ liczba 		F Wynikiem jest suma liczby1 i liczby2. Identyczną wartość ma wyrażenie suma liczba1 liczba2. Jeśli dana jest tylko jedna liczba, ta liczba jest wynikiem.
liczba1 - liczba2
- liczba 		F Wynikiem jest różnica liczby1 i liczby2. Identyczną wartość ma wyrażenie różnica liczba1 liczba2. Jeśli dana jest tylko jedna liczba, wynikiem jest liczba przeciwna.
liczba1 / liczba2 F Wynikiem jest iloraz liczby1 przez liczbę2. Identyczną wartość ma wyrażenie iloraz liczba1 liczba2. Dzielenie przez zero powoduje błąd.
Pamiętaj o różnicy pomiędzy / oraz funkcją ilorazc, której wynikiem jest część całkowita ilorazu liczb.

Przykłady:

? pokaż 3 * -5
–15
? pisz (zd 2 "* 3 "|równa się| 2 * 3)
2 * 3 równa się 6
? pokaż 22 + 18
40
? pokaż 555555 / 32
17361.09375


Geometria

Procedura | Typ | Opis
arctg liczba | F | Wynikiem jest kąt (w stopniach), którego tangens jest równy danej liczbie. Jest to kąt z zakresu od -90 do 90. Arctg jest funkcją odwrotną do funkcji tg o dziedzinie ograniczonej do przedziału (-90, 90).
cos kąt | F | Wynikiem jest cosinus danego (w stopniach) kąta.
sin kąt | F | Wynikiem jest sinus danego (w stopniach) kąta.
tg kąt | F | Wynikiem jest tangens danego (w stopniach) kąta. Wynik nie jest określony dla danych wartości 90 + i * 180 (gdzie i to dowolna liczba całkowita).

Przykłady:

? pokaż arctg 5
78.69
? pokaż tg arctg 33.5
33.5
? pisz cos 90
0
? pisz arctg (sin 45) / cos 45
45
? pisz tg 45
1


Liczby losowe

Procedura | Typ | Opis
losowa liczba | F | Wynikiem jest losowo wygenerowana liczba z zakresu od 0 do n-1, gdzie n to dana liczba, która nie może być ujemna (jeśli jest niecałkowita - zostanie zaokrąglona). Na przykład, wynikiem losowa 5 może być 0, 1, 2, 3 lub 4.
startLos | F | Inicjuje wbudowany generator liczb losowych - ustalając startową losową wartość na podstawie systemowego zegara. Jest to wykonywane automatycznie zawsze po uruchomieniu Logomocji. Dzięki temu uruchamiając wielokrotnie ten sam projekt, nie otrzymujemy za każdym razem tych samych wartości losowych.


Część całkowita i zaokrąglenie

Procedura | Typ | Opis
int liczba | F | Wynikiem jest część całkowita danej liczby, jaką otrzymujemy po odrzuceniu części ułamkowej.
zaokr liczba | F | Wynikiem jest zaokrąglenie danej liczby.

Przykłady:

? pokaż int -34.76565
-34
? pokaż zaokr 7.72
8
? pokaż zaokr -55.5
-56


Użyteczna matematyka

Procedura | Typ | Opis
abs liczba | F | Wynikiem jest wartość bezwzględna danej liczby.
exp liczba | F | Wynikiem jest liczba e = 2.718281... (podstawa logarytmów naturalnych) podniesiona do potęgi o wykładniku równym danej liczbie.
ln liczba | F | Wynikiem jest logarytm naturalny (to znaczy logarytm o podstawie e = 2.718281... ) danej liczby.
pwk liczba | F | Wynikiem jest pierwiastek kwadratowy danej liczby. Dana liczba musi być nieujemna.

Przykłady:

? pisz abs -55.4
55.4
? pisz abs -5 = 5
prawda
? pokaż exp –5
0.0067379469990854671
? pokaż ln 10
2.30258509299404568
? pokaż pwk 2
1.41421356237309505


Notacja przedrostkowa

Procedura | Typ | Opis
iloczyn liczba1 liczba2
(iloczyn liczba1 … ) 		F Wynikiem jest iloczyn liczby1 i liczby2. Identyczną wartość ma wyrażenie liczba1 * liczba2. Jeśli liczba danych ma być większa lub mniejsza niż dwie, trzeba użyć notacji nawiasowej.
iloraz liczba1 liczba2 | F | Wynikiem jest iloraz liczby1 przez liczbę2. Identyczną wartość ma wyrażenie liczba1 / liczba2. Dzielenie przez zero wywołuje błąd. Nie pomyl funkcji iloraz z ilorazc.
ilorazc liczba1 liczba2 | F | Wynikiem jest iloraz całkowity liczby1 przez liczbę2. Jeśli dane nie są liczbami całkowitymi, ich części ułamkowe są odrzucane. Zamiast nazwy ilorazc można użyć div.
reszta liczba1 liczba2 | F | Wynikiem jest reszta z dzielenia liczby1 przez liczbę2. Znak wyniku jest zawsze taki jak znak liczby1. Zamiast nazwy reszta można użyć mod.
różnica liczba1 liczba2 | F | Wynikiem jest różnica liczby1 i liczby2. Identyczną wartość ma wyrażenie liczba1 - liczba2.
suma liczba1 liczba2
(suma liczba1 … ) 		F Wynikiem jest suma liczby1 i liczby2. Identyczną wartość ma wyrażenie liczba1 + liczba2. Jeśli liczba danych ma być większa lub mniejsza niż dwie, trzeba użyć notacji nawiasowej.

Przykłady:

? pokaż (suma 22 33 44)
99
? pisz różnica 44 –12
56
? jeżeli 2 * 3 = iloczyn 2 3 [pisz "tak] [pisz "nie]
tak
? pisz iloraz 14 4
3.5
? pisz iloazc 14 4
3
? pisz reszta 14 4
2


Porównywanie liczb

Pamiętaj, że nazwa operacji porównania <=, <> oraz >= jest jednym słowem, więc nie wolno wstawiać spacji pomiędzy < i = , ani pomiędzy < i > itd.

Procedura | Typ | Opis
liczba1 < liczba2 | F | Wynikiem jest prawda, gdy liczba1 jest mniejsza niż liczba2. W przeciwnym przypadku wynikiem jest fałsz. Identyczny wynik ma wyrażenie mniejsze? liczba1 liczba2.
liczba1 <= liczba2 | F | Wynikiem jest prawda, gdy liczba1 jest niewiększa niż liczba2. W przeciwnym przypadku wynikiem jest fałsz.
liczba1 > liczba2 | F | Wynikiem jest prawda, gdy liczba1 jest mniejsza niż liczba2. W przeciwnym przypadku wynikiem jest fałsz. Identyczny wynik ma wyrażenie większe? liczba1 liczba2.
liczba1 >= liczba2 | F | Wynikiem jest prawda, gdy liczba1 jest niemniejsza niż liczba2. W przeciwnym przypadku wynikiem jest fałsz.
liczba1 <> liczba2 | F | Wynikiem jest prawda, gdy dane są różne liczby. W przeciwnym przypadku wynikiem jest fałsz.
liczba1 = liczba2 | F | Wynikiem jest prawda, gdy dane liczby są równe. W przeciwnym przypadku wynikiem jest fałsz. Identyczny wynik ma wyrażenie równe? liczba1 liczba2.

Przykłady:

? pokaż 2 > 7 / 3
fałsz
? jeżeli 2 + 3 < 6 [pisz "tak] [pisz "nie]
tak
? pokaż 8 <> 3.4 + 4.5
prawda
? pokaż 2+3 = 4+1
prawda


Porównywanie liczb w notacji przedrostkowej

Procedura Typ Opis
mniejsze? liczba1 liczba2
(mniejsze? liczba1 … ) 		F Wynikiem jest prawda, gdy liczba1 jest mniejsza niż liczba2. W przeciwnym przypadku wynikiem jest fałsz. Identyczny wynik ma wyrażenie liczba1 < liczba2.
równe? cokolwiek1 cokolwiek2
(równe? cokolwiek1 … ) 		F Wynikiem prawda, gdy (wszystkie) dane są identyczne. W przeciwnym przypadku wynikiem jest fałsz.
większe? liczba1 liczba2
(większe? liczba1 … ) 		F Wynikiem jest prawda, gdy liczba1 jest większa niż liczba2. W przeciwnym przypadku wynikiem jest fałsz. Identyczny wynik ma wyrażenie liczba1 > liczba2.

Przykłady:

? pokaż równe? 5 2+3.0
prawda
? pokaż mniejsze? abs -100 2 * 50
fałsz
? pokaż (mniejsze? -7 -4 -1 2 5)
prawda
? pokaż większe? 5 mod 22 14
fałsz
? pokaż (większe? 8 0 -8)
prawda


Wektory

Wektory znamy z matematyki i fizyki, ale występują również w innych okolicznościach. W Logo możemy z łatwością je przedstawiać i wykonywać na nich różne operacje, co jest pewną alternatywą wobec geometrii żółwia oraz geometrii kartezjańskiej. Za pomocą wektorów możemy opisywać, badać i rozwiązywać wiele różnych problemów. Mogą one dotyczyć przemieszczeń żółwi, reprezentacji rysunków za pomocą list wektorów, obrotów punktów itd. W wielu przypadkach, dzięki wektorom, złożone zagadnienia sprowadzają się do prostej arytmetyki.

Podejście wektorowe (w odniesieniu do przestrzeni o dowolnej liczbie wymiarów) jest w Logo wyjątkowo łatwe, dzięki temu, że wektory są traktowane jak pojedyncze jednostki. Można działać na wektorach, a nie tylko na ich składowych.

Zobacz:


Arytmetyka wektorów

+
-
*
/
obróć

Są to podstawowe działania: dodawania wektorów, mnożenia wektora przez liczbę,… itd. , które zapisujemy w zwykły sposób. Na przykład, wyrażenie [2 10 7] + [25 -5 30] oznacza sumę dwóch wektorów trójwymiarowej przestrzeni. Ale dodać, odjąć,… itd.. można tylko takie dwa wektory v1 i v2, które mają tę samą liczbę składowych, tzn. ten sam wymiar.

Procedura | Typ | Opis
wektor1 + wektor2
+ wektor 		F Wynikiem jest suma danych wektorów to znaczy wektor
[a b c … ], gdzie a jest sumą pierwszych współrzędnych wektora1 i wektora2, b jest sumą drugich współrzędnych wektora1 i wektora2,… itd. Jeśli jest tylko jedna dana, to wynikiem jest dany wektor.
wektor1 - wektor2
- wektor 		F Wynikiem jest różnica danych wektorów, to znaczy wektor
[a b c … ], gdzie a jest różnicą pierwszych współrzędnych wektora1 i wektora2, b jest różnicą drugich współrzędnych wektora1 i wektora2,… itd.

Jeśli dany jest tylko jeden wektor, to wynikiem jest wektor przeciwny, to znaczy wektor [a b c … ], gdzie a to liczba przeciwna do pierwszej współrzędnej danego wektora, b to liczba przeciwna do drugiej współrzędnej danego wektora, … itd.
liczba * wektor | F | Wynikiem jest iloczyn danej liczby przez dany wektor, to znaczy wektor [a b c … ], gdzie a to iloczyn danej liczby i pierwszej współrzędnej danego wektora, b to iloczyn danej liczby i drugiej współrzędnej danego wektora,… itd.
wektor1 * wektor2 F Wynikiem jest wektor [a b c … ], gdzie a jest iloczynem pierwszych współrzędnych wektora1 i wektora2, b jest iloczynem drugich współrzędnych wektora1 i wektora2,… itd. To działanie nie ma odpowiednika w zwykłej arytmetyce wektorów, ale jest bardzo użyteczne. Na przykład, kiedy chcemy zmienić skalę postaci żółwia nie zachowując proporcji, możemy napisać:

? ustalSkalęPos skalaPos * [1.5 2]
wektor / liczba | F | Wynikiem jest wektor [a b c … ], gdzie a to iloraz pierwszej współrzędnej danego wektora przez daną liczbę, b to iloraz drugiej współrzędnej danego wektora przez daną liczbę,… itd.
wektor1 / wektor2 | F | Wynikiem jest wektor [a b c … ], gdzie a to iloraz pierwszej współrzędnej danego wektora1 przez pierwszą współrzędną wektora2, b to iloraz drugiej współrzędnej danego wektora1 przez drugą współrzędną wektora2,… itd. To działanie nie ma odpowiednika w zwykłej arytmetyce wektorów, ale jest bardzo użyteczne.
liczba / wektor
obróć liczba wektor 		F Dany musi być wektor na płaszczyźnie [a b]. Wynikiem jest wektor, jaki otrzymamy przez obrót danego wektora, zgodnie z ruchem wskazówek zegara, o daną liczbę stopni.

Obie notacje (z ukośnikiem / pomiędzy liczbą i wektorem, oraz obróć poprzedzającym dane) są równoważne.

Przykłady:

? napoz poz + [25 35]
? pokaż [25 17 50] - [10 10 10]
[15 7 40]
? pokaż 2 * [-1 1 5]
[-2 2 10]
? pokaż [100 200] * [1 -1]
[100 -200]
? pokaż [100 200] / 20
[5 10]
? pokaż [100 200] / [100 50]
[1 4]
? pokaż 45 / [100 200]
[212.13 70.71]


Inne funkcje wektorowe

abs
iloczyn
ilorazc
int
kątWektorów
losowa
reszta
równe?
różnica
suma

Są to funkcje takie jak: długość wektora, losowy wektor itd. Jeśli funkcja wymaga dwóch danych wektorów - oba muszą mieć taką samą liczbę współrzędnych (ten sam wymiar). Jedynym wyjątkiem jest funkcja równe?, która akceptuje dowolne dane wektory i daje wynik fałsz gdy nie są identyczne.

Procedura | Typ | Opis
abs wektor | F | Wynikiem jest długość danego wektora (czyli pierwiastek kwadratowy sumy kwadratów jego współrzędnych). Jeśli jest to wektor [a b], jego długość jest równa pierwiastkowi kwadratowemu z a2 + b2.
iloczyn wektor1 wektor2 Wynikiem jest wektor
[a b c … ], gdzie a jest iloczynem pierwszych współrzędnych wektora1 i wektora2, b jest iloczynem drugich współrzędnych wektora1 i wektora2,… itd. Ta funkcja nie ma odpowiednika w tradycyjnej matematyce, ale jest bardzo użyteczna w wielu obliczeniach. Na przykład, kiedy chcemy zmienić skalę postaci żółwia nie zachowując proporcji, możemy napisać:
? ustalSkalęPos iloczyn skalaPos [1.5 2]

Identyczny wynik ma wyrażenie wektor1 * wektor2.
ilorazc wektor liczba
ilorazc wektor1 wektor2 		F Jeśli druga dana to liczba, wynikiem jest wektor, jaki otrzymamy obliczając ilorazy całkowite wszystkich współrzędnych danego wektora przez daną liczbę. Wyrażenie ilorazc wektor liczba jest równoważne z:
wykwp [ilorazc :% liczba] wektor.

Jeśli druga dana jest wektorem, wynikiem jest wektor
[a b c … ], gdzie a jest ilorazem całkowitym pierwszej współrzędnej wektora1 przez pierwszą współrzędną wektora2, b jest ilorazem całkowitym drugiej współrzędnej wektora1 przez drugą współrzędną wektora2,… itd.

int wektor | F | Wynikiem jest wektor [a b c …], gdzie a to część całkowita pierwszej współrzędnej danego wektora, b to część całkowita drugiej współrzędnej … itd.
kątWektorów wektor1 wektor2 F Wynikiem jest kąt utworzony przez wektor1 i wektor2. Można stosować tylko do wektorów płaszczyzny:

? pokaż kątWektorów [200 200] [100 0]
45
? pokaż kątWektorów [100 0] [200 200]
315
losowa wektor | F | Wynikiem jest wektor, którego każda współrzędna jest liczbą losową mniejszą niż odpowiednia współrzędna danego wektora [a b c …] (wszystkie współrzędne danego wektora muszą być nieujemne).
reszta wektor liczba
reszta wektor1 wektor2 		F Jeśli druga dana to liczba, wynikiem jest wektor [a b c …], gdzie a to reszta z dzielenia pierwszej współrzędnej danego wektora przez daną liczbę, b to reszta z dzielenia drugiej współrzędnej danego wektora przez daną liczbę, ... itd.

Jeśli druga dana jest wektorem, wynikiem jest wektor
[a b c … ], gdzie a jest resztą z dzielenia pierwszej współrzędnej wektora1 przez pierwszą współrzędną wektora2, b jest resztą z dzielenia drugiej współrzędnej wektora1 przez drugą współrzędną wektora2,… itd.
równe? wektor1 wektor2
(równe? wektor1 … ) 		F Wynikiem jest prawda, jeśli obie dane są identyczne. W przeciwnym przypadku wynikiem jest fałsz. Jeśli liczba danych jest inna niż 2, wynikiem jest prawda tylko wtedy, gdy wszystkie dane są identyczne.
różnica wektor1 wektor2 F Wynikiem jest różnica danych wektorów.

Identyczny wynik ma wyrażenie wektor1 - wektor2.
suma wektor1 wektor2 F Wynikiem jest suma danych wektorów to znaczy wektor
[a b c … ], gdzie a jest sumą pierwszych współrzędnych wektora1 i wektora2, b jest sumą drugich współrzędnych wektora1 i wektora2,… itd.

Identyczny wynik ma wyrażenie wektor1 + wektor2.

Przykłady:

? pokaż abs [10 10 10]
17.32
? pokaż ilorazc [220 330 110 440] 7
[31 47 15 62]
? pokaż reszta [220 330 110 440] 7
[3 1 5 6]
? pokaż ilorazc [220 330 110 440] [10 20 30 40]
[22 16 3 11]
? pokaż reszta [220 330 110 440] [10 20 30 40]
[0 10 20 0]
? pokaż losowa [256 256 256]
[212 98 74]
? ustalKolPis losowa [256 256 256]


Predykaty wektorowe

Można łatwo sprawdzić, czy dwa wektory są identyczne za pomocą = lub <>.

Procedura | Typ | Opis
wektor1 = wektor2 | F | Wynikiem jest prawda, gdy dane wektory są identyczne. W przeciwnym przypadku wynikiem jest fałsz. Jeśli dane wektory mają różny wymiar, wynikiem jest fałsz.
wektor1 <> wektor2 | F | Wynikiem jest prawda, gdy dane wektory nie są identyczne. W przeciwnym przypadku wynikiem jest fałsz.

Przykłady:

? pokaż [10 50 40] + [40 80 -20] = [50 130 20]
prawda
? pokaż 45 / [20 30] <> -45 / [20 30]
prawda


Słowa

Słowo jest sekwencją znaków (liter A, B, ... a, b, ..., cyfr 0, 1, ... 9, znaków przestankowych i znaków specjalnych). Używamy ich jako atomów do budowania złożonych danych - list, a także jako nazw obiektów, procedur użytkownika, właściwości oraz zmiennych. Słowa składające się tylko z cyfr (i kropki dziesiętnej oraz znaku + albo -) nazywamy liczbami.

Zobacz:

Klasyfikowanie danych
Wybieranie elementów lub fragmentów słów i list
Usuwanie elementów lub fragmentów słów i list
Konstruowanie i modyfikowanie słów i list
Zaawansowane wybieranie i modyfikowanie elementów
Porównywanie słów i list
Porównywanie słów i list (notacja przedrostkowa)
Przekazywanie informacji o słowach i listach
Kody ASCII


Klasyfikowanie danych

Procedura | Typ | Opis
liczba? cokolwiek | F | Wynikiem jest prawda jeśli dana jest liczba, czyli słowo numeryczne. W przeciwnym przypadku wynikiem jest fałsz.
lista? cokolwiek | F | Wynikiem jest prawda jeśli dana jest lista. W przeciwnym przypadku wynikiem jest fałsz.
puste? cokolwiek | F | Wynikiem jest prawda jeśli dana jest pustym słowem lub pustą listą. W przeciwnym przypadku wynikiem jest fałsz.
słowo? cokolwiek | F | Wynikiem jest prawda jeśli dane jest słowo. W przeciwnym przypadku wynikiem jest fałsz. Czasem trzeba użyć słowa, które zawiera specjalne znaki, jak A/B lub A B. Wtedy stosujemy specjalną notację słów - piszemy |A/B| oraz |A B|.

Przykłady:

? pokaż puste? bp bo "ser
fałsz
? pokaż lista? [a b c]
prawda
? pokaż lista? pierw [a b c]
fałsz
? pokaż liczba? słowo długość "John długość "Paul
prawda
? pokaż słowo? ost [aha ehe uhu]
prawda


Wybieranie elementów lub fragmentów słów lub list

Wybieranie elementów lub fragmentów słów i list

element
los
ost
pierw

Procedura | Typ | Opis
element liczba cokolwiek
element wycinek cokolwiek 		F Jeśli pierwsza dana to liczba n, to wynikiem jest element na pozycji n - drugiej danej. Jeśli druga dana jest słowem, to wynikiem jest jego n-ty znak. Jeśli druga dana jest listą, to wynikiem jest jej n-ty element. W obu przypadkach dana liczba n musi być niemniejsza niż 1 i niewiększa niż liczba elementów drugiej danej. Jeśli liczba n nie jest całkowita, to jest zaokrąglana do wartości całkowitej.

Jeśli pierwsza dana jest zwykłym wycinkiem [ liczba1 liczba2 ], wynikiem funkcji element jest fragment drugiej danej, tzn. sekwencja kolejnych znaków lub elementów – od pozycji liczba1, o długości liczba2. Jeśli dany jest wycinek złożony postaci: [wycinek wycinek … ], wynik jest listą lub słowem, jakie otrzymamy przez połączenie odpowiednich prostych wycinków.

Jeśli dany wycinek ma długość 0, na przykład [3 0], wynikiem funkcji jest pusta lista albo puste słowo (zależnie od typu drugiej danej). Jeśli liczba1 określająca początek wycinka jest mniejsza niż 1 lub większa niż długość drugiej danej, wynikiem jest pusta lista albo słowo. Jeśli liczba2 jest większa niż liczba elementów drugiej danej od wybranego początku wycinka do końca, to wynik ma odpowiednio mniej elementów niż to określa liczba2.
los cokolwiek | F | Jeśli dane jest niepuste słowo, wynikiem jest jego losowo wybrany znak. Jeśli dana jest niepusta lista, wynikiem jest jej losowo wybrany element.
ost cokolwiek | F | Jeśli dane jest niepuste słowo, wynikiem funkcji ost jest jednoliterowe słowo utworzone przez jego ostatni znak. Jeśli dana jest niepusta lista, wynikiem jest jej ostatni element.
pierw cokolwiek | F | Jeśli dane jest niepuste słowo, wynikiem funkcji pierw jest jednoliterowe słowo utworzone przez jego pierwszy znak. Jeśli dana jest niepusta lista, wynikiem jest jej pierwszy element.

Przykłady:

? pokaż pierw "abc
a
? pisz pierw 99.567
9
? pokaż pierw [[a b c] d e]
[a b c]
? pokaż ost [[a 56][b 78][c 91]]
[c 91]
? pokaż ost ost [peter and paul]
l
? pokaż element 3 [a b c d e]
c
? pokaż element 3 [[a][b][c][d]]
[c]
? pokaż element [3 4] "famous
mous
? pokaż element [2 1] [a b c d]
[b]
? pokaż los [1 2 3 4 5 6 7 8 9]
8
? pokaż los [1 2 3 4 5 6 7 8 9]
2

Wyrażenie los cokolwiek jest równoważne z element 1 + losowa długość cokolwiek cokolwiek.


Usuwanie elementów lub fragmentów słów i list

Procedura Typ Opis
bezElementu znak słowo
bezElementu cokolwiek lista
Skrót:
be 		F Jeśli druga dana to słowo, wynikiem jest dane słowo z usuniętymi wszystkimi wystąpieniami danego znaku. Jeśli druga dana to lista, wynikiem jest ta lista z usuniętymi wszystkimi elementami identycznymi jak pierwsza dana.
bezElNum liczba cokolwiek
bezElNum wycinek cokolwiek
Skrót:
ben 		F Jeśli pierwsza dana to liczba n, a druga to słowo, wynikiem jest dane słowo bez n-tego znaku. Jeśli pierwsza dana to liczba n, a druga to lista, wynikiem jest dana lista bez n-tego elementu. Jeśli pierwsza dana to wycinek, to wynikiem jest druga dana z usuniętym odpowiednim wycinkiem.
bezOst cokolwiek
Skrót:
bo 		F Jeśli dane jest niepuste słowo, wynikiem jest to słowo bez ostatniego znaku. Jeśli dana jest niepusta lista, wynikiem jest dana lista bez ostatniego elementu. Jeśli dana jest pusta, wystąpi błąd.
bezPierw cokolwiek
Skrót:
bp 		F Jeśli dane jest niepuste słowo, wynikiem jest to słowo bez pierwszego znaku. Jeśli dana jest niepusta lista, wynikiem jest dana lista bez pierwszego elementu. Jeśli dana jest pusta, wystąpi błąd.
odElementu słowo1 słowo2
odElementu cokolwiek lista
Skrót:
odel 		F Wynikiem jest wycinek drugiej danej (słowa lub listy) od pierwszego wystąpienia pierwszej danej do końca. Jeśli obie dane są słowami, Logo szuka pierwszego wystąpienia słowa1 w słowie2 i wynikiem jest wycinek słowa2 od pierwszego wystąpienia słowa1. Jeśli słowo1 nie występuje w słowie2, wynikiem jest słowo puste.

Jeśli drugą dana jest lista, Logo szuka pierwszego elementu identycznego jak pierwsza dana i wynikiem jest wycinek listy od tego elementu. Jeśli takiego elementu nie ma, wynikiem jest pusta lista [].

Przykłady:

? pisz bp "Logo
ogo
? pokaż bp bp [[a 2][b 3][c 4]]
[[c 4]]
? pokaż bo ost ost bo [[a 56][b 78][c 91]]
7
? pokaż bezElementu "l "hello
heo
? pokaż bezElementu 1 [[1][2][3]]
[[1][2][3]]
? pokaż bezElementu 1 [1 2 3 1 2 3]
[2 3 2 3]
? pokaż bezElNum 4 [1 2 3 1 2 3]
[1 2 3 2 3]
? pokaż bezElNum [3 2] [1 2 3 1 2 3]
[1 2 2 3]
? pokaż odElementu "ma "submarine
marine


Konstruowanie i modyfikowanie słów i list

lista
nak
nap
słowo
sortuj
tasuj
wspak
zastąp
zdanie; zd

Procedura | Typ | Opis
lista cokolwiek1 cokolwiek2
(lista cokolwiek1 … ) 		F Wynikiem jest lista, której elementami są wszystkie dane. Danymi mogą być dowolne obiekty.
nak cokolwiek lista
nak słowo1 słowo2 		F Jeśli druga dana to lista, wynikiem jest dana lista z dodanym na końcu nowym elementem – identycznym jak pierwsza dana. Jeśli druga dana to słowo, wynikiem jest słowo utworzone przez połączenie słowa2 i słowa1.
Wyrażenie nak słowo1 słowo2 jest równoważne z słowo słowo2 słowo1 (zwróć uwagę na kolejność danych).
nap cokolwiek lista
nap słowo1 słowo2 		F Jeśli druga dana to lista, wynikiem jest dana lista z dodanym na początku nowym elementem – identycznym jak pierwsza dana. Jeśli druga dana to słowo, wynikiem jest słowo utworzone przez połączenie słowa1 i słowa2.
Wyrażenie nap słowo1 słowo2 jest równoważne z słowo słowo1 słowo2. Jeśli pierwsza dana jest słowem a druga listą, nap działa podobnie jak zdanie.
słowo słowo1 słowo2
(słowo słowo1 … ) 		F Wynikiem jest słowo utworzone przez połączenie danych słów.
sortuj zdanie F Wynikiem jest lista tych samych słów, co w danym zdaniu, uporządkowana alfabetycznie. Liczby – słowa numeryczne – poprzedzają w tym porządku inne słowa.

? pokaż sortuj [jane Peter Joe Kate Roger]
[Jane Joe Kate Peter Roger]
? pokaż
sortuj wykwp "tasuj generuj 10 [:%] "abcd
[abcd adbc badc badc cabd cadb cbda dbac dcba dcba]
? pokaż sortuj [b 3 c 1 a 3]
[1 2 3 a b c]
tasuj cokolwiek F Wynikiem jest dane cokolwiek ze zmienioną losowo kolejnością elementów. Jeśli dana jest lista i pewien jej element jest również listą, to jej elementy nie zostaną potasowane:

? pokaż tasuj [1 2 3 [4 5] 6]
[3 [4 5] 2 6 1]
wspak cokolwiek | F | Wynikiem jest dane cokolwiek odwrócone wspak. Ostatni element jest pierwszym, przedostatni drugim... itd.
zastąp liczba lista cokolwiek
zastąp liczba słowo1 słowo2
zastąp wycinek lista1 lista2
zastąp wycinek słowo1 słowo2 		F Jeśli pierwsza dana to liczba n, wynik jest taki jak druga dana, w której n-ty element został zastąpiony przez trzecią daną. Jeśli liczba n jest mniejsza niż 1, trzecia dana będzie wstawiona na początek drugiej. Jeśli liczba n jest większa niż długość drugiej danej, trzecia dana będzie wstawiona na koniec drugiej. Jeśli dana liczba nie jest całkowita, to jest zaokrąglana do wartości całkowitej.
Jeśli pierwsza dana jest prostym wycinkiem [liczba1 liczba2], wynikiem jest druga dana, której odpowiedni wycinek został zastąpiony przez trzecią daną. W tym przypadku trzecia dana musi być tego samego typu co druga.
zdanie cokolwiek cokolwiek2
(zdanie cokolwiek1 … )
Skrót:
zd 		F Wynikiem jest lista utworzona w następujący sposób: jeśli wszystkie dane to listy, ich wszystkie elementy są zebrane w jedną listę. Jeśli jakaś dana jest słowem, zostanie wstawiona na wynikową listę jako jej element.
Zwróć uwagę na różnicę między funkcjami zdanie i lista, a także między pokaż i pisz zastosowanymi do list:

? pokaż lista [a b c] "d
[[a b c] d]
? pokaż zd [a b c] "d
[a b c d]
? pisz zd [a b c] "d
a b c d

Przykłady:

? pokaż nap "a [b c d]
[a b c d]
? pokaż nap "a [ ]
[a]
? pokaż nap [1 2] [3 4]
[[1 2] 3 4]
? pokaż nak "a [ ]
[a]
? pokaż nak [x y] [z w]
[z w [x y]]
? pokaż nak "możliwe "nie
niemożliwe
? pokaż (lista 4 -6 5 -33)
[4 -6 5 -33]
? pokaż lista "a [b c]
[a [b c]]
? pokaż zd "piotr "paweł
[piotr paweł]
? pokaż zastąp 2 [a b c d] 1000
[a 1000 c d]
? pokaż zastąp 2 "tree "hr
three
? pokaż zastąp [3 2] "hello "r
hero
? pokaż zastąp [2 4] [a b c d e f] [x y]
[a x y f]
? pokaż wspak "balon
nolab
? pokaż wspak [[1 2 3][4 5 6][7 8 9]]
[[7 8 9][4 5 6][1 2 3]]
? pokaż tasuj "balon
oanlb
? pokaż tasuj [1 2 3 [4 5] 6]
[3 [4 5] 2 6 1]
? pisz (słowo 23 ". 7)
23.7
? pokaż liczba? (słowo 23 ". 7)
prawda
? pokaż zd [a b c] [d [e] f]
[a b c d [e] f]
Uwaga: zd to skrót nazwy zdanie.


Zaawansowane wybieranie i modyfikowanie elementów

elzg
zastąpwg

Procedura Typ Opis
elzg liczba lista
elzg lista1 lista2 		F Jeśli pierwszą daną jest liczba n, wynikiem jest n-ty element danej listy (to działa podobnie jak element, ale jeśli dana liczba n jest mniejsza niż 1 lub większa niż długość listy, wynikiem jest lista pusta []).
Jeśli pierwszą daną jest lista liczb całkowitych określa ona, który element której podlisty, której podlisty, .... danej listy2 jest wynikiem. Pierwsza liczba z listy1 wskazuje element – podlistę – listy2, gdzie należy szukać wyniku. Druga liczba z listy1 w skazuje element podlisty listy2 gdzie należy szukać wyniku … itd.:

? pokaż elzg [2] [[A B] [C [D [E] F]] G]
[C [D [E] F]]
? pokaż elzg [2 1] [[A B] [C [D [E] F]] G]
C
? pokaż elzg [2 2 2] [[A B] [C [D [E] F]] G]
[E]

Jeśli jakikolwiek element listy1 jest liczbą mniejszą niż 1 lub większy niż długość odpowiedniej listy na liście2 lub na liście2 nie można już zejść głębiej, wynikiem jest lista pusta [].
zastąpwg liczba lista cokolwiek
zastąpwg lista1 lista2 cokolwiek 		F Jeśli pierwszą daną jest liczba n, wynikiem jest druga dana, na której n-ty element został zastąpiony przez trzecią daną. Jeśli dana liczba n jest mniejsza niż 1 lub większa niż długość listy, wynikiem jest dana lista bez żadnych zmian.
Jeśli pierwsza dana jest listą dodatnich liczb całkowitych, określa ona element (znajdujący się gdzieś na liscie2), który należy zastąpić przez trzecią daną – cokolwiek.
Pierwsza liczba z listy1 wskazuje element listy2. Jeśli na liście1 nie ma więcej liczb, to ten element listy2 należy zastąpić przez trzecią daną i koniec. Jeśli lista2 ma mniej elementów niż jedyna liczba na liście1, wynikiem jest lista2 bez żadnych zmian:

? pokaż zastąpwg [2] [A B [C] D] "Tak
[A Tak [C] D]
? pokaż zastąpwg [2] [A [B [C]] D] "Tak
[A Tak D]
? pokaż zastąpwg [4] [A [B [C]] D] "Tak
[A [B [C]] D]

Gdy na liście1 jest więcej liczb – pierwsza wskazuje, który element listy2 należy odpowiednio zmodyfikować, druga liczba wskazuje, który element elementu wskazanego przez pierwszą liczbę, trzeba zmodyfikować itd.:

? pokaż zastąpwg [2 1] [A [B [C]] D] "Tak
[A [Tak [C]] D]
? pokaż zastąpwg [2 2] [A [B [C]] D] "Tak
[A [B Tak] D]
? pokaż zastąpwg [2 2 1] [A [B [C]] D] "Tak
[A [B [Tak]] D]
? pokaż zastąpwg [2 2 1 3] [A [B [C]] D] "Tak
[A [B [C]] D]

Trzeci przykład pokazuje, że w przypadku, gdy musielibyśmy zagłębić się w poszukiwaniach bardziej niż pozwala lista2, wynikiem jest niezmieniona lista2.


Porównywanie słów i list

Za pomocą predykatów <, <=, >, >=, <>, =, równe?, większe? i mniejsze? można porównywać również zwykłe nienumeryczne słowa W tym celu stosuje się zwykły alfabetyczny porządek słów.

Procedura | Typ | Opis
słowo1 < słowo2 | F | Wynikiem jest prawda jeśli słowo1 jest alfabetycznie wcześniejsze niż słowo2. W przeciwnym przypadku wynikiem jest fałsz.
słowo1 <= słowo2 | F | Wynikiem jest prawda jeśli słowo1 jest identyczne lub alfabetycznie wcześniejsze niż słowo2. W przeciwnym przypadku wynikiem jest fałsz.
słowo1 <> słowo2 | F | Wynikiem jest prawda jeśli słowo1 jest różne od słowa2. W przeciwnym przypadku wynikiem jest fałsz.
słowo1 = słowo2
lista1 = lista2 		F Wynikiem jest prawda jeśli dane słowa są identyczne. Jeśli obie dane są listami, wynikiem jest prawda jeśli ich odpowiednie elementy są równe. W przeciwnym przypadku wynikiem jest fałsz.
słowo1 > słowo2 | F | Wynikiem jest prawda jeśli słowo1 jest alfabetycznie późniejsze niż słowo2. W przeciwnym przypadku wynikiem jest fałsz.
słowo1 >= słowo2 | F | Wynikiem jest prawda jeśli słowo1 jest identyczne lub alfabetycznie późniejsze niż słowo2. W przeciwnym przypadku wynikiem jest fałsz.

Przykłady:

? pokaż "kil < "kit
prawda
? pokaż "metr < "met
fałsz


Porównywanie słów i list (notacja przedrostkowa)

Procedura Typ Opis
mniejsze? słowo1 słowo2
(mniejsze? słowo1 … ) 		F Wynikiem jest prawda jeśli słowo1 jest alfabetycznie wcześniejsze niż słowo2. W przeciwnym przypadku wynikiem jest fałsz. Jeśli jest więcej (lub mniej) danych niż dwie, wynikiem jest prawda jeśli dane słowa są uporządkowane alfabetycznie. W przeciwnym przypadku wynikiem jest fałsz.
równe? cokolwiek1 cokolwiek2
(równe? cokolwiek1 … ) 		F Wynikiem jest prawda jeśli dane są identyczne słowa lub identyczne listy. W przeciwnym przypadku wynikiem jest fałsz. Jeśli jest więcej (lub mniej) danych niż dwie, wynikiem jest prawda jeśli wszystkie dane są identyczne. W przeciwnym przypadku wynikiem jest fałsz.
większe? słowo1 słowo2
(większe? słowo1 … ) 		F Wynikiem jest prawda jeśli słowo1 jest alfabetycznie późniejsze niż słowo2. W przeciwnym przypadku wynikiem jest fałsz. Jeśli jest więcej (lub mniej) danych niż dwie, wynikiem jest prawda jeśli dane słowa są uporządkowane w porządku odwrotnym do alfabetycznego. W przeciwnym przypadku wynikiem jest fałsz.

Przykłady:

? pokaż większe? "kil "kit
fałsz
? pokaż równe? [a [b c]] [a b c]
fałsz


Przekazywanie informacji o słowach i listach

Procedura | Typ | Opis
długość cokolwiek | F | Jeśli dane jest słowo, wynikiem jest liczba jego znaków. Jeśli dana jest lista, wynikiem jest lista jej elementów. Lista [A B [C D]] ma trzy elementy: A, B oraz [C D], a nie cztery.
element? cokolwiek lista
element? słowo1 słowo2 		F Jeśli drugą daną jest listą, wynikiem jest prawda, gdy dane cokolwiek jest elementem tej listy. W przeciwnym przypadku wynikiem jest fałsz. Jeśli dane są dwa słowa, wynikiem jest prawda, gdy słowo1 jest podsłowem słowa2.
element liczba cokolwiek | F | Jeśli pierwsza dana to liczba n, to wynikiem jest element na pozycji n - drugiej danej. Jeśli druga dana jest słowem, to wynikiem jest jego n-ty znak. Jeśli druga dana jest listą, to wynikiem jest jej n-ty element. W obu przypadkach dana liczba n musi być niemniejsza niż 1 i niewiększa niż liczba elementów drugiej danej. Jeśli liczba n nie jest całkowita, to jest zaokrąglana do wartości całkowitej.
numel słowo lista
numel słowo słowo
numel lista lista 		F Jeżeli pierwszy parametr jest elementem drugiego, wynikiem funkcji jest numer pozycji, od której zaczyna się wystąpienie pierwszego parametru w drugim, w przeciwnym przypadku wynikiem jest liczba 0.

Przykłady:

? pokaż długość "logo
4
? pokaż długość [logo]
1
? pokaż element? "abc [a ab abc abcd]
prawda
? pokaż element? "abc [[a ab abc abcd]]
fałsz
? pokaż element? [abc] [[a][ab][abc]]
prawda
? pokaż element? "or "georginia
prawda
? pokaż element 1 [[1][2][3]]
[1]
? pokaż numel "a "abrakadabra
1
? pokaż numel "ad "abrakadabra
6
? pokaż numel "ad [abrak ad dbra]
2
? pokaż numel "x [ a b r a k a d a b r a]
0


Kody ASCII

Procedura | Typ | Opis
ascii znak
ascii słowo 		F Wynikiem jest kod numeryczny ASCII (liczba z zakresu od 0 do 255 włącznie) danego znaku lub pierwszego znaku danego słowa.
znak liczba | F | Wynikiem jest znak, którego kodem ASCII jest dana liczba (musi być z zakresu od 0 do 255 włącznie).

Przykłady:

? pokaż ascii "a
65
? pokaż znak 32 + ascii "A
a
? pisz znak 122
z
? pokaż znak 32 + ascii "E
e


Funkcje logiczne i słowa

Funkcje dające wynik prawda albo fałsz nazywamy potocznie warunkami a formalnie predykatami. Przykładami predykatów są <, >, <=, >=, <>, i =, oraz funkcje takie jak słowo?, postać?, lista? itd. Słowo prawda oznacza, że określony warunek jest spełniony, a słowo fałsz, że nie jest. Wiele procedur Logo musi mieć dane wartości logiczne prawda albo fałsz, na przykład jeśli, jeżeli lub test, które zwykle są wynikiem sprawdzenia określonych warunków.

Procedury takie jak słowo?, równe? oraz puste? są przykładem prostych warunków, ale czasem trzeba sprawdzać bardziej złożone warunki utworzone z prostszych. W Logo istnieją funkcje (operacje) umożliwiające budowanie złożonych warunków: i, lub, nie oaz albo.

Zobacz:


Wartości logiczne

Są to słowa prawda i fałsz. Używamy ich jako danych procedur jeśli, jeżeli oraz test, a także operacji logicznych i, lub, albo oraz nie.

Słowo | Opis
fałsz | Reprezentuje wartość logiczną fałsz.
prawda | Reprezentuje wartość logiczną prawda.
jld | Reprezentuje z jednakowym prawdopodobieństwem wartość logiczną prawda albo fałsz.

Przykłady:

? pokaż i "prawda "prawda
prawda
? pokaż 6 = 2 + 3
fałsz
? powtórz 50000 [jeżeli jld [np 1] [ws 1]]
; z prawdopodobieństwem 0.5 naprzód albo wstecz.


Funkcje logiczne

albo
i
lub
nie

Danymi tych funkcji są wartości logiczne, które mogą być określone za pomocą wyrażeń, jak w przypadku i liczba? :p pierwsza? :p. Logo najpierw oblicza wartości odpowiednich wyrażeń (w tym przypadku liczba? :p oraz pierwsza? :p), a następnie przekazuje wyniki jako dane funkcji (w tym przypadku funkcji i ).

Czasem, wolelibyśmy powstrzymać automatyczne wyliczanie przez Logo z góry wartości wszystkich danych wyrażeń. Na przykład, gdyby :p w powyższym przykładzie nie było liczbą, ustalanie wartości wyrażenia pierwsza? :p, byłoby stratą czasu. Można tego uniknąć stosując specjalną notację i liczba? :p [pierwsza? :p]. W takim przypadku wartość drugiego wyrażenia nie będzie obliczana z góry przez Logo, ale przez funkcję i tylko wtedy, gdy okaże się, że pierwsze wyrażenie ma wartość prawda.

Procedura | Typ | Opis
albo wartość logiczna wartość logiczna
(albo wartość logiczna … )
albo [ wyrażenie ] [ wyrażenie ]
(albo [ wyrażenie ] … ) 		F W przypadku dwóch danych wynikiem jest prawda tylko wtedy, gdy dokładnie jedna ma wartość prawda. Jeśli jest 0 danych wynikiem jest fałsz.
W przypadku N wynik jest taki jak: albo (albo dana1 … danaN-1) danaN.
i wartość logiczna wartość logiczna
(i wartość logiczna … )
i [ wyrażenie ] [ wyrażenie ]
(i [ wyrażenie ] … ) 		F Wynikiem jest prawda, jeśli obie dane mają wartość prawda. W przeciwnym przypadku wynikiem jest fałsz. Jeśli jest więcej (lub mniej) niż dwie dane, wynikiem jest prawda tylko wtedy, gdy wszystkie mają wartość prawda.
Dane mogą mieć postać: [wyrażenie], co oznacza, że wartość wyrażenia ustala funkcja i, a nie z góry środowisko Logo, w takim przypadku, jeśli jedna z danych ma wartość fałsz, nie oblicza się wartości innych wyrażeń w nawiasach kwadratowych.
lub wartość logiczna wartość logiczna
(lub wartość logiczna … )
lub [ wyrażenie ] [ wyrażenie ]
(lub [ wyrażenie ] … ) 		F Wynikiem jest fałsz, jeśli obie dane mają wartość fałsz. W przeciwnym przypadku wynikiem jest prawda. Jeśli jest więcej (lub mniej) niż dwie dane, wynikiem jest fałsz tylko wtedy, gdy wszystkie mają wartość fałsz.
Jeśli jakieś dane są w nawiasach kwadratowych, funkcja lub oblicza ich wartość od lewej do prawej, jeśli któraś z nich ma wartość prawda, nie liczy się już wartości pozostałych.
nie wartość logiczna | F | Wynikiem jest prawda, jeśli dana ma wartość fałsz. W przeciwnym przypadku wynikiem jest fałsz.

Przykłady:

? pokaż i liczba? pierw [2 3] liczba? ost [2 3]
prawda
? jeśli i (długość [1 2 3] = 3) element? 2 123 [pisz "tak]
tak
? pokaż (i liczba? 5 liczba? 6 liczba? "abcd)
fałsz
? pokaż i (1 < 1) [znajdźWszystkieOpcje [a b c d]]
fałsz

W ostatnim przykładzie wartość wyrażenia [znajdźWszystkieOpcje [a b c d]] nie będzie w ogóle liczona.


Funkcje logiczne o danych liczbowych

bitAlbo
bitI
bitLub
bitNie

Następujące funkcje zamieniają dane liczby na postać dwójkową, następnie wykonują odpowiednie operacje logiczne na odpowiednich bitach (cyfrach dwójkowych 0 i 1) i przekazują wynik w zapisie dziesiętnym.

Procedura Typ Opis
bitAlbo liczba1 liczba2
(bitAlbo liczba1 … ) 		F Na odpowiadających sobie (licząc od końca) cyfrach binarnej reprezentacji danych (dziesiętnie) liczb wykonywana jest operacja logiczna Albo. Jeśli na odpowiadających sobie pozycjach są różne cyfry, to wynikiem na tej pozycji jest 1, a w przeciwnym przypadku 0. Wynikiem funkcji jest zapis dziesiętny otrzymanego w ten sposób słowa zerojedynkowego.

(bitAlbo liczba1 liczba2 liczba3 … ) jest równoważne z:
(bitAlbo bitAlbo liczba1 liczba2 liczba3 … )

? pokaż bitAlbo 2 3

1
- stosujemy bitowo albo dla 10 (bitowo) oraz 11 (bitowo). Wynikiem jest 1 (dziesiętnie i bitowo).
? pokaż bitAlbo 123 321
314

- stosujemy bitowo albo dla 1111011 (bitowo) oraz 101000001 (bitowo). Wynikiem jest 100111010 (bitowo), czyli 314 (dziesiętnie).
bitI liczba1 liczba2
(bitI liczba1 … ) 		F Na odpowiadających sobie (licząc od końca) cyfrach binarnej reprezentacji danych (dziesiętnie) liczb wykonywana jest operacja logiczna I. Jeśli na odpowiadających sobie pozycjach są dwie 1, to wynikiem na tej pozycji jest 1, a w przeciwnym przypadku 0. Wynikiem funkcji jest zapis dziesiętny otrzymanego w ten sposób słowa zerojedynkowego:

? pokaż bitI 2 3
2

- stosujemy bitowo i dla 10 (bitowo) oraz 11 (bitowo). Wynikiem jest 10 (bitowo), czyli 2 (dziesiętnie).

? pokaż bitI 123 321
65

- stosujemy bitowo i dla 1111011 (bitowo) oraz 101000001 (bitowo). Wynikiem jest 1000001 (bitowo), czyli 65 (dziesiętnie).

(bitI liczba1 liczba2 liczba3 … ) jest równoważna z
(bitI bitI liczba1 liczba2 liczba3 … ).
bitLub liczba1 liczba2
(bitLub liczba1 … ) 		F Na odpowiadających sobie (licząc od końca) cyfrach binarnej reprezentacji danych (dziesiętnie) liczb wykonywana jest operacja logiczna Lub. Jeśli na odpowiadających sobie pozycjach są dwa 0, to wynikiem na tej pozycji jest 0, a w przeciwnym przypadku 1. Wynikiem funkcji jest zapis dziesiętny otrzymanego w ten sposób słowa zerojedynkowego:

? pokaż bitLub 2 3

3
- stosujemy bitowo lub dla 10 (bitowo) oraz 11 (bitowo). Wynikiem jest 11 (bitowo), czyli 3 (dziesiętnie).

? pokaż bitLub 123 321
379

- stosujemy bitowo lub dla 1111011 (bitowo) oraz 101000001 (bitowo). Wynikiem jest 101111011 (bitowo), czyli 379 (dziesiętnie).

(bitLub liczba1 liczba2 liczba3 … ) jest równoważne z
(bitLub bitLub liczba1 liczba2 liczba3 … )
bitNie liczba F Każda cyfra dwójkowej reprezentacji danej (dziesiętnie) liczby jest zamieniana na przeciwną – 0 na 1 i odwrotnie. Wynik tej zamiany w zapisie dziesiętnym jest wynikiem funkcji. Zauważ, że:
liczba + bitNie liczba to zawsze –1.

? pokaż bitNie 2
–3
? pokaż 27 + bitNie 27
–1


Procedury sterujące i warunkowe

Są to procedury, które sterują procesem obliczeń, zwykle zależnie od określonych warunków. Ich danymi są słowa, wartości logiczne prawda i fałsz, listy itd.

Zobacz:


Warunki

jeśli
jeśliNie
jeśliTak
jeżeli
test
wybierz

Procedura | Typ | Opis
jeśli wartość logiczna lista-P | P | Jeśli dana jest wartość logiczna prawda, wykonywana jest dana lista poleceń. W przeciwnym przypadku, nie robi się nic i koniec - polecenie nie ma żadnego skutku.
jeśliNie lista-P | P | Jeśli w tej samej procedurze wykonano uprzednio polecenie test z rezultatem fałsz, skutkiem polecenia jeśliNie jest wykonanie danej listy poleceń, inaczej polecenie nie ma żadnego skutku.
jeśliTak lista-P | P | Jeśli w tej samej procedurze wykonano uprzednio polecenie test z rezultatem prawda, skutkiem polecenia jeśliTak jest wykonanie danej listy poleceń, inaczej polecenie nie ma żadnego skutku.
jeżeli wartość logiczna lista-P1 lista-P2
jeżeli wartość logiczna [ wyrażenie1 ] [ wyrażenie2 ] 		P

F

 Procedura jeżeli jest poleceniem albo funkcją zależnie od typu drugiej i trzeciej danej. Jeśli są to listy poleceń, procedura jeżeli jest poleceniem. Jeśli są to ujęte w nawiasy kwadratowe wyrażenia, procedura jeżeli daje określony wynik i jest funkcją. W przypadku, gdy używamy jeżeli jako funkcji, żadna z danych nie może być pustą listą.
W przypadku, gdy pierwsza dana ma wartość prawda, wykonywana jest lista1, (wynikiem jest wartość wyrażenia1), a w przeciwnym przypadku - lista2 (wynikiem jest wartość wyrażenia2).
test wartość Logiczna P Powoduje zapamiętanie danej wartości logicznej prawda lub fałsz (zwykle określonej w postaci odpowiedniego warunku) - na użytek poleceń jeśliTak oraz jeśliNie. Polecenie test musi być wywołane przez tę sama procedurę, w której zamierzamy użyć odpowiednich jeśliTak lub jeśliNie:

oto parzysta? :n
  test reszta :n 2 = 0
 jeśliTak [wynik "prawda]
 jeśliNie [wynik "fałsz]
już

Ale funkcję parzysta? można zdefiniować prościej:

oto parzysta? :n
 wynik reszta :n 2 = 0
już
wybierz słowo [przypadek1 … ] P

F

 przypadek1, przypadek2, … muszą mieć jedną z następujących postaci:
  • słowo [polecenie … polecenie] - zauważ, że przypadków nie zapisujemy w nawiasach kwadratowych,
  • słowo [ wyrażenie ],
  • słowo1 słowo2 … słowoN [polecenie … polecenie],
  • słowo1 słowo2 … słowoN [wyrażenie],
  • [polecenie … polecenie], jeśli jest to ostatni przypadek w konstrukcji wybierz pełni on rolę "przypadku INACZEJ".,
  • [wyrażenie], jeśli jest to ostatni przypadek w konstrukcji wybierz pełni on rolę "przypadku INACZEJ".

Procedura wybierz oblicza wartość pierwszej danej i porównuje tę wartość - dane słowo - ze słowami selektorami w każdym kolejnym przypadku. Gdy w jakimś przypadku napotka słowo identyczne, wykonuje listę poleceń [polecenie … polecenie] lub [wyrażenie] tego przypadku i koniec.
Jeśli w wybranym przypadku jest lista poleceń, procedura wybierz jest poleceniem. Jeśli wybrany przypadek zawiera [wyrażenie], procedura wybierz jest funkcją i jej wynikiem jest wartość tego wyrażenia.
Jeśli przypadek ma wiele selektorów słowo1 słowo2 ... słowoN, zostanie wybrany - jeśli choć jedno z tych słów jest identyczne jak dane słowo (pierwsza dana). Jeśli w żadnym przypadku nie ma odpowiedniego słowa, ale istnieje przypadek INACZEJ zostanie wykonana lista poleceń lub [wyrażenie] tego przypadku. Jeśli nie istnieje przypadek INACZEJ, to:

  • jeśli procedura wybierz została użyta jako polecenie, wykonanie się kończy nie powodując żadnego skutku.
  • jeśli procedura wybierz została użyta jako funkcja, wystąpi błąd.
? przyp "k 100
? wybierz :k * 3 [200 400 [pisz "nie]
               300 [pisz "tak]]
tak
? wybierz :k [10 20 30 [przyp "k :k * 3]
                    [przyp "k :k/10]]
? pokaż :k
10
? przyp "k wybierz reszta :k 2
    [0 [:k * 2 + 1] 1 [:k * 2]]
? pokaż :k
21
oto kreśl
 wybierz klawisz
   [esc [stop]
    a A b B [np 20]
    c C d D [lw 30]
            [pw 30]]
 kreśl
już
? kreśl

Pamiętaj że:

  • Polecenia test, jeśliNie i jeśliTak muszą występować w tej samej procedurze, test musi poprzedzać jeśliNie i jeśliTak.
  • Nie jest konieczne użycie obu poleceń jeśliTak i jeśliNie.
  • Zarówno jeśliTak jak i jeśliNie może wystąpić wiele razy po odpowiednim poleceniu test.
  • dzięki test, jeśliTak i jeśliNie, można uniknąć długich i nieczytelnych poleceń jeśli oraz jeżeli.

Przykłady:

oto silnia :n
 jeśli :n < 2 [wynik 1]
 wynik :n * silnia :n - 1
już
? pisz silnia 12
479001600

Alternatywne definicje:

oto silnia :n
 wynik jeżeli :n < 2
      [1]
      [:n * silnia :n - 1]
już
oto silnia :n
 test :n < 2
 jeśliTak [wynik 1]
 jeśliNie [wynik :n * silnia :n - 1]
już


Konstrukcje sterujące

czekaj
czekajDo
dla
dlaKażdego
dopóki
pętla
powtórz
zrób

Procedura | Typ | Opis
czekaj liczba | P | Powoduje zatrzymanie procesu, w którym czekaj wystąpiło na daną liczbę milisekund. czekaj 1000 zatrzymuje proces na 1 sekundę.
czekajDo [ wyrażenie ] | P | “W kółko” oblicza wartość wyrażenia aż będzie to prawda.
dla słowo [ n1 n2 ] lista-P
dla słowo [ n1 n2 n3 ] lista-P 		P Gdy n1 < n2, zmiennej (sterującej), której nazwą jest dane słowo nadaje się wartość początkową n1 i wykonywana jest lista poleceń. Następnie zwiększa się wartość zmiennej o 1 (albo o n3, jeśli jest określone) i ponownie wykonuje się listę poleceń. Powtarza się to dopóki wartość zmiennej sterującej nie przekroczy n2.
Jeśli krok n3 nie jest określony i n1 > n2, wartość zmiennej sterującej jest za każdym razem zmniejszana o 1. Podobnie, gdy n3 jest ujemne, wartość zmiennej sterującej jest zmniejszana.
Jeśli n3 ma wartość 0 lub n1 = n2, lista poleceń jest wykonywana jeden raz. W poleceniach listy, można używać funkcji numpow (w skrócie npw), której wynikiem jest numer aktualnie wykonywanego powtórzenia.
dlaKażdego słowo cokolwiek lista-P P Zmiennej (sterującej), której nazwą jest dane słowo nadaje się jako wartość początkową pierwszy element drugiej danej cokolwiek (znak, jeśli jest to słowo; element, jeśli to lista; fazę, jeśli to postać etc.) i wykonuje się daną listę poleceń. Następnie zmiennej sterującej przypisuje się nową wartość – kolejny element danej cokolwiek i ponownie wykonuje listę poleceń i tak dalej aż do wyczerpania cokolwiek.
Liczba wykonań listy poleceń jest równa długości cokolwiek. Jeśli dane cokolwiek jest puste, nie zostanie wykonana ani razu. W poleceniach listy można używać funkcji numpow (w skrócie npw), której wynikiem jest numer aktualnie wykonywanego powtórzenia.
dopóki [ wyrażenie ] lista-P P Oblicza wartość wyrażenia. Jeśli to prawda, wykonuje daną listę-P. Ponownie oblicza wartość wyrażenia i jeśli to prawda, wykonuje listę poleceń. Powtarza to tak długo, dopóki wyrażenie ma wartość prawda.

W poleceniach listy-P można używać funkcji numpow (w skrócie npw), której wynikiem jest numer aktualnie wykonywanego powtórzenia.
pętla lista-P P Cyklicznie wykonuje daną listę poleceń w pętli bez końca. Równoważnym poleceniem jest dopóki ["prawda] lista-P.
Polecenia listy-P będą wykonywane "bez końca" – dopóki proces, który wywołał tę pętlę nie zostanie anulowany. Ale, nie należy mylić polecenia pętla z poleceniem bezKońca, które uruchamia nowy niezależny proces.
powtórz liczba lista-P P Powtarza daną listę poleceń daną liczbę razy. Jeśli dana liczba nie jest całkowita, to zostanie zaokrąglona do wartości całkowitej. Polecenie powtórz może być użyte w innym powtórz.
W poleceniach listy-P można używać funkcji numpow (w skrócie npw), której wynikiem jest numer aktualnie wykonywanego powtórzenia.

? powtórz 3 [pisz npw]
1
2
3
zrób lista-P
zrób [ wyrażenie ] 		P
F 		Jeśli daną jest lista-P, procedura zrób jest poleceniem, którego skutkiem jest wykonanie danej listy poleceń. Równoważnym poleceniem jest powtórz 1 lista-P. Jeśli dane jest wyrażenie (w nawiasach kwadratowych), procedura zrób jest funkcją, której wynikiem jest wartość danego wyrażenia.

Przykłady:

? dla "j [1 3] [pokaż :j]
1
2
3
? dla "j [1 3 2] [pokaż :j]
1
3
? dlaKażdego "s [krokodyl żyrafa osioł]
[(pisz słowo npw ". "słowo "ma długość :s "liter)]
1. słowo ma 8 liter
2. słowo ma 6 liter
3. słowo ma 5 liter
? pętla [pw losowa 360 np 5 jeśli abs poz > 80 [ws 5]]
? powtórz 36 [np 10 pw 10]
? pokaż zrób [2 + 3]
5
? cs
? dopóki [kierunek < 359][np kierunek ws kierunek pw 1]


Stosowanie procedur i danych proceduralnych

filtr
generuj
wykonaj
wykwp

Jest to rodzina bardzo użytecznych procedur, które przyjmują inne procedury jako swoje dane i stosują je do innych danych.

Procedura | Typ | Opis
filtr obiekt-proceduralny lista | F | Dany obiekt musi określać jednoparametrową funkcję logiczną. Wynikiem funkcji filtr jest lista tych elementów danej listy, dla których dana funkcja logiczna ma wynik prawda.
generuj obiekt-proceduralny1
obiekt-proceduralny2
cokolwiek
generuj liczba
obiekt-proceduralny2
cokolwiek 		F Oba obiekty proceduralne powinny być jednoparametrowe, a obiekt-proceduralny1 musi być funkcją logiczną. Wynikiem funkcji generuj jest lista następujących elementów:
  • Pierwszym elementem jest dane cokolwiek.
  • Drugim elementem jest wynik zastosowania obiektu-proceduralnego2 do pierwszego elementu.
  • Trzecim elementem jest wynik zastosowania obiektu-proceduralnego2 do drugiego elementu... itd.

Długość listy wynikowej określa:

  • dana liczba,
  • albo obiekt-proceduralny1 – tę funkcję stosujemy do każdego kolejnego elementu, jeśli wynikiem jest prawda, generujemy dalej kolejne elementy, jeśli fałsz – kończymy ten proces i nie umieszczamy na wynikowej liście ostatnio wygenerowanego elementu.
wykonaj obiekt-proceduralny lista P

F

 Dany obiekt musi być procedurą, która przyjmuje liczbę danych równą długości danej listy. wykonaj stosuje daną procedurę do danej listy danych. Na przykład: wykonaj "słowo [aa bb] jest równoważne z słowo "aa "bb.
Jeśli dany obiekt proceduralny jest poleceniem wykonaj jest poleceniem, w przeciwnym przypadku jest funkcją. Jeśli dana procedura akceptuje zmienną liczbę danych, to drugą daną procedury wykonaj może być lista o dowolnej długości:
? pokaż wykonaj "słowo [hi po po tam]
hipopotam
wykwp obiekt-proceduralny lista1
(wykwp obiekt-proceduralny lista1 lista2 ... ) 		P
F 		Liczba parametrów obiektu proceduralnego musi być równa długości danych list lista1, lista2 ... (też równej długości).
Dany obiekt proceduralny stosujemy najpierw do listy pierwszych elementów każdej z danych list lista1, lista2, ..., następnie do listy drugich elementów, itd..
Jeśli dany obiekt proceduralny jest poleceniem, to również procedura wykwp jest poleceniem – nie ma wyniku. W przeciwnym przypadku wykwp jest funkcją, której wynikiem jest lista wyników danej operacji na odpowiednich współrzędnych danych list.

Przykłady:

? pokaż wykonaj "słowo [tata rak]
tatarak
? pokaż wykonaj [[x y z][wy :x * :y / :z]] [100 200 300]
66.6667
? pokaż filtr "liczba? [aaa 123 b [22 33] c -99]
[123 -99]
? pokaż filtr [:% > 5] [1 2 3 4 5 6 7 8]
[6 7 8]
? pokaż generuj 10 [:% + 1] 1
[1 2 3 4 5 6 7 8 9 10]
? pokaż generuj [:% > 0] [div :% 2] 100
[100 50 25 12 6 3 1]
? wykwp "pisz [[Jak] [się] [masz]]
Jak
się
masz
? pokaż (wykwp "lista [1 2 3 4] [a b c d])
[[1 a] [2 b] [3 c] [4 d]]
? pokaż filtr [0.5] [1 2 3 4 5 6 7 8 9 10]
[1 4 5 6 9 10]


Zatrzymywanie i uruchamianie procedur

błąd
dość
przerwij
rzuć
specBłąd
stop
wynik; wy
złap

Procedura | Typ | Opis
błąd F

Słowo specjalne

 Gdy jest funkcją, wynikiem jest pełny komunikat o błędzie, jeśli w procesie wystąpił błąd (standardowy lub zdefiniowany przez użytkownika); jeśli nie było błędu, wynikiem jest [].
Pełny komunikat o błędzie otrzymamy, jeśli wywołamy funkcję błąd przed całkowitym zakończeniem procesu. (jeśli wywołamy funkcję błąd dwukrotnie w tym samym procesie, pierwsze wywołanie da wynik - pełny komunikat o błędzie, drugie - []).
Jeśli błąd jest pierwszą daną dla złap, każdy błąd, jaki wystąpi w czasie wykonywania treści złap zostanie w tym miejscu przechwycony - nie zostanie wyświetlony żaden komunikat o błędzie i polecenie następne po złap powinno określić reakcję na konkretny błąd.
oto sprawdź
 złap "błąd [zrób cl]
 pokaż błąd
już

Wyżej: w pierwszym przypadku - błąd jako słowo, w drugim - jako funkcja.

Spróbuj - napisz sprawdź (i enter), a następnie : pokaż 55 albo 55. Wypróbuj również:

? przyp "i 333
? złap "błąd
    [jeśli :i > 222 [specBłąd [Za dużo!] :i ]]
  pokaż błąd

[100 Za dużo! [] 0 specBłąd 333]
dość | P | Zamyka Logo.
przerwij | Słowo specjalne | Tego słowa używamy w poleceniach rzuć "przerwij, lub złap "przerwij do realizacji nielokalnego stopu. Polecenie rzuć "przerwij jest równoważne z stopMnie.
rzuć słowo P Zatrzymuje aktualnie wykonywaną procedurę użytkownika i procedury nadrzędne (które ją wywołały) aż do poziomu procedury złap mającej identyczną pierwszą daną jak dane słowo. Nie znalezienie złap z odpowiednim słowem, spowoduje błąd.
Użycie rzuć "przerwij bez odpowiedniego złap, zatrzymuje cały proces. Polecenie rzuć "przerwij jest równoważne z stopMnie.
specBłąd tekst cokolwiek P Zatrzymuje proces i wskazuje zdefiniowany przez użytkownika błąd.
Za pomocą tego polecenia można tworzyć sytuacje, w których występuje zamierzony błąd. Pierwsza dana dla specBłąd określa komunikat o błędzie wyświetlany w wierszu poleceń lub oknie błędów. Może zawierać wystąpienia symbolu specjalnego #h. Każde wystąpienie #h w danym tekście będzie w wyświetlanym komunikacie zastąpione przez druga daną - cokolwiek. Dodatkowo, dana cokolwiek będzie częścią pełnego komunikatu o błędzie.

? jeśli :M > 200
   [specBłąd
      "|Lista #h ma za mało elementów.| [A B]]
Lista A B ma za mało elementów.

Zobacz także opis funkcji błąd.
stop P Zatrzymuje aktualnie wykonywaną procedurę i przekazuje sterowanie do procedury, która ją wywołała. Jeśli takiej procedury nie ma - zostaje zatrzymany cały proces. Polecenia stop można użyć tylko w treści procedury użytkownika.
Zwróć uwagę na różnicę pomiędzy wynik i stop.
wynik cokolwiek
Skrót:
wy 		P Zatrzymuje wykonywanie funkcji i przekazuje wynik (cokolwiek - słowo lub listę) do miejsca, gdzie wykonywana funkcja została wywoana.
złap słowo lista-P
złap "błąd lista-P
złap "przerwij lista-P
P Wykonuje kolejno polecenia na danej liście poleceń, gdy napotka polecenie rzuć ze słowem identycznym jak dane słowo (pierwsza dana) , sterowanie jest przekazywane do polecenia i będzie wykonane następne polecenie po złap:

? złap "hallo
   [pisz "A rzuć "hallo pisz "B]
  pisz [Jestem tutaj]
A
Jestem tutaj

Pierwsza dana polecenia złap jest rodzajem etykiety, za pomocą której deklarujemy: Jeśli wykonując listę-P napotkasz polecenie rzuć słowo, to zakończ aktualnie wykonywaną procedurę i wszystkie procedury wywołane (w tym samym procesie) do napotkania etykiety. Polecenia rzuć i złap umożliwiają realizację nielokalnego przerwania procedury (podczas, gdy stop i wynik umożliwiają lokalne przerwanie procedury użytkownika).
Jeśli pierwszą daną dla złap jest błąd, tzn. polecenie ma postać złap "błąd lista-P, błąd, jaki pojawi się w czasie realizacji listy-P zostanie przechwycony - nie zostanie wydrukowany komunikat o błędzie i polecenie następne po złap określi, jaka będzie reakcja na konkretny błąd.
Jeśli pierwszą daną dla złap jest przerwij, to poleceniami rzuć "przerwij lub stopMnie można przerwać wykonywaną procedurę z listy-P i przejść do następnego polecenia za złap.

Przykłady:

oto sumaKwadratów :a :b
 wynik :a * :a + :b * :b
już
? pokaż sumaKwadratów 5 6
61
oto piszListę :z
 jeśli puste? :z [stop]
 pisz pierw :z
 piszListę bp :z
już

? piszListę [a b c]
a
b
c
? powtórz 3 [złap "tu [pisz "A rzuć "tu pisz "B ]]
A
A
A

W powyższym przykładzie B nigdy nie zostanie wypisane.


Inne procedury sterujące

Procedura Typ Opis
ignoruj cokolwiek
(ignoruj cokolwiek … ) 		P Ta procedura pobiera daną (lub dane) i ignoruje ją (je). Polecenia ignoruj używamy w sytuacjach, gdy chcemy by Logo pobrało wartość nie robiąc z niej żadnego użytku.
numpow
Skrót:
npw 		F Funkcji numpow można używać tylko w konstrukcjach powtórz, dla, dopóki i dlaKażdego. Jej wynikiem jest zawsze dodatnia liczba całkowita, informująca o numerze aktualnie wykonywanego powtórzenia.

Przykłady:

? usuńObiekt wszystkie
? powtórz 36
  [nowy "żółw [kierunek (10 * npw) pisak pod
   postać [ukp "niebieski ugp 3 np 55 ukp "czerwony kropka 15]]]
? słuchaj wszystkie
? bezKońca [każdy [np bp kto pw bp kto czekaj 1]]


Właściwości i listy właściwości

dlwł
lwł
ładTab
przyWłaść
pwł
pwwł
usuń; us
uwłaś
właściwości
właściwość
zapiszTab

Właściwości, nazywane też listami właściwości lub słowami z określonymi właściwościami, są szczególnymi danymi w Logo. Ich istnienie umożliwia związanie ze słowem dowolnej liczby różnych faktów w postaci par:

nazwa wartość
nazwa wartość
nazwa wartość
…

Należy pamiętać, że słowo z określonymi właściwościami i zmienna o identycznej nazwie - jeśli taka istnieje - są całkowicie niezależne. W przypadku, gdy istnieje zmienna dowolnego typu o nazwie nzm, jednocześnie może istnieć - zupełnie niezależnie - lista właściwości związana ze słowem nzm. Wszystkie właściwości związane z określonym słowem tworzą listę właściwości tego słowa (która może być pusta). Listy właściwości wszystkich słów tworzą tabelę właściwości.

Wszystkie listy właściwości są pokazywane w Oknie pamięci, w folderze Właściwości klasy Baza.

Właściwości można podglądać, dodawać i usuwać w dialogu Zmień mnie - można go otworzyć podwójnym kliknięciem dowolnej właściwości w folderze Właściwości w Oknie pamięci, lub z wiersza poleceń za pomocą:

? Baza'ZmieńMnie.

Następujące procedury umożliwiają określanie właściwości związanych ze słowami oraz ich usuwanie, modyfikowanie i operowanie nimi.

Procedura | Typ | Opis
dLWł słowo
lista-właściwości 		P dLWł oznacza definiuj listę właściwości.

Definiuje jednocześnie wiele właściwości danego słowa. Określa je dana lista [nazwa1 wartość1 nazwa2 wartość2 … ]. Jeśli dla danego słowa, zdefiniowano już wcześniej jakieś właściwości, to zostaną one usunięte.

dLWł można zastąpić sekwencją poleceń przyWłaść.
lwł słowo | F | lwł oznacza lista właściwości. Wynikiem jest lista właściwości danego słowa mająca postać [nazwa1 wartość1 nazwa2 wartość2 … ] zawierająca wszystkie aktualnie kreślone właściwości danego słowa.
ładTab plik-Txt P To polecenie musi mieć daną nazwę pliku mającego strukturę standardowych plików INI systemu Windows. Odczytuje treść pliku (z bieżącego folderu Logomocji Teksty) jako grupę właściwości słów. Każdą parę nazwa = wartość odczytuje jako zapis wartości właściwości nazwa wartość poprzedzającego słowa. Na przykład, treść pliku:

[tygrys]
nazwa = Joe

[małpa]
nazwa = Julia
waga = 62

określa dla słowa tygrys właściwość o nazwie nazwa oraz dla słowa małpa - dwie właściwości o nazwach: nazwa i waga.
Nowe właściwości odczytane z pliku zostaną dodane do już istniejących. Istniejące - zostaną przedefiniowane.
przyWłaść słowo1 słowo2 cokolwiek P przyWłaść oznacza przypisz właściwość.

Określa nową właściwość słowa1. Jej nazwą będzie dane słowo2, a wartością dane cokolwiek. Jeśli słowo1 już ma właściwość o danej nazwie, jej stara nazwa zostanie zastąpiona przez nową.

? przyWłaść "ojciec "niemiecki "Vater
? przyWłaść "ojciec "francuski "pere
? przyWłaść "matka "niemiecki "Mutter
? przyWłaść "matka "francuski "mere

Wiele właściwości słowa można zdefiniować naraz jednym poleceniem dLWł.
pwł " słowo
pwł [" słowo1 " słowo2 … ] 		P pwł oznacza pisz właściwości. Drukuje wszystkie właściwości danego słowa, lub wszystkich słów na danej liście:

? pwł ["tygrys "małpa]
tygrys nazwa jest Joe
małpa nazwa jest Julia
małpa weight jest 62
pwwł P pwwł oznacza pisz wszystkie właściwości. Drukuje wszystkie właściwości w następującej formie:

słowo1 nazwa1 jest wartość1
słowo1 nazwa2 jest wartość2
słowo1 nazwa3 jest wartość3
słowo2 nazwa4 jest wartość4 ... itd.

Jest równoważne z pwł właściwości.
usuń " słowo
usuń [" słowo1 " słowo2 … ]
Skrót:
us 		P Usuwa całą listę właściwości danego słowa, lub danych słów słowo1, śłowo2… etc. Zwróć uwagę na specyficzną notację:
? usuń ""słoń

Wartością wyrażenia ""słoń, jest pięcioliterowe słowo "słoń (z cudzysłowem). Oto jak wskazujemy procedurze usuń - co usunąć:

  • listę właściwości określonego słowa, czy
  • procedurę użytkownika (na polecenia usuń "słoń, usuń będzie próbowało usunąć procedurę słoń - jeśli taka istnieje),
  • autonomiczna zmienną (na polecenie usuń ":słoń, usuń będzie próbowało usunąć lokalną lub globalną zmienną słoń - jeśli taka istnieje).

By usunąć listy właściwości wielu słów w jednym kroku, piszemy:

? usuń ["małpa "tygrys "żmija]

Polecenie usuń ""słowo jest równoważne z
dlwł "słowo [].
uswłaś słowo1 słowo2
Skrót:
uswł 		P uswłaś oznacza usuń właściwość. Usuwa z listy właściwości słowa1 właściwość o nazwie słowo2. całą listę właściwości słowa można usunąć za pomocą:

usuń ""słowo lub
usuń ["słowo] lub
dLWł "słowo []

Zobacz właściwości.
właściwości F Wynikiem jest lista wszystkich słów, które mają określone właściwości.
Zauważ, że wszystkie słowa na liście właściwości zaczynają się cudzysłowem ("), na przykład ["ojciec "matka]. Ma to na celu odróżnienie słów z określonymi właściwościami od nazw procedur i zmiennych.
właściwość słowo1 słowo2 | F | Jeśli na liście właściwości słowa1 istnieje właściwość o nazwie słowo2, wynikiem jest wartość tej właściwości. W przeciwnym przypadku wynikiem jest lista pusta.
zapiszTab plik-Txt P Zapisuje wszystkie właściwości wszystkich słów w pliku tekstowym. Jeśli w nazwie pliku nie ma rozszerzenia, polecenie zapiszTab dodaje .TXT. Plik zostanie zapisany w folderze Teksty (o ile nie zmieniono standardowego ustalenia za pomocą polecenia ustalŚcieżkę) w standardowym formacie INI systemu Windows. Na przykład, jeśli zostały zdefiniowane następujące właściwości:

? przyWłaść "ojciec "Francuski "pere
? przyWłaść "matka "Niemiecki "Mutter
? przyWłaść "matka "Francuski "mere
? zapiszTab "słownik

to plik słownik.TXT będzie miał następującą treść:

[ojciec]
Francuski = pere

[matka]
Niemiecki = Mutter
Francuski = mere

Przykłady:

? przyWłaść "ojciec "Niemiecki "Vater
? przyWłaść "ojciec "Francuski "pere
? przyWłaść "matka "Niemiecki "Mutter
? przyWłaść "matka "Francuski "mere
? pokaż właściwość "matka "Francuski
mere
? pokaż lwł "ojciec
[Niemiecki Vater Francuski pere]
? pokaż właściwość "matka "Hiszpański
[]
? pwwł
ojciec Niemiecki jest Vater
ojciec Francuski jest pere
matka Niemiecki jest Mutter
matka Francuski jest mere
? po ["ojciec]
ojciec Niemiecki jest Vater
ojciec Francuski jest pere
? po ""matka
matka Niemiecki jest Mutter
matka Francuski jest mere
? usWłaś "ojciec "Francuski
? pokaż lwł "ojciec
[Niemiecki Vater]
? dLWł "ojciec [Niemiecki Vater Francuski pere Słowacki otec]
? pokaż właściwości
["ojciec "matka]
? usuń właściwości


Dane i wyniki

Polecenia i funkcje tej kategorii przetwarzają dane z klawiatury, dialogów zdefiniowanych przez użytkownika oraz pliku (tzn. bieżącego strumienia wejściowego) i zapisują je na ekranie tekstowym, w polu tekstowym lub pliku.

W tej sekcji opisujemy również procedury przetwarzania danych wprowadzanych za pomocą myszy. Objaśnienie innych procedur obsługi wejścia/wyjścia można znaleźć w opisie klasy Joystick.

Zobacz:


Klawiatura

czytajKlawisz
czytajZnak; cz
klawisz?
klawisz
ostKlawisz

Są dwa sposoby sterowania projektem za pomocą klawiatury. Prostym i eleganckim sposobem jest użycie menu skrótów, które można zdefiniować dla każdego obiektu, i równoległego procesu. Bardziej tradycyjny sposób polega na sprawdzaniu klawiatury - w pętli bez końca - w oczekiwaniu na określone znaki sterujące, i w międzyczasie wykonywanie aktywnej części pętli. Poniżej przedstawiamy oba podejścia w postaci dwóch rozwiązań tego samego problemu. Chcemy, by żółw był w ciągłym ruchu: po naciśnięciu prawej strzałki - poruszał się w kierunku na wschód, po naciśnięciu strzałki w dół - w kierunku na południe, itd. Naciśnięcie klawisza Escape ma być znakiem końca "gry".

? ż1'ustalSkróty [esc [anuluj "ruch]
    góra [skieruj 0]
    prawo [skieruj 90]
    dół [skieruj 180]
    lewo [skieruj 270]]
? (ż1'bezkońca [np 1 czekaj 10] "ruch)
oto ruch
 jeśli klawisz?
    [wybierz klawisz
       [esc   [stop]
        góra  [skieruj 0]
        lewo  [skieruj 270]
        prawo [skieruj 90]
        dół   [skieruj 180]]]
 ż1'np 1
 czekaj 10
 ruch
już

Rozwiązanie w lewej kolumnie wymaga tylko umiejętności definiowania skrótów klawiszowych i procesów. Rozwiązanie w prawej kolumnie - więcej wiedzy programistycznej. Procedury opisane poniżej są najczęściej używane w rozwiązaniach tradycyjnych (podobnych do przedstawionego powyżej w prawej kolumnie).

Procedura Typ Opis
czytajKlawisz F Wynikiem jest kod numeryczny ASCII ostatnio naciśnietego klawisza (klawiatury). Jeśli nie został naciśnięty żaden klawisz, funkcja czytajKlawisz czeka aż zostanie naciśnięty (tzn. aż funkcja klawisz? da wynik prawda). Naciśnięty znak nie jest wyświetlany na ekranie tekstowym.

Zaleca się używanie funkcji klawisz? tylko w procesach wywołanych z wiersza poleceń lub w innych procesach tylko wtedy, gdy wiersz poleceń jest wyłączony. Zobacz ustawienie wierszPoleceń okna głównego.

? pokaż zdanie czytajKlawisz czytajKlawisz
[98 66] – to są kody b i B (przykładowe).

czytajKlawisz daje następujące wartości w przypadku naciśnięcia klawiszy sterujących:
  9 Tab
 27 Esc
 13 Enter
  8 BackSpace
-72 góra klawisz ze strzałką do góry
-75 lewo klawisz ze strzałką w lewo
-77 prawo klawisz ze w prawo
-80 dół klawisz ze strzałką w dół
-76 5 na środku klawiatury numerycznej
-71 Home
-79 End
-73 PgUp
-81 PgDn
-82 Insert
-83 Delete
  1 Ctrl+A
…
 26 Ctrl+Z
-59 F1 po ustalOpcje [fKlawisze 0]
…
-69 F11 po ustalOpcje [fKlawisze 0]
-70 F12 po ustalOpcje [fKlawisze 12]

Funkcji czytajKlawisz (w odróżnieniu od czytajZnak) nie można przekierować, za pomocą polecenia czytajZ, by czytała z pliku. Nawet wtedy, gdy strumieniem wejściowym jest plik, można za pomocą funkcji czytajKlawisz odczytywać klawiaturę.
czytajZnak
Skrót:
cz 		F Wynikiem jest znak wpisany na klawiaturze. Jeśli nie wprowadzono żadnego znaku, funkcja czytajZnak czeka aż zostanie wprowadzony (tzn. aż funkcja klawisz? da wynik prawda). Wprowadzony znak nie jest wyświetlany na ekranie tekstowym.

Zaleca się używanie funkcji klawisz? tylko w procesach wywołanych z wiersza poleceń lub w innych procesach tylko wtedy, gdy wiersz poleceń jest wyłączony. Zobacz ustawienie wierszPoleceń okna głównego.

Po naciśnięciu klawisza sterującego (tzn. Escape, Backspace, Insert, Delete, Home, End, PgUp lub PgDn), czytajZnak da wynik znak 0. Po naciśnięciu Enter oraz Tab, czytajZnak da wynik znak 13 i znak 9.

Jeśli strumień wejściowy został przekierowany poleceniem czytajZ do pliku, wynikiem czytajZnak będzie kolejny znak w bieżącym wierszu tego pliku
klawisz F Wynikiem jest nazwa ostatnio naciśniętego klawisza. Jeśli nie został naciśnięty żaden klawisz, procedura klawisz czeka aż zostanie naciśnięty (tzn. aż funkcja klawisz? da wynik prawda). Naciśnięty znak nie jest wyświetlany na ekranie.
Zaleca się używanie funkcji klawisz tylko w procesach wywołanych z wiersza poleceń lub w innych procesach tylko wtedy, gdy wiersz poleceń jest wyłączony. Zobacz ustawienie wierszPoleceń okna głównego.

Nazwą klawisza może być:

  • dowolny pojedynczy (dający się wydrukować) znak, wielkie i małe litery są rozróżnialne.
  • kombinacja: ctrl.A, … ctrl.Z, shift.ctrl.A, … shift.ctrl.Z, alt.ctrl.A, … alt.ctrl.Z, shift.alt.ctrl.A, … shift.alt.ctrl.Z,
  • home, góra, lewo, prawo, dół, num5, pageUp, pageDown, end, spacja, insert, delete, enter, backSpace, tab, esc (dowolne z tych słów może być poprzedzone przez jedno lub więcej ctrl., shift., alt., na przykład ctrl.enter lub ctrl.shift.enter) itd.

Funkcji klawisz (w odróżnieniu od czytajZnak) nie można przekierować, za pomocą polecenia czytajZ, by czytała z pliku. Nawet wtedy, gdy strumieniem wejściowym jest plik, można za pomocą funkcji klawisz odczytywać klawiaturę.
klawisz? F Wynikiem jest prawda, jeśli został naciśnięty jakiś klawisz na klawiaturze. W przeciwnym przypadku wynikiem jest fałsz.
Zaleca się używanie funkcji klawisz? tylko w procesach wywołanych z wiersza poleceń lub w innych procesach tylko wtedy, gdy wiersz poleceń jest wyłączony. Zobacz ustawienie wierszPoleceń okna głównego.
ostKlawisz F Jeśli funkcję ostKlawisz wywołujemy po klawisz, czytajKlawisz lub czytajZnak, wynikiem jest nazwa ostatnio naciśniętego klawisza. Funkcja ostKlawisz nie “zjada” kodu klawisza, użyta wielokrotnie raz za razem daje ten sam wynik, dopóki znowu nie użyjemy funkcji klawisz, czytajKlawisz lub czytajZnak:

? powtórz 5 [(pokaż czytajKlawisz ostKlawisz ostKlawisz ostKlawisz)]
97 a a a
13 enter enter enter
32 spacja spacja spacja
27 esc esc esc
9 tab tab tab

Klawisz użyty jako skrót zdefiniowany w menu skrótów może być również wynikiem funkcji ostKlawisz.


Wejście i wyjście

czytajListę; cl
czytajSłowo; csw
czytajZ
czytajZnak; cz
drukRys
drukujMnie
drukujTekst
kpl?
pisz; ps
piszDo
piszWiersz
piszWPolu
pokaż
ustalDruk
wpisz

Procedury tej grupy odczytują znaki, słowa i listy z klawiatury lub pliku (tzn. z bieżącego strumienia wejściowego) i drukują je na ekranie tekstowym, w polu tekstowym lub pliku. Standardowy strumień wejściowy można zmienić za pomocą czytajZ i ustalić, że będzie to plik tekstowy, a nie klawiatura. Za pomocą polecenia czytajZ [] można powrócić do początkowego ustalenia, że strumieniem wejściowym jest klawiatura. Można również - za pomocą polecenia piszDo - skierować standardowy strumień wyjściowy zamiast na ekran tekstowy do pliku tekstowego. Początkowe ustalenie można przywrócić za pomocą piszDo [].

Procedura | Typ | Opis
czytajListę
Skrót:
cl 		F Funkcja wyświetla na ekranie tekstowym znak wpisz listę i czeka na wpisanie czegoś i naciśnięcie Enter.

Wynikiem będzie lista, której treścią jest wpisany tekst:

? pokaż czytajListę
: tylko trzy słowa - to są wpisane słowa
[tylko trzy słowa] - a to jest wynik
? pokaż czytajListę
: bardzo [dziwna [struktura]] - to wpisano
[bardzo [dziwna [struktura]]] - a to wynik.

Zaleca się używanie funkcji czytajZnak tylko w procesach wywołanych z wiersza poleceń lub w innych procesach tylko wtedy, gdy wiersz poleceń jest wyłączony. Zobacz ustawienie wierszPoleceń okna głównego.

Jeśli - na skutek polecenia czytajZ - strumieniem wejściowym jest plik, wynikiem czytajListę lista, będzie lista, której treścią jest kolejny wiersz pliku.

czytajSłowo
Skrót:
csw 		F To jest funkcja podobna do czytajListę. Ale wynik ma zawsze postać słowa (które może zawierać wszystkie możliwe znaki, jak: spacje, nawiasy kwadratowe, itd.).

Jeśli - na skutek polecenia czytajZ - strumieniem wejściowym jest plik, wynikiem czytajSłowo będzie kolejny wiersz pliku interpretowany jako jedno słowo.
czytajZ plik
czytajZ "Schowek
czytajZ [] 		P Skierowuje standardowy strumień wejściowy od danego pliku. Odtąd procedury czytajZnak, czytajSłowo oraz czytajListę będą odczytywały ten plik, a nie klawiaturę. Jeśli nie istnieje plik o danej nazwie, wystąpi błąd.

? czytajZ "plik55 Nie mogę otworzyć pliku D:\Imagine\Teksty\plik55.TXT

Jeśli w nazwie pliku nie ma ścieżki dostępu lub jest tylko częściowa, zostanie użyty podfolder Teksty folderu macierzystego (wynik wyrażenia (ścieżka "teksty)). Jeśli w nazwie pliku nie ma rozszerzenia, czytajZ doda .TXT.

Po wczytaniu ostatniego elementu pliku (tzn. ostatniego wiersza przez procedurę czytajListę lub ostatniego słowa przez procedurę czytajSłowo lub ostatniego znaku przez procedurę czytajZnak), predykat klp? będzie dawał wynik prawda.

Standardowy strumień wejściowy można również skierować bezpośrednio do Schowka Windows. Zawartość Schowka może pochodzić z innych aplikacji Windows bądź być ustalana w Logo, jeśli uprzednio - za pomocą piszDo - skierowano do schowka standardowy strumień wyjściowy.

Jeśli chcemy, by strumieniem wejściowym była znowu klawiatura, możemy użyć polecenia czytajZ [ ].
czytajZnak
Skrót:
cz 		F Wynikiem jest znak wpisany za pomocą klawiatury. Jeśli nie wpisano żadnego znaku, czytajZnak czeka, aż zostanie wpisany (aż funkcja klawisz? da wynik prawda). Wpisany znak nie jest wyświetlany na ekranie tekstowym.

Zaleca się używanie funkcji czytajZnak tylko w procesach wywołanych z wiersza poleceń lub w innych procesach tylko wtedy, gdy wiersz poleceń jest wyłączony. Zobacz ustawienie wierszPoleceń okna głównego.

Po naciśnięciu klawisza sterującego (strzałki, Insert, Delete, Home, End, PgUp lub PgDn), wynikiem czytajZnak będzie znak 0.

Jeśli - na skutek polecenia czytajZ - strumieniem wejściowym jest plik, wynikiem czytajZnak będzie kolejny znak bieżącego wiersza w tym pliku.
drukRys flaga
(drukRys flaga prostokąt ) 		P To polecenie jest opisane w sekcji Procedury okna głównego.
drukujMnie
(drukujMnie flaga)
(drukujMnie flaga prostokąt ) 		P To polecenie jest opisane w sekcji:

Procedury klas Strona i Plansza
Procedury klasy PoleTekstowe
drukuTekst flag | P | To polecenie jest opisane w sekcji Procedury okna głównego.
kpl? F kpl? oznacza koniec pliku?

Jeśli bieżącym strumieniem wejściowym jest klawiatura, wynikiem jest fałsz. Zobacz polecenie czytajZ. Jeśli bieżącym strumieniem wejściowym jest plik, który nie został jeszcze całkowicie wczytany (za pomocą czytajListę, czytajSłowo lub czytajZnak), wynikiem jest również fałsz.

Wynikiem jest prawda po wczytaniu ostatniego wiersza pliku (za pomocą czytajListę), ostatniego słowa (za pomocą czytajSłowo) lub ostatniego znaku (za pomocą czytajZnak).
pisz cokolwiek
(pisz cokolwiek cokolwiek … )
Skrót:
ps 		P Wypisuje dane na ekranie tekstowym, lub zapisuje je w pliku wyjściowym, jeśli strumień wyjściowy został skierowany do pliku za pomocą polecenia piszDo. Jeśli jest wiele danych, zostaną oddzielone odstępami. Po wydrukowaniu danych pisz przenosi kursor na początek kolejnego wiersza.

Polecenie pisz daje bardziej czytelne wydruki niż pokaż i wpisz, usuwa zewnętrzne nawiasy kwadratowe list, co ułatwia operowanie zdaniami:

? pisz "super
super
? (pisz "super "Logo)
super Logo
? pisz [krótkie zdanie]
krótkie zdanie
? pisz [bardzo [złożona [lista]]]
bardzo [złożona [lista]]

Gdy dana jest postać - zostanie wydrukowana informacja {postaćN}, gdzie N to liczba faz.
piszDo plik
piszDo "Schowek
piszDo []
         P Skierowuje strumień wyjściowy do danego pliku, na skutek czego polecenia pisz, pokaż oraz wpisz będą pisały dane do tego pliku zamiast na ekranie tekstowym. Jeśli nie istnieje plik o danej nazwie, piszDo go utworzy. Jeśli istnieje, jego dotychczasowa treść zostanie utracona.

Jeśli w nazwie pliku nie ma ścieżki dostępu lub jest tylko częściowa, zostanie użyty podfolder Teksty folderu macierzystego (wynik wyrażenia (ścieżka "teksty)). Jeśli w nazwie pliku nie ma rozszerzenia, piszDo doda .TXT.

Wszystkie polecenia wpisywane za pomocą klawiatury i wszystkie komunikaty o błędach będą nadal drukowane na ekranie tekstowym. Komunikatów o błędach nie można skierować do pliku.

Skutkiem próby wypisania postaci, będzie zapisanie w pliku tekstu {postaćN} gdzie N to liczba faz danej postaci.

Standardowy strumień wyjściowy można również skierować bezpośrednio do Schowka Windows. Stąd można będzie wkleić zapisane w nim dane do innej aplikacji Windows lub odczytać ponownie w Logo za pomocą czytajZ i innych związanych z nim poleceń.

Po napisaniu polecenia piszDo [], strumień wyjściowy jest skierowany znowu na ekran tekstowy.
piszWiersz cokolwiek
(piszWiersz cokolwiek cokolwiek … ) 		P Wypisuje dane na ekranie tekstowym, lub zapisuje je w pliku wyjściowym, jeśli strumień wyjściowy został skierowany do pliku za pomocą polecenia piszDo. Polecenie piszWiersz (w odróżnieniu od pisz), wypisuje każdą daną w osobnym wierszu.
Jeśli jakaś dana jest listą, to każdy jej element, który jest również listą, zostanie wydrukowany bez zewnętrznych nawiasów w osobnym wierszu:

? piszWiersz "hoooo
hoooo
? piszWiersz [moje cudowne Logo]
moje
cudowne
Logo
? piszWiersz
[[pierwsza podlista] [i druga podlista]]
pierwsza podlista
i druga podlista
piszWPolu pole tekstowe
piszWPolu [] 		P Daną musi być nazwa pola tekstowego lub pusta lista.

To polecenie skierowuje strumień wyjściowy do danego pola tekstowego. Odtąd polecenia pisz, pokaż oraz wpisz będą pisały dane w tym polu zamiast na ekranie tekstowym. Jeśli nie istnieje pole tekstowe o danej nazwie, wystąpi błąd.

Wszystkie polecenia wpisywane za pomocą klawiatury i wszystkie komunikaty o błędach będą nadal drukowane na ekranie tekstowym. Komunikatów o błędach nie można skierować do pola tekstowego.

Skutkiem próby wypisania postaci, będzie zapisanie w polu tekstu {postaćN} gdzie N to liczba faz danej postaci.

Po napisaniu polecenia piszWPolu [], strumień wyjściowy zostanie skierowany znowu na ekran tekstowy.
pokaż cokolwiek
(pokaż cokolwiek cokolwiek … ) 		P Wypisuje dane na ekranie tekstowym, lub zapisuje je w pliku wyjściowym, jeśli strumień wyjściowy został skierowany do pliku za pomocą polecenia piszDo. Jeśli jest wiele danych, zostaną oddzielone odstępami. Po wydrukowaniu danych pokaż przenosi kursor na początek kolejnego wiersza.

Zauważ, że pokaż drukuje wszystkie kwadratowe nawiasy (porównaj z pisz oraz wpisz).
ustalDruk | P | Otwiera dialog Ustawienia drukarki.
wpisz cokolwiek
(wpisz cokolwiek cokolwiek … ) 		P Wypisuje dane na ekranie tekstowym, lub zapisuje je w pliku wyjściowym, jeśli strumień wyjściowy został skierowany do pliku za pomocą polecenia piszDo. Drukowane dane nie są oddzielane spacjami, a kursor na końcu nie przechodzi do następnego wiersza (porównaj wpisz z pokaż i pisz).

Jeśli dana jest lista, wpisz usuwa zewnętrzne nawiasy kwadratowe. Jeśli dana jest postać, zostanie wydrukowany napis {postaćN}, gdzie N to liczba faz danej postaci.

Przykłady:

? pisz "super
super
? (pisz "super "Logo)
super Logo
? pisz [krótkie zdanie]
krótkie zdanie
? pokaż [krótkie zdanie]
[krótkie zdanie]
? pisz [bardzo [skomplikowana [lista]]]
bardzo [skomplikowana [lista]]
? pokaż [bardzo [skomplikowana [lista]]]
[bardzo [skomplikowana [lista]]]
? (wpisz "kto "ty "jesteś?)
ktotyjesteś?(wpisz "to "ja)
toja


Dialogi i komunikaty

Opisanej poniżej funkcji można używać do wyświetlania komunikatów i ostrzeżeń oraz zadawania pytań.

Procedura Typ Opis
dialog tekst1
(dialog tekst1 tytuł )
(dialog tekst1 tytuł liczba )

F
gdzie tytuł to dowolny tekst.

Funkcja otwiera dialog zawierający dany tekst (pytanie, ostrzeżenie, komunikat…), tytuł, ikonę i przyciski. Wynikiem jest liczba całkowita, określona przez sposób zamknięcia dialogu.

Jeśli jest jedna dana, otworzy się dialog bez tytułu, z ikoną w postaci pytajnika, danym tekstem1 i dwoma przyciskami Tak i Nie. Jeśli są dwie dane, dialog ma tytuł.

Jeśli są trzy dane, liczba określa, jakie przyciski i jaka ikona pojawią się w dialogu. Dana liczba musi być sumą dwóch składników. Jeden - z zakresu od 0 do 5  określa przyciski, drugi określa Ikonę:

Przyciski

0 przycisk OK

1 przyciski OK i Anuluj

2 przyciski Zaniechaj, Ponów i Ignoruj

3 przyciski Tak, Nie i Anuluj

4 przyciski Tak i Nie

5 przyciski Ponów i Anuluj

Ikony

16 Znak błędu

32 Pytajnik

48 Wykrzyknik

64 Znak - informacji

Na przykład, by otrzymać kombinację znaku informacji oraz przycisków Tak, Nie i Anuluj, musimy użyć sumy 64 plus 3, czyli 67.

Zamknięcie dialogu kliknięciem przycisku daje, następujące wyniki:

OK daje wynik - 1,

Anuluj daje wynik - 2,

Zaniechaj daje wynik - 3,

Ponów daje wynik - 4,

Ignoruj daje wynik - 5,

Tak daje wynik - 6,

Nie daje wynik - 7.


Używanie myszy

pozMyszy
stanMyszy
ustalPozMyszy
ustalWskaźnikMyszy; uwsm

W projektach można wykorzystywać informacje pochodzące od myszy - dotyczące jej pozycji, stanu i kursora. Do tego celu używamy następujących procedur:

Procedura | Typ | Opis
pozMyszy | F | Ta funkcja jest opisana w rozdziale o systemach współrzędnych.
stanMyszy F Wynikiem jest trzyelementowa lista - [Przyciski Klawisze [X Y]],

gdzie Przyciski to liczba całkowita od 0 do 7, oznaczająca:

0 - żaden przycisk myszy nie został naciśnięty
1 - naciśnięty tylko lewy przycisk myszy
2 - naciśnięty tylko prawy przycisk myszy
3 - naciśnięte dwa przyciski - lewy i prawy
4 - naciśnięty tylko środkowy przycisk myszy,
5 - naciśnięte dwa przyciski - lewy i środkowy
6 - naciśnięte dwa przyciski - prawy i środkowy
7 - wszystkie trzy przyciski naciśnięte.

Klawisze to liczba całkowita od 0 do 3, oznaczająca:

0 - żaden klawisz specjalny nie został naciśnięty
1 - tylko klawisz Ctrl naciśnięty
2 - tylko klawisz Shift naciśnięty
3 - oba klawisze Ctrl i Shift naciśnięte

[X Y] określają aktualne współrzędne X i Y wskaźnika myszy (mogą nawet wykraczać poza stronę lub okno główne, ale są liczone względem początku miejsca aktualnego adresata procedury, a więc początku strony lub planszy).
ustalPozMyszy | P | Ta procedura jest opisana w rozdziale o systemach współrzędnych.
ustalWskaźnikMyszy liczba
ustalWskaźnikMyszy plik
ustalWskaźnikMyszy postać
ustalWskaźnikMyszy kod-rysunku
ustalWskaźnikMyszy []
Skrót:
uwsm 		P Zastępuje aktualną postać wskaźnika myszy alternatywnym standardowym wskaźnikiem lub postacią.

Jeśli dana jest:

  • liczba całkowita od 0 do 36 (włącznie, ale z wyłączeniem 4 i 15), aktualna postać wskaźnika zostanie zastąpiona przez standardowy wskaźnik systemu Windows lub specjalnym wskaźnikiem Logo,
  • nazwa pliku ANI lub pliku CUR, aktualna postać wskaźnika zostanie zastąpiona przez odpowiedni kursor lub animowany kursor. Jeśli dana jest nazwą innego akceptowanego pliku graficznego, odpowiednio przekonwertowana treść pliku zostanie użyta jako nowy wskaźnik zgodnie z poniższym opisem dotyczącym przypadku, gdy dana jest postać,
  • postać jest przekształcana na wskaźnik w następujący sposób: zostanie użyta tylko pierwsza klatka pierwszej fazy danej postaci, rozmiar klatki zostanie dopasowany do rozmiaru kursora (ustalonego w Windows - zwykle 32 x 32 punkty). Jeśli opcja "kolKursor ma wartość 1 (jest to wartość domyślna), wszystkie kolory zostaną zachowane. Jeśli za pomocą ustalOpcje zmienisz wartość kolKursor na 0, to ustalWskaźnikMyszy zmieni wszystkie kolory na czerń i biel,
  • kod rysunku, jest przekształcany na rysunek, a jego rozmiar dopasowywany do standardu według opisanej wyżej reguły.

Do przywrócenia oryginalnego wskaźnika myszy można użyć: ustalWskaźnikMyszy [] albo ustalWskaźnikMyszy 0.


Multimedia i komunikacja głosowa

Logomocja zapewnia różne możliwości komunikacji multimedialnej, w szczególności głosowej. Bezpośrednio w środowisku można utworzyć:

  • przycisk dźwiękowy (w tym celu należy kliknąć przycisk Multimedia na pasku narzędzi i wybrać polecenie Dźwięk),
  • przycisk muzyczny (w tym celu należy kliknąć przycisk Multimedia pasku narzędzi i wybrać polecenie Muzyka MID),
  • odtwarzacz wideoklipów (w tym celu należy kliknąć przycisk Multimedia pasku narzędzi i wybrać polecenie Wideoklip).

Przyciski medialne i odtwarzacze można także tworzyć posługując się procedurami języka Logo. Za pomocą opisanych dalej procedur można odtwarzać muzykę dźwięki i wideoklipy.

Zobacz:


Multimedia

grajDźwięk
graj
grajPlik
instrument
MCI
nuta
pauza
włączWideo
zamknijWideo

W Logo można przetwarzać nie tylko teksty i grafikę, ale również korzystać z urządzeń multimedialnych za pośrednictwem procedur MCI - odtwarzać wideoklipy, melodie (za pomocą poleceń graj oraz nuta) oraz pliki dźwiękowe WAV (za pomocą polecenia grajDźwięk).

Procedura Typ Opis
graj lista
(graj lista1 lista2 …) 		P Powoduje odtworzenie melodii danej (lub danych, o ile w wywołaniu podano więcej parametrów) w postaci listy.
Dana lista może zawierać litery c, d, e, f, g, a, b (lub h) symbolizujące nuty oraz dodatkowe symbole mające następujące znaczenie:
  • przedrostek nuty (liczba 1, 2, 4, 8, 16, 32 albo 64) określająca czas odtwarzania nuty. Na przykład 1c przedstawia całą nutę c, 2d przedstawia półnutę d, 4f oznacza ćwiartkę f, itd.
  • przyrostek nuty, # występujący po nucie oznacza krzyżyk (podwyższa o pół tonu), b występujące po nucie oznacza bemol (obniża o pół tonu), . (kropka) oznacza wydłużenie czasu odtwarzania nuty o połowę. Na przykład: c#, 2db, 4e. itd.
  • litera P samodzielnie lub z przedrostkiem (1P, 2P, 4P, 8P, 16P, 32P lub 64P) wprowadza pauzę o długości standardowej lub określonej przez przedrostek .
  • litera T z przyrostkiem w postaci liczby całkowitej określa tempo w jednostkach - liczba ćwierćnut na minutę. Domyślnym ustawieniem jest T120.
  • litera O z przyrostkiem w postaci liczby całkowitej - od 0 do 6 włącznie - określa oktawę. Domyślnym ustawieniem jest O3. Symbol O# umieszczony na liście, podnosi wszystkie występujące po nim nuty o jedną oktawę, symbol Ob przeciwnie - obniża o jedną oktawę.
  • litera L z przyrostkiem w postaci liczby (1, 2, 4, 8, 16, 32 albo 64) ustala standardowy czas odtwarzania dla wszystkich kolejnych nut. Jeśli nuta jest poprzedzona przedrostkiem, to standardowe ustawienie się nie liczy. Domyślnym ustawieniem jest L4.
  • litera V z przyrostkiem w postaci liczby całkowitej od 0 do 127 określa szybkość (a więc dynamikę gry).
  • litera I z przyrostkiem w postaci liczby całkowitej od 0 do 127 określa instrument, na którym zostanie zagrana melodia. Domyślną wartością jest 0 - fortepian. Inne interesujące instrumenty to: I19 - organy kościelne, I27 - gitara elektryczna, I32 - bas akustyczny, I40 - skrzypce, I73 - flet.
  • litera R przywraca wszystkie domyślne ustawienia L, T, I, V i O, nadając im początkowe wartości: O3, I0, V127, T120 oraz L4.

Ustawienia L, T, O, V oraz I są obowiązujące dla kolejnych wywołań graj do momentu nadania im nowych wartości lub użycia R.

Jeśli użyjemy polecenia graj w kilku równoległych procesach, to odpowiednie melodie będą grane równolegle (jednak liczba granych równolegle melodii jest ograniczona do 16 - liczby kanałów MIDI). Każdy proces będzie miał własne ustawienia: oktawy, instrumentu, czasu odtwarzania nut itd.
grajDźwięk plik
grajDźwięk [ plik plik …]
(grajDźwięk plik plik … )
(grajDźwięk plik plik … [])
Skrót:
grajd 		P Odtwarza dany plik dźwiękowy typu WAV. Jeśli jest tylko jedna dana, natychmiast po rozpoczęciu odtwarzania pliku będą wykonywane kolejne polecenia. Jeśli Logo napotka kolejne polecenie grajDźwięk przerywa odtwarzanie i wykonuje nowe grajDźwięk.

Jeśli chcemy by dokończyć pierwszą melodię/dźwięk i dopiero potem zacząć drugą, możemy napisać polecenie z wieloma danymi w notacji nawiasowej - (grajDźwięk "X "Y "Z … ). W takim przypadku najpierw zostanie odtworzony plik X, (inne polecenia nie będą wykonywane), potem Y itd. Dopiero po rozpoczęciu odtwarzania ostatniego pliku WAV, Logo zacznie wykonywanie kolejnych poleceń po grajDźwięk.

Polecenie (grajDźwięk "X "Y "Z … ) jest równoważne z grajDźwięk [X Y Z …].

Jeśli chcemy, by Logo zaczęło wykonywać polecenia po grajDźwięk dopiero po zakończeniu odtwarzania ostatniego pliku dźwiękowego, musimy dodać na końcu pustą daną do odegrania.
Na przykład:

? (grajDźwięk "X "Y "Z " )
lub
? grajDźwięk [X Y Z []]
grajPlik plik-multimedialny
Skrót:
grajp 		P Dany plik musi być akceptowalnym plikiem multimedialnym.

Polecenie przekazuje plik do interfejsu MCI systemu Windows do odtworzenia.

Jeśli polecenie grajPlik wystąpi w procesie wywołanym z wiersza poleceń, Logo przerwie wykonywanie kolejnych poleceń na czas odtwarzania danego pliku.

Jeśli chcemy, by Logo natychmiast po rozpoczęciu odtwarzania pliku wykonywało kolejne polecenia (równocześnie z odtwarzaniem pliku), musimy napisać:

? zapuść [grajPlik "plik]
lub
? bezKońca [grajPlik "plik]

W drugim przypadku odtwarzanie będzie kontynuowane dopóki proces nie zostanie zatrzymany.
instrument liczba
instrument słowo 		P Ustala instrument dla kolejnych poleceń graj oraz nuta. Dana musi być liczbą całkowitą z zakresu od 0 do 127 lub nazwą instrumentu, np.: pianino, organy, harfa, wibrafon, gitara, skrzypce lub klarnet.
MCI lista-mci
(MCI lista-mci lista-P ) 		P
lub
F 		MCI oznacza Media Control Interface (interfejs sterowania mediami).

Ta procedura zależnie od treści danej listy-mci może być funkcją lub poleceniem. Ta dana (musi to być lista słów) jest przekazywana do interfejsu MCI systemu Windows, który interpretuje ją jako polecenie MCI. Język poleceń MCI umożliwia sterowanie urządzeniami multimedialnymi. Jego opis można znaleźć w podręczniku firmy Microsoft (Microsoft's Multimedia Manual) i innych książkach na temat pracy z multimediami w Windows.

Opcjonalna druga dana jest listą poleceń do wykonania po zakończeniu procedur MCI. To dotyczy wyłącznie przypadku, gdy lista-mci zawiera opcję notify.
nuta kod czas
nuta [kod kod … ] czas 		P Gra nutę na instrumencie wybranym ostatnio za pomocą polecenia instrument albo graj.

Kod jest liczbą całkowitą z zakresu od 0 do 127 włącznie, oznaczającą numer nuty MIDI.

Liczba 60 oznacza środkowe C.
Czas grania nuty jest określony w milisekundach. Jeśli pierwsza dana jest listą kodów, nuta gra akord.
pauza czas P Przerywa sekwencję odtwarzania nut na dany czas określony w milisekundach.

? instrument "gitara
? bezKońca [nuta 64 100 pauza 600
    nuta 68 100 pauza 300
    nuta 78 50 pauza 300]
włączWideo słowo1 słowo2 lista
F Słowo2 nie może być puste.

Umożliwia odtwarzanie pliku wideo przez interfejs MCI. Alternatywnym rozwiązaniem jest utworzenie odtwarzacza.
Powoduje utworzenie i wykonanie odpowiedniego polecenia MCI. Jest równoważne z poleceniem MCI (zd "OPEN :słowo1 "ALIAS :słowo2). To polecenie - wykonane z powodzeniem - jest wynikiem funkcji włączWideo.
Jeśli lista3 nie jest pusta, otwiera się nowe okno, zgodnie z ustaleniami określonymi na tej liście.
Lista3 jest trójelementowa: [styl  tekst  lista], przy czym:

styl jest słowem, które opisuje styl okna. Może być jednym z:

  • child - okno będzie zanurzone w oknie głównym, bez własnego paska tytułu i krawędzi,
  • childBorder - okno będzie zanurzone w oknie głównym i jego krawędzie będą widoczne,
  • childCap - okno będzie zanurzone w oknie głównym i jego krawędzie oraz pasek tytułu będą widoczne, ponadto będzie można je przeciągać myszą,
  • overlap - okno będzie przesłaniało część okna głównego i jego krawędzie oraz pasek tytułu będą widoczne, ponadto będzie można je przeciągać myszą oraz zamykać skrótem klawiszowym Alt+F4,
  • oversize - okno będzie przesłaniane przez okno główne i jego krawędzie oraz pasek tytułu będą widoczne, ponadto będzie można je przeciągać myszą oraz zamykać skrótem klawiszowym Alt+F4,
  • overall - okno będzie przesłaniane przez okno główne i jego krawędzie oraz pasek tytułu z trzema standardowymi przyciskami po prawej stronie będą widoczne, ponadto będzie można będzie zmieniać jego rozmiar i przeciągać je myszą oraz zamykać skrótem klawiszowym Alt+F4.

Możemy też używać innych wartości styl, nie wymienionych powyżej, ale muszą być one zgodne z opisanymi w podręczniku Windows SDK. Zamykanie okna powoduje też zamknięcie odpowiadającego mu pliku multimedialnego.

tekst określa tytuł okna.

lista określa pozycję i rozmiar okna. Może być listą pustą [] lub prostokątem. Jeśli nie zostanie określona, okno będzie umieszczone w punkcie [0 0] i zminimalizowane.

? ignoruj włączWideo "|wideo37.mpg| "mójSamochód [child [] [100 100]]

Po użyciu włączWideo, plik wideo może być odtwarzany, przewijany itd. za pomocą poleceń MCI skierowanych do utworzonego aliasu (podanego tekstu). W celu zamknięcia pliku należy używać polecenia MCI close, gdyż w przeciwnym przypadku okno może nie zostać wyczyszczone. (wówczas należy użyć zamknijWideo).
zamknijWideo słowo P Zamyka okno wideo i związany z nim plik.

Dane słowo to alias określony przez drugą daną odpowiedniej funkcji włączWideo. Faktycznie, dane słowo polecenia zamknijWideo jest nazwą okna wideo (nie mylić z tytułem).


Komunikacja głosowa

głosy
komendyGłosowe
powiedz
ustalGłos
ustalGłosy
ustalKomendyGłosowe

Jeśli w komputerze mamy zainstalowany system rozpoznawania mowy, możemy skorzystać z niego jako:

  • Wyjścia dźwięku (tryb Text-to-Speech): używając polecenia powiedz z jednym parametrem będącym tekstem, który będzie wypowiedziany przez komputer. Ponadto możemy w menu wybrać Opcje / Ustaw głos komputera (lub zamiennie użyć polecenia języka ustalGłos) dla wybrania barwy głosu określonej odpowiednim imieniem.
  • Źródła dźwięku: możemy określić menu głosowe okna głównego lub każdej ze stron. Na aktywnej stronie są rozpoznawane dźwięki opisane zarówno dla tej strony, jak i dla okna głównego. Jeśli system rozpoznawania mowy rozpozna wypowiedzianą do mikrofonu (podłączonego do komputera) frazę, rozpoczną wykonywać się przewidziane w menu głosowym czynności. W tym celu zostanie zainicjowany niezależny równoległy proces zdarzenia, w którym aktywnym obiektem będzie bieżąca wartość ktoNaStronie. Zostanie wywołane zdarzenie gdyKomendaGłosowa okna głównego lub aktywnej strony - zobacz w OknoGłówne: zdarzenia i Strona: zdarzenia.

Dla aktywnej strony możemy określić np.:

? ustalKomendyGłosowe [lewo [lw 90] prawo [pw 90] naprzód [np 20 + losowa 50] [gruby pisak] [ugp 5] [cienki pisak] [ugp 1]]

Jeśli nie chcemy korzystać z systemu rozpoznawania mowy, to wystarczy, że zmienimy wartość ustawienia czynnyGłos okna głównego na fałsz, lub w menu pozostawimy niezaznaczoną opcję Opcje / Głosy.

Procedura | Typ | Opis
głosy
ustalGłosy menu głosów 		F
P 		Są to dwie procedury umożliwiające dostęp do ustawienia głosy okna głównego. Należy pamiętać, że sprawdzić lub zmienić wartość tego ustawienia można także w dialogu Zmień mnie okna głównego.

Domyślną wartością ustawienia głosy jest [] - brak reakcji na wypowiadane frazy.
komendyGłosowe
ustalKomendyGłosowe menu głosów 		F
P 		Są to dwie procedury umożliwiające dostęp do ustawienia komendyGłosowe strony. Każda strona może mieć własne menu głosów. Należy pamiętać, że sprawdzić lub zmienić wartość tego ustawienia można także w dialogu Zmień mnie dla danej strony.

Domyślną wartością ustawienia komendyGłosowe jest [] - brak reakcji na wypowiadane frazy.
powiedz tekst | P | Wypowiada tekst, używając bieżących ustawień. Barwę głosu można zmieniać poleceniem ustalGłos lub w menu Opcje / Ustaw głos komputera.
ustalGłos głos | P | Określa barwę głosu używaną w poleceniu powiedz. Parametr głos ma wartości zależne od zastosowanego systemu Text-To-Speech. Najczęściej są to imiona. Prościej jest ustalić barwę głosu za pomocą menu Opcje / Ustaw głos komputera - wówczas wystarczy wybrać jedną z wyświetlonych możliwości.


Różne procedury pierwotne

aktywnySpecPrzycisk?; aktsp?
czas
czasSłowo; czasS
data
dataSłowo; dataS
jld
kolory
naRGB
opcje; logo
specMenu
stoper
systemMetryczny
ustalOpcje; ustalLogo
wykonajProgram; wykProg
zerujStoper

W tej części opisujemy procedury pierwotne, które:

  • podają daty, czas i wskazania stoperów,
  • przekształcają kolory na RGB i pokazują listę kolorów Logomocji,
  • dostarczają losowe dane dla innych procedur,
  • wyświetlają specjalne menu,
  • podają, który spec-przycisk jest aktualnie wciśnięty,
  • podają informacje o aktualnych ustawieniach Windows,
  • uruchamiają inne aplikacje,
  • ustalają specjalne opcje itd.
Procedura | Typ | Opis
aktywnySpecPrzycisk?
Skrót:
aktsp? 		F Ma wartość fałsz, jeśli w całym środowisku Imagine żaden SpecPrzycisk nie jest wciśnięty. Wartość prawda odpowiada sytuacji, gdy wciśnięty jest dokładnie jeden SpecPrzycisk. O tym, który ze SpecPrzycisków jest wciśnięty dowiemy się używając aliasu aktywnySpecPrzycisk.
czas F Wynikiem jest aktualny czas odczytany z zegara komputera, reprezentowany w postaci listy [godzina minuta sekunda tysiączne_części_sekundy].

Standardowo czwarta liczba reprezentuje tysiączne części sekundy, ale ten domyślny wybór jednostek można zmienić np. na dziesiętne części sekundy - poleceniem ustalOpcje [tyk 10] albo setne części sekundy - poleceniem ustalOpcje [tyk 100]

czasSłowo
Skrót:
czasS 		F Wynikiem jest słowo, które jest zapisem aktualnego czasu w standardowym formacie Windows:

? pokaż czasSłowo
7:50:36

Funkcja może mieć dodatkowo jedną lub dwie dane określające format wyniku. Na przykład:

? pisz (czasSłowo [hhhh'h':mm'm':ss's'])
07h:55m:24s
? pisz (czasSłowo [h'h':mm'm':ss's'])
7h:56m:07s
data | F | Wynikiem jest data w postaci listy [dzień miesiąc rok dzień_tygodnia], gdzie dzień_tygodnia to liczba od 0 (niedziela) do 6 (sobota).
dataSłowo
Skrót:
dataS
 F Wynikiem jest słowo będące zapisem aktualnej daty w formacie ustalonym w Windows:

? pisz dataSłowo
24 sierpień 2002
? pokaż słowo? dataSłowo
prawda
jld F Nazwa funkcji powstała od “jak los da”.

Wynikiem jest słowo jld, które może być daną wielu poleceń (na przykład naPoz, ustalKolPis itd.) jako substytut losowej wartości. Na przykład, ustalGrubość jld jest równoważne z ustalGrubość 1 + losowa 20; prawo jld jest równoważne z prawo1 + losowa 90 itd.
Zakres losowości, którą wyraża jld zawsze zależy od kontekstu - polecenia, w którym zostało użyte. Domyślne wartości można przedefiniować tworząc odpowiednie wspólne zmienne klasy Baza, jak np. zlKierunku, zlPoz, zlKoloru itd., zobacz Wspólne zmienne definiujące losowe dane.
kolory F Wynikiem jest lista 18 podstawowych kolorów Logomocji:

? pokaż kolory
[biały czarny karminowy różowy fioletowy ciemnoniebieski niebieski jasnoniebieski błękitny ciemnozielony zielony oliwkowy żółty pomarańczowy brązowy jasnoczerwony czerwony szary]
naRGB kolor F Wynikiem jest kod RGB danego koloru:

? pokaż naRGB "jasnoniebieski8
[104 208 248]
? pokaż naRGB "czarny
[0 0 0]
opcje słowo
Również:
Logo 		F gdzie słowo jest jednym z: stronaDomowa, stronaPlugin, kodyHtml, oktawy, błąd, dźwięk, fKlawisze, komendy, kolKursor, wersja, tik lub tyk.

Wynikiem jest bieżąca wartość opcji - ustawienia o nazwie słowo. Znaczenie poszczególnych opcji można znaleźć w opisie polecenia ustalOpcje.

? pokaż logo "błąd
0
? pokaż logo "komendy
[lewo ładpos naprzód Prawo ustalCzcionkę ustalGrubość ustalKierunek ustalKolmal ustalKolpis ustalKoltła ustalPostać ustalWskaźnikMyszy ustalWzórmal ustalWzórpis wpiszTekst wstecz]
specMenu menu punkt F Wyświetla menu określone przez pierwszą daną z lewym górnym rogiem zaczepionym w danym punkcie - określonym za pomocą współrzędnych-bezwzględnych.
Wynikiem jest element menu (wybrany za pomocą kliknięcia lub naciśnięcia Enter). Musi to być lista poleceń lub pojedyncze słowo. Jeśli zamkniemy menu naciśnięciem Escape, wynikiem będzie [].
Funkcja specMenu nie realizuje wybranych poleceń.
stoper
(stoper słowo ) 		F Jeśli nie ma danych, wynikiem jest aktualny stan podstawowego stopera 0.

? pokaż stoper
2922717
? pokaż stoper
2940458

Stan stopera - to liczba tysiącznych części sekundy, jakie upłynęły od momentu utworzenia stopera lub jego wyzerowania poleceniem zerujStoper. Jeśli chcesz, by wszystkie stopery odmierzały czas w dziesiątych albo setnych częściach sekundy, użyj polecenia ustalOpcje [tyk … ].

Podstawowy stoper 0 jest uruchamiany w momencie otworzenia Logo. Możesz go (lub inny stoper) wyzerować poleceniem zerujStoper.

Jeśli dane jest słowo i stoper o takiej nazwie istnieje, wynikiem jest aktualny stan tego stopera. Jeżeli nie istnieje - zostanie utworzony i otrzyma wartość początkową 0. Wyrażenie stoper jest równoważne z (stoper 0).

? pokaż (stoper "czas_akcji)
0
? pokaż (czas_akcji)
1222
systemMetryczny słowo
systemMetryczny liczba 		F Umożliwia zaawansowanym programistom dostęp do funkcji GetSystemMetrics systemu Windows, która podaje parametry różnych elementów środowiska Windows istotne przy projektowaniu ekranów. Funkcja systemMetryczny dodatkowo podaje kilka ważnych parametrów występujących tylko w Logo.

Akceptowane dane i odpowiednie wyniki:

0 - szerokość ekranu,

1 - wysokość ekranu,

2 - szerokość ikony strzałki na pionowym pasku przewijania,

3 - wysokość ikony strzałki na poziomym pasku przewijania,

4 - wysokość tytułu okna (to jest wysokość tytułu plus wysokość ramki okna, której nie można zmieniać),

6 - wysokość ramki okna, której nie można zmieniać,

7 - szerokość ramki typowego okna dialogowego,

8 - wysokość ramki typowego okna dialogowego,

9 - wysokość pola przewijania na pionowym pasku,

10 - szerokość suwadła poziomym pasku przewijania,

11 - szerokość ikon,

12 - wysokość ikon,

13 - szerokość kursora,

14 - wysokość kursora,

15 - wysokość pojedynczego wiersza na pasku menu,

17 - wysokość ekranu minus wysokość paska tytułu),

18 - wysokość okna Kanji,

19 - nie-zero, jeśli jest zainstalowana mysz,

20 - wysokość ikony strzałki na pionowym pasku przewijania,

21 - szerokość ikony strzałki na poziomym pasku przewijania,

22 - nie-zero, jeśli jest system operacyjny jest w wersji testowej,

23 - nie-zero, jeśli przyciski myszy- lewy i prawy - zostały zamienione,

28 - minimalna szerokość okna,

29 - maksymalna szerokość okna,

30 - szerokość bitmapy na pasku tytułu,

31 - wysokość bitmapy na pasku tytułu,

32 - szerokość ramki okna, którą można regulować,

33 - wysokość ramki okna, którą można regulować,

34 - minimalna szerokość okna,

35 - minimalna wysokość okna,

36 - szerokość prostokąta wokół punktu pierwszego kliknięcia, wyznaczającego obszar, w którym trzeba kliknąć drugi raz, żeby system rozpoznał to jako podwójne kliknięcie,

37 - wysokość prostokąta wokół punktu pierwszego kliknięcia, wyznaczającego obszar, w którym trzeba kliknąć drugi raz, żeby system rozpoznał to jako podwójne kliknięcie,

38 - szerokość prostokąta używanego przez system do układania tapety ikon,

39 - wysokość prostokąta używanego przez system do rozmieszczenia ikon,

40 - wejście do biblioteki DLL Pen Windows,

42 - nie-zero jeśli aktualna wersja Windows reprezentuje znaki za pomocą dwóch bajtów; w przeciwnym przypadku - zero.

Dane dotyczące Logomocji i odpowiednie wyniki:

CXFONT - szerokość znaków czcionki systemowej, która jest używana do wypisywania tekstów na ekranie, w edytorze tekstowym oraz w oknie zadań (szerokość okna zadań jest wielokrotnością tej liczby).
CYFONT - wysokość znaków czcionki systemowej (wysokość okna zadań jest wielokrotnością tej liczby).
CYSPEEDBAR - wysokość paska szybkiego uruchamiania, daje wynik 0, jeśli pasek jest ukryty w momencie wywołania funkcji systemMetryczny.
ustalOpcje lista ustawień
Również:
ustalLogo 		P Zmienia niektóre opcje środowiska Imagine. W liście ustawień rozpoznawane są następujące ustawienia (opcje): stronaDomowa, stronaPlugin, kodyHtml, oktawy, błąd, dźwięk, fKlawisze, komendy, kolKursor, wersja, tik oraz tyk. Ich znaczenie jest następujące:
  • komendy - lista nazw poleceń pierwotnych; pokazuje się w oknie Lista poleceń (które jest wyświetlane po naciśnięciu F9) i służy jako pomoc dla użytkownika. Dobrze jest umieścić tam polecenia mające graficzne wybory danych.
  • błąd - 0 albo 1. Jeśli ma wartość 0, to komunikaty o błędach są wypisywane w oknie tekstowym. Jeśli ma wartość 1, to komunikaty o błędach pojawiają się w nowych oknach. Domyślną wartością jest 0.
  • kolKursor - 0 albo 1. Jeśli ma wartość 0, to kursor myszy jest czarno-biały, nawet gdy wcześniej określiliśmy jego wizerunek za pomocą polecenia ustalWskaźnikMyszy. Jeśli ma wartość 1, to są respektowane (wyświetlane) wszystkie kolory zdefiniowanego kursora myszy. Domyślną wartością jest 1.
  • tik - 10 albo 100 albo 1000. Określa jednostkę dla co, czekaj, nuta, po i stoper.
  • tyk - 10 albo 100 albo 1000. Określa jednostkę dla czasSłowo, jako odpowiednio: dziesiątą, setną lub tysiączną część sekundy. Domyślną wartością jest 1000.
  • fKlawisze - 0 albo 1 albo 12. Jeśli ma wartość 0, to nie działają klawisze funkcyjne (z wyjątkiem F12 - przerwania działania wykonywanych procesów), ani skróty klawiszowe (z wyjątkiem Ctrl+Break). Jeśli ma wartość 12, to nie działa także F12. Domyślna wartością jest 1 - wówczas działają wszystkie klawisze funkcyjne i skróty klawiszowe.
  • stronaDomowa - domyślnie http://logo.oeiizk.waw.pl - określa stronę WWW zawierającą materiały dotyczące Imagine.
  • stronaPlugin - domyślnie http://logo.oeiizk.waw.pl/plugin - miejsce w Internecie, z którego można ściągnąć plugin niezbędny do uruchamiania projektów zapisanych jako strony WWW.
  • kodyHtml - domyślnie Windows-1250 - określa, jaki sposób kodowania znaków zostanie wpisany w nagłówku pliku .htm tworzonego przy zapisie projektu jako strony WWW.
  • oktawy - domyślnie 4 - określa liczbę oktaw zakresu dostępnych tonów.
  • wersja - domyślnie polish - określa wersję językową tworzonych projektów.
  • dźwięk - 0 albo 1. Jeśli ma wartość 0, graj, grajDźwięk i grajPlik nie działają - projekt jest niemy. Domyślną wartością jest 1.
wykonajProgram słowo
(wykonajProgram słowo N)
Skrót:
wykprog
 F Uruchamia inną aplikację. Pierwsza dana - słowo musi być nazwą programu/aplikacji wraz z rozszerzeniem oraz kompletną ścieżką dostępu, jeśli odpowiedni program nie znajduje się na aktualnej ścieżce DOS. Opcjonalna druga dana - N musi być liczbą całkowitą z zakresu od 0 do 4, określającą stan okna programu:

0 - normalne okno, stanie się aktywne,
1 - okno zminimalizowane do ikony, stanie się aktywne,
2 - okno zmaksymalizowane, stanie się aktywne,
3 - normalne okno, aktywnym pozostanie okno środowiska Imagine,
4 - okno zminimalizowane do ikony, aktywnym pozostanie okno środowiska Imagine.

Wynikiem funkcji jest liczba całkowita. Liczba mniejsza niż 32 jest kodem błędu. Kody błędów mogą być następujące:

0 - za mało pamięci, bądź niepoprawna struktura pliku wywołanego programu,

2 - brak pliku,

3 - zła (nieistniejąca) ścieżka dostępu,

5 - brak uprawnień użytkownika do uruchomienia programu (występuje w sieciach),

6 - biblioteka wymaga oddzielnych segmentów danych dla każdego procesu,

8 - za mało pamięci do uruchomienia programu,

10 - nieodpowiednia wersja Windows,

11 - niepoprawny plik wykonywalny - nie jest aplikacją Windows, bądź zawiera błędy,

12 - program jest przeznaczony dla innego systemu operacyjnego, niż zainstalowany w komputerze,

13 - program pracujący pod kontrolą MS-DOS 4.0,

14 - nieznany format pliku wykonywalnego,

15 - próba załadowania programu w trybie rzeczywistym (typowe dla aplikacji działających w starszych wersjach Windows),

16 - próba uruchomienia aplikacji, która już działa, a zawiera fragmenty nie mające atrybutu “tylko do odczytu”,

19 - próba załadowania pliku exe, który jest spakowany. Przed załadowaniem plik musi być rozpakowany.

20 - niepoprawna zawartość biblioteki DLL,

21 - aplikacja wymaga rozszerzenia 32-bitowego, które nie zostało znalezione.

Pamiętajmy, że niektóre aplikacje ignorują zmiany wyglądu swych okien, które usiłujemy zmienić funkcją wykonajProgram. Wygląda to tak, jakby dana opcja nie działała.

? ignoruj wykonajProgram "calc.exe
wywołuje kalkulator,
? pokaż wykonajProgram "command.com
wywołuje MS-DOS
? ignoruj wykonajProgram
    "|"C:\Program Files\Accessories\MSPaint.exe"
      "D:\Pictures\Clown.BMP"|

pokazuje sposób użycia długich nazw plików w Windows, z opisem pełnej ścieżki dostępu.
zerujStoper
(zerujStoper słowo )
Skrót:
zerst
 P Jeśli nie ma żadnych danych zerujStoper zeruje podstawowy stoper 0 nadając mu wartość początkową 0.

Jeśli dane jest słowo i stoper o takiej nazwie istnieje, zostanie wyzerowany. Jeżeli nie istnieje - zostanie utworzony i otrzyma wartość początkową 0.

zerujStoper jest równoważne z (zerujStoper 0).

? (zerujStoper "pierwszy)
? bezKońca [jeśli (stoper "pierwszy) > 500 [stopMnie] np 0.1]]


Otwieranie i zapisywanie projektów

ładProjekt
ładuj
zapisz

Podczas używania aplikacji możemy otwierać i zapisywać projekty. Są one zapisywane w plikach IMP, zwykle w folderze Projekty położonym w folderze macierzystym.

Zobacz:

Dodatkowe ustawienia zapisu projektu
Pliki tekstowe
Zawartość folderu macierzystego
Przeglądanie plików
Praca z folderami i plikami
Zapisywanie projektów dla WWW

W celu otwarcia projektu należy użyć jednej z następujących metod:

  • Wybrać opcję Otwórz projekt… z menu Plik. Wyświetli się wówczas okno dialogowe Otwórz projekt z zawartością folderu Projekty (lub folderu ścieżki ładowania, o ile wcześniej został otwarty plik IMP, który się w nim znajdował). Przycisk Opcje... służy do wyświetlenia okna Opcje otwierania projektu z dwiema opcjami:
    • Uruchom starter - jeśli włączona, to po otwarciu projektu będzie automatycznie uruchomione polecenie starter (o ile zostało zdefiniowane w tym projekcie), bez danych wejściowych. Domyślnie ta opcja jest włączona.
    • Czyść pamięć- jeśli włączona, to przed otwarciem projektu będą automatycznie skasowane wszystkie obiekty i procedury znajdujące się w pamięci. Domyślnie ta opcja jest włączona.
    Okno Otwórz projekt możemy otworzyć także poleceniem dialogOtwórzProjekt.
  • Wybrać opcję Otwórz pokaz... z menu Plik. Wyświetli się wówczas okno dialogowe Pokazy z ikonami wszystkich pokazów i podfolderów zawierających pokazy, znajdujących się w folderze Pokazy.
    Okno Otwórz pokaz… możemy otworzyć także poleceniem demoDialog.
  • Użyć polecenia ładProjekt z daną określającą nazwę otwieranego pliku projektu. Jeśli chcemy, aby przed otwarciem projektu były skasowane wszystkie obiekty i procedury, to należy wcześniej użyć polecenia usw.
  • Użyć polecenia ładuj z daną określającą nazwę pliku IMP. Bieżąca zawartość pamięci nie będzie usunięta i wczytywane obiekty będą dodane do już istniejących.

W celu zapisu projektu należy użyć jednej z następujących metod:

  • Użyć opcji Zapisz projekt z menu Plik. Bieżąca zawartość projektu będzie zapisana na dysku. Jeśli projekt nie był jeszcze zapisywany, to efekt wybrania opcji Zapisz projekt będzie taki sam, jak opcji Zapisz projekt jako... (patrz niżej). Opcje zapisu projektu będą identyczne, jak przy poprzednim zapisie.
  • Użyć opcji Zapisz projekt jako… z menu Plik. Wyświetli się wówczas okno dialogowe Zapisz projekt jako... z bieżącą zawartością folderu Projekty (lub folderu ścieżki ładowania o ile wcześniej został stamtąd otwarty bądź tam zapisany plik projektu .IMP). Przycisk Opcje... służy do wyświetlenia okna Opcje zapisu projektu z pięcioma opcjami:
    • Zawsze twórz kopię zapasową - jeśli włączona, to poprzednio zapisana wersja projektu nie będzie skasowana, ale rozszerzenie jej nazwy zostanie zmienione na .BAK. Domyślnie ta opcja jest wyłączona.
    • Zapisz jako plik tylko do odczytu - jeśli włączona, to zapisywany plik otrzyma atrybut tylko-do-odczytu. Domyślnie ta opcja jest wyłączona.
    • Zapisz strony z tłem - jeśli wyłączona, to obraz tła każdej ze stron nie będzie zapisany z projektem. Jeśli chcemy zmienić tę opcję tylko dla wybranej strony, np. s3, to możemy zdefiniować dla niej zmienną prywatną zapiszEkran o odpowiedniej wartości, np. s3'niechpr "zapiszEkran "fałsz. Domyślnie ta opcja jest włączona.
    • Zapisz plansze z tłem - jeśli wyłączona, to obraz tła każdej z plansz nie będzie zapisany z projektem. Jeśli chcemy zmienić tę opcję tylko dla wybranej planszy, np. p3, to możemy zdefiniować dla niej zmienną prywatną zapiszEkran o odpowiedniej wartości, np. p3'niechpr "zapiszEkran "fałsz. Domyślnie ta opcja jest włączona.
    • Zapisz obrazy w osobnym pliku - jeśli włączona, to zapisywany plik IMP będzie zawierał tylko tekstową część projektu, zaś elementy graficzne będą zapisane w odrębnym pliku .IMP.LGF. Domyślnie ta opcja jest wyłączona.
    Okno Zapisz projekt jako... możemy otworzyć także poleceniem dialogZapiszProjekt.
  • Użyć polecenia zapisz z daną określającą plik IMP.
Procedura Typ Opis
ładuj plik
ładuj "Schowek
(ładuj plik lista ustawień ) 		P Ładuje i otwiera zadany parametrem plik IMP lub plik tekstowy. Następnie wyświetla zawartość aktywnej strony, tworzy wszystkie obiekty, zmienne globalne, odtwarza ustawienia itp. dane zapamiętane w pliku plik (bez kasowania wcześniejszej zawartości pamięci). W przypadku konfliktu nazw dokonywana jest zmiana nazw ładowanych obiektów.

Możemy także ładować (wczytywać) obiekty, które zostały wcześniej zapamiętane w systemowym schowku Windows.

Jeśli polecenie będzie użyte z dwoma parametrami, to drugi z nich określa listę ustawień, która zmodyfikuje ustawienia wczytywanego obiektu. Zakłada się, że w takim przypadku plik zawiera opis tylko jednego obiektu. Na przykład:

? ładuj "plansza1 [przeciąganie prawda]

Ponadto lista ustawień może ustalać miejsce, w którym nowy obiekt będzie utworzony, np.:

? ładuj "plansza1 [mojeMiejsce s2 poz [20 10]]
ładProjekt plik P Ładuje projekt z pliku o nazwie będącej daną polecenia.

Przed załadowaniem czyści pamięć (tj. kasuje wszystkie obiekty z ich procedurami, obsługą zdarzeń itd., wszystkie zmienne globalne, wszystkie właściwości itd.). Następnie wczytuje plik projektu (zwykle plik IMP). Odtwarza w środowisku wszystkie obiekty, procedury i zmienne zapisane w pliku.

Jeśli we wczytanym projekcie jest zdefiniowane polecenie starter, to jest ono automatycznie wykonywane - w ten sposób można określić początkowe ustawienia, procesy itd.

Dana plik może mieć bardziej rozbudowaną postać: [plik [opcje]], gdzie lista [opcje] jest pusta lub zawiera jedno lub dwa ze słów: kasuj i starter. Pominięcie któregoś z tych słów spowoduje, że nie nastąpi automatyczne, odpowiednio: skasowanie pamięci przed wczytaniem pliku (wówczas, w przypadku konfliktu nazw wczytywanych obiektów, będą one zmienione), bądź uruchomienie polecenia starter po wczytaniu pliku.
zapisz plik
(zapisz plik [ob1 ob2 …])
zapisz "Schowek
(zapisz "Schowek [ob1 …])
         P Jeśli polecenie jest wywołane z jedną daną, to cała zawartość pamięci (wszystkie zdefiniowane obiekty i ich procedury, zdarzenia itd., wszystkie zmienne globalne i wszystkie właściwości itd.) jest zapisywana w pliku projektu .IMP.

Klasy pierwotne z ich zmiennymi, ani działające procesy nie są zapisywane. Ponadto odradza się zapisywania projektów, gdy są działające procesy zdefiniowane przez użytkownika.

Jeśli polecenie jest wywołane z dwiema danymi, to zapisywane są tylko obiekty, których nazwy występują na liście, będącej drugą daną. Lista ta może zawierać także nazwy zmiennych globalnych (ich wartości będą wówczas zapisane w pliku) poprzedzone dwukropkami (:), np. (zapisz "plik3237 [p1 pt29 :X :Y :Z]).

Dana plik może mieć bardziej rozbudowaną postać: [plik [opcje]], gdzie lista [opcje] jest pusta lub zawiera od jednego do pięciu ze słów, odpowiadających poszczególnym opcjom zapisu projektu:

kopia - tworzenie kopii zapasowej w pliku .BAK.

tylkoDoOdczytu - zapisywanie w pliku z atrybutem tylko-do-odczytu.

tłoStron - zapisywanie każdej strony wraz z jej obrazem tła.

tłoPlansz - zapisywanie każdej planszy wraz z jej obrazem tła.

ekstraPlik - zapisywanie elementów graficznych w oddzielnym pliku .LGF.

Użycie samej nazwy pliku jako pierwszej danej, odpowiada domyślnym ustawieniom [plik [tłoStron tłoPlansz]].

Zamiast danej plik możemy użyć słowa "Schowek i w ten sposób zapisać zawartość pamięci w standardowym Schowku Windows.


Dodatkowe ustawienia zapisu projektów

.nieZapisuj
.nieZapisujProc
.nieZapisujZdarzenia
.nieZapisujZmiennej
.nieZapisujZmiennych

Podczas zapisu i odczytu projektów możemy korzystać z wielu ustawień. Niektóre z tych ustawień są opisane w innych rozdziałach:

  • W oknie dialogowym Zapisz projekt mamy do dyspozycji przycisk Opcje, którego naciśnięcie otwiera dialog Opcje zapisu projektu - zobacz w Otwieranie i zapisywanie projektów.
  • Te same opcje mogą być użyte w pierwszej danej polecenia zapisz.
  • Klasa Baza ma dwie zmienne wspólne określające stopień automatycznej kompresji postaci i projektów podczas zapisu: poziomKompresji i bezKompresji.
  • W oknie dialogowym Otwórz projekt mamy do dyspozycji przycisk Opcje, którego naciśnięcie otwiera dialog Opcje otwierania projektu - zobacz w Otwieranie i zapisywanie projektów.
  • Te same opcje mogą być użyte w pierwszej danej polecenia ładProjekt.

Poza wymienionymi wyżej, istnieją jeszcze dodatkowe ustawienia .nieZapisuj - przeznaczone tylko dla zaawansowanych użytkowników, a pozwalające dokładniej określić sposób zapisu projektów. Są one tymczasowo pamiętane dla określonego obiektu, zdarzenia, zmiennej lub procedury adresata i nie są zapisywane wraz z projektem.

Ustawienia .nieZapisuj są kasowane przy każdej zmianie obiektu, zdarzenia, zmiennej lub procedury, których dotyczą.

Procedura | Typ | Opis
.nieZapisuj obiekt P Tymczasowo zapamiętuje, że obiekt będący daną polecenia nie będzie zapisywany podczas zapisu projektu do pliku IMP lub pliku tekstowego, np.:

? s1'.nieZapisuj "p1

spowoduje, że podczas zapisywania projektu plansza p1 nie będzie zapisana.
.nieZapisujProc słowo P Tymczasowo zapamiętuje, że zdefiniowana przez użytkownika w bieżącym adresacie procedura słowo (tj. o nazwie będącej daną polecenia) nie będzie zapisywana podczas zapisu projektu do pliku IMP lub pliku tekstowego, np.:

? ż1'.nieZapisujProc "MójRuchŻółwiemNr1
.nieZapisujZdarzenia słowo P Tymczasowo zapamiętuje, że zdefiniowana przez użytkownika w bieżącym adresacie reakcja na zdarzenie słowo (tj. o nazwie będącej daną polecenia) nie będzie zapisywana podczas zapisu projektu do pliku IMP lub pliku tekstowego, np.:

? nowaKlasa "Żółw "MójŻółw [pozX 100 zdarzenie'gdyKlik [np 10 pw 10]]
? MójŻółw'.nieZapisujZdarzenia "gdyKlik
.nieZapisujZmiennej słowo | P | Tymczasowo zapamiętuje, że zmienna obiektu bieżącego adresata, będąca parametrem wywołania, nie będzie zapisywana podczas zapisu projektu do pliku IMP lub pliku tekstowego.
.nieZapisujZmiennych | P | Tymczasowo zapamiętuje, że żadne zmienne obiektu będącego adresatem polecenia nie będą zapisywane podczas zapisu projektu do pliku IMP lub pliku tekstowego.


Pliki tekstwe

Pliki tekstowe

dopiszTekst
ładTekst
ładuj
zapiszTekst

Pliki tekstowe służą do zapisu danych. Możemy je tworzyć, edytować i wczytywać. Należy pamiętać, że jeśli zapiszemy do pliku tekstowego - poleceniem zapiszTekst - np. listę, a następnie wczytamy ją za pomocą polecenia ładTekst, to struktura listy nie będzie w pełni zachowana. Dokładniej: elementy listy będące listami utracą swe zewnętrzne nawiasy i zostaną zamienione na słowa.

Przykład:

? zapiszTekst "test29 [[a b c d] [[e f g]] h 6387644 |Jak się masz?|]
? przypisz "L ładTekst "test29
? pokaż :L
[a b c d [e f g] h 345432 Jak się masz?]
? pokaż długość :L
5
? pokaż pierw :L
a b c d
? pokaż słowo? pierw :L
prawda
? pokaż słowo? element 2 :L
prawda

Wszystkie poniższe procedury zapisują i odczytują pliki do/z podfolderu Teksty, a w przypadku jego braku - korzystają z folderu macierzystego. Nazwę wykorzystywanego folderu można zmienić za pomocą polecenia ustalŚcieżkę. Tworzone pliki, w przypadku braku określenia rozszerzenia nazwy, otrzymują rozszerzenie TXT.

Procedura Typ Opis
dopiszTekst plik tekst
P Prawie tak samo, jak zapiszTekst. Różnica polega na tym, że gdy plik o podanej nazwie istniał już wcześniej, to jego zawartość nie będzie skasowana, ale zapamiętywane dane zostaną dopisane na końcu tego pliku.
ładTekst plik
ładTekst "Schowek 		F Czyta plik tekstowy. Jej wynikiem jest lista reprezentująca zawartość pliku o nazwie będącej daną polecenia. Każdy wiersz pliku jest traktowany jako pojedyncze słowo, a wszystkie wiersze-słowa tworzą wynikową listę.

Daną polecenia może być nie tylko nazwa pliku tekstowego, ale także i systemowy Schowek Windows.
ładuj plik P Kolejne wiersze pliku tekstowego (o nazwie będącej daną polecenia) będą wczytywane i wykonywane, tak jakby były kolejnymi instrukcjami wpisywanymi w wierszu poleceń. Dokładniej: wczytywana jest sekwencja niepustych wierszy (tj. aż do znalezienia pustego wiersza bądź końca pliku) i tak utworzone polecenie jest wykonywane, a następnie opisana sytuacja powtarza się.

Uwaga: trzeba koniecznie podawać rozszerzenie nazwy pliku tekstowego (.TXT).
zapiszTekst plik tekst
zapiszTekst "Schowek tekst 		P Tworzy plik tekstowy o nazwie będącej jego pierwszą daną.

Druga dana określa zapisywaną zawartość.

Jeśli jest słowem, to do pliku będzie zapisany jeden wiersz.

Jeśli jest listą, to do pliku będą zapisane kolejne elementy tej listy, w oddzielnych wierszach, przy czym jeśli element zapisywanej listy okaże się także być listą, to będzie zapisany bez zewnętrznych nawiasów.

Przykład:

? zapiszTekst "test29
    [[a b c d]
     [[e f g]]
     h
     6387644
     |Jak się masz?|]

Plik test29.TXT będzie zawierał pięć wierszy:

a b c d
[e f g]
h
6387644
Jak się masz?

Jeśli wcześniej istniał już plik o takiej nazwie, to jego dotychczasowa zawartość będzie skasowana. Porównaj z poleceniem dopiszTekst.

Użycie słowa Schowek jako pierwszej danej polecenia spowoduje zapamiętanie danych nie w pliku tekstowym, ale w systemowym Schowku Windows.


Zawartość folderu macierzystego

Folder, w którym znajduje się plik wykonywalny IMAGINE.EXE jest nazywany folderem macierzystym. Zwykle jest to folder C:\Program Files\Logomocja. Zawiera on kilka podfolderów rozpoznawanych przez niektóre polecenia bądź funkcje i będących dla nich folderami domyślnymi. Ponadto użytkownik może samodzielnie rozbudować opisaną poniżej domyślną strukturę folderów.

Przykład:

? pokaż (ścieżka "Projekty)
C:\Program Files\Logomocja\Projekty\
? pokaż (ścieżka "WWW)
C:\Program Files\Logomocja\Projekty\WWW\

Polecenie ustalŚcieżkę służy do zmiany domyślnej ścieżki dostępu – zobacz w Praca z folderami i plikami. Ten rozdział wyjaśnia także związek otwierania projektów ze sposobem poszukiwania dodatkowych plików, grafik, dźwięków itd.

Folder | Zawartość
Media | Wszystkie akceptowane pliki odtwarzacza i pliki multimedialne, tj. audio, MIDI, MP3, MPEG, QuickTime, RealMedia, Video i Windows Media, w tym WAV, MID, RMI, AVI, MPG itd.
Obrazy | Wszystkie obrazy, w szczególności zapisane postaci, mapy bitowe i inne akceptowane pliki graficzne.
Pokazy | Wszystkie pokazy. Może zawierać podfoldery. Jego zawartość jest wyświetlana w oknie dialogowym Pokazy, przy czym wyświetlane są wówczas wszystkie pliki z tego folderu i te jego podfoldery, które zawierają co najmniej jeden pokaz.
Pomoc | Wszystkie pliki systemu pomocy.
Projekty | Wszystkie projekty zapisane w plikach .IMP.
Przyciski | Podfolder folderu Obrazy. Wszystkie pliki obrazów i postaci oraz inne pliki graficzne, które zostały utworzone w celu umożliwienia zmiany wizerunku przycisków.
Teksty | Dodatkowe pliki tekstowe, np. zapisane poleceniem zapiszTekst.
WWW | Podfolder folderu Projekty. Wszystkie pliki .HTM (i związane z nimi pliki IMP niezbędne dla poprawnego działania plugina), które zostały tam zapisane po wyborze opcji Zapisz jako WWW... z menu Plik bądź za pomocą polecenia pierwotnego zapiszWWW.


Przeglądanie plików

Procedura Typ Opis
otwórzDokument plik
otwórzDokument adres WWW
(otwórzDokument plik N) 		P Zostaje uruchomiona aplikacja systemu Windows, która jest skojarzona z typem (rozszerzeniem nazwy) pliku będącego daną polecenia. Następnie w tej aplikacji jest otwierany zadany plik. Przykładowo, dla plików .DOC tą aplikacją może być MS Word lub Wordpad.

Jeśli dana jest adresem WWW, to uruchamiana jest domyślna przeglądarka internetowa i w niej wyświetlana jest zadana strona.

Jeśli nie uda się otworzyć aplikacji lub dokumentu, pojawi się komunikat o błędzie.

Drugi, opcjonalny parametr, określa styl wyświetlanego okna. Możliwe są następujące wartości:

0 - okno aktywne, o domyślnych rozmiarach,

1 - okno aktywne, zminimalizowane do ikony,

2 - okno aktywne, zmaksymalizowane,

3 - okno nieaktywne, o domyślnych rozmiarach,

4 - okno nieaktywne, zminimalizowane do ikony.
przejrzyjDokument plik
przejrzyjDokument adres WWW
(przejrzyjDokument plik N)
Skrót:
przedok
 P Otwiera domyślna przeglądarkę internetową i wyświetla zawartość pliku będącego daną polecenia, bądź zawartość ściągniętą spod zadanego adresu WWW. Typ dokumentu jest pomijany (porównaj z poleceniem otwórzDokument). Jeśli nie uda się otworzyć żądanego dokumentu, pojawi się komunikat o błędzie.

Drugi, opcjonalny parametr jest liczbą 1 lub 2. Jeśli jest to 1, to otwierane okno będzie miało domyślne rozmiary, a jeśli 2, to zostanie zmaksymalizowane.


Praca z folderami i plikami

całaNazwaPliku
folder?
listaFolderów
listaPlików
ładście
plik?
przemianujPlik
schowek
ścieżka
twórzFolder
ustalŚcieżkę
usuńFolder
usuńPlik; uspl

Większość z wymienionych tu procedur kasuje lub tworzy pliki bądź foldery. Szczególnie uważnie należy używać tych, które nieodwracalnie kasują dane. Inne procedury podają i zmieniają informacje o bieżących folderach zapisu lub odczytu plików graficznych, multimedialnych itd. Odwołując się do poszczególnych folderów można też używać dwóch znaków specjalnych:

  • znaku procentu % - jego użycie oznacza odwołanie do folderu macierzystego,
  • znaku dolara $ - jego użycie oznacza odwołanie do folderu ścieżki ładowania.
Procedura | Typ | Opis
całaNazwaPliku plik F Wynikiem jest pełna ścieżka dostępu do pliku, powstała poprzez połączenie ścieżki folderu macierzystego z daną plik. Dana plik może zawierać jedynie nazwę pliku lub częściową (względną) ścieżkę z nazwą pliku.

Przykładowo:

? pokaż całaNazwaPliku "log.TXT
C:\Program Files\Logomocja\log.TXT
? pokaż całaNazwaPliku "|Teksty\log.TXT|
C:\Program Files\Logomocja\Teksty\log.TXT
folder? ścieżka F Wynikiem jest prawda, jeśli dana polecenia określa nazwę istniejącego folderu. W przeciwnym przypadku wynikiem jest fałsz.

? pokaż folder? "|%Projekty\Www|
prawda

W przypadku podania częściowej (względnej) ścieżki, poszukiwanie folderu rozpoczyna się od folderu macierzystego. Zatem w powyższym przykładzie można opuścić znak %.
listaFolderów ścieżka F Wynikiem jest lista wszystkich podfolderów folderu o nazwie będącej daną polecenia.

Przykład:

? pokaż listaFolderów "%Projekty
[Www]
? pokaż listaFolderów "$Osoby
[Danka Andrzej Marek Adam Karol Grześ Krzyś]

Jeśli dana polecenia jest pusta:

? pokaż listaFolderów "

zostaną wypisane nazwy podfolderów folderu macierzystego %. Podanie częściowej (względnej) ścieżki spowoduje odwołanie do folderu, którego wyznaczanie rozpocznie się od folderu macierzystego.
listaPlików wzorzec
(listaPlików)
(listaPlików wzorzec wzorzec … ) 		F Jeśli jest użyta bez parametrów, to jej wynikiem jest lista nazw wszystkich plików z folderu Projekty (lub innego, określonego poleceniem ustalŚcieżkę ścieżka). Każdemu z plików odpowiada dwuelementowa lista składająca się z nazwy pliku i jego rozmiaru wyrażonego w bajtach.

Jeśli jest użyta z jednym lub więcej parametrami, to w wynikowej liście znajdą się informacje jedynie o plikach, których nazwy pasują do co najmniej jednego parametru-wzorca.

Każdy z wzorców może zawierać pełną (bezwzględną) lub częściową (względną) ścieżkę, określającą przeszukiwany folder.

Przykładowo, dla wypisania informacji jedynie o bitmapowych plikach graficznych, należy użyć:

? pokaż listaPlików "|$*.bmp|
[[dom.BMP 8530300] [rodzice.BMP 8387784]]

Dla wypisania informacji o wszystkich, znajdujących się w podfolderze Teksty folderu macierzystego, plikach tekstowych i plikach programu MS Word, należy użyć:

? pokaż (listaPlików "|%Teksty\*.TXT| "|%Teksty\*.DOC|)
[[Zaproszenie.doc 780800] [OpisyWędrówek.txt 3598] [PlanyNaPrzyszłość.txt 7496]
 [Notatki18.doc 4741599]]
ładście słowo
(ładście) 		F Jeśli jest użyta z daną słowo, to wynikiem jest pełna ścieżka dostępu do pliku, powstała poprzez połączenie ścieżki ładowania z daną słowo. Dana słowo może zawierać jedynie nazwę pliku lub częściową (względną) ścieżkę z nazwą pliku.

Przykładowo:

? pokaż ładście "x1.IMP
C:\Program Files\Logomocja\Projekty\x1.IMP

Jeśli jest użyta bez danej, to wynikiem jest nazwa folderu ścieżki ładowania $.
plik? słowo F Wynikiem jest prawda, jeśli dana polecenia określa nazwę istniejącego pliku. W przeciwnym przypadku wynikiem jest fałsz.

W przypadku podania częściowej (względnej) ścieżki i w przypadku, gdy nie jest podana ścieżka, poszukiwanie pliku rozpoczyna się od folderu macierzystego.

Należy pamiętać o konieczności uwzględnienia (wpisania) rozszerzenia nazwy pliku w użytej danej polecenia plik?.
przemianujPlik plik1 plik2
przemianujPlik ścieżka1 ścieżka2 		P Zmienia nazwę pliku z plik1 na plik2. Plik1 musi istnieć. Jeśli foldery określone w plik1 i plik2 są różne, to plik będzie miał zmienioną nazwę i będzie przeniesiony do folderu określonego przez plik2.

Jeśli plik1 zawiera częściowe (względne) określenie ścieżki, to wyznaczanie miejsca położenia pliku rozpocznie się od folderu macierzystego:

? przemianujPlik "|Projekty\log11.TXT| "|Teksty\log.TXT|

Jeśli danymi są ścieżki, to odpowiedni folder zmieni swoją nazwę i/lub położenie.
schowek Słowo specjalne

F

 Większość procedur otwierających i zapisujących pliki dopuszcza użycie (jako swojej danej) słowa "Schowek – zamiast nazwy pliku.

Na przykład, procedury wklejObraz, ładujEkran, ładPos, wklejWycinekZPliku, ładuj, ładPos, ładTekst, ładTab, ustalPostać itp. mogą wczytywać dane bezpośrednio z systemowego Schowka Windows. Natomiast procedury takie jak zapiszEkran, zapisz, zapiszPostać, zapiszTekst, zapiszTab itp. mogą zapamiętywać dane w systemowym Schowku Windows.

Ponadto w Schowku mogą być zapamiętywane, a także z niego odczytywane, teksty, grafiki bitowe i bardziej skomplikowane obiekty. Także inne typy danych mogą być importowane i eksportowane z użyciem Schowka.

Schowek może być używany jako bezparametrowa funkcja. Jej wynikiem jest lista reprezentująca bieżącą strukturę zawartości Schowka, co może pozwolić innym procedurom zorientować się jakiego typu obiekty są zapamiętane w Schowku.

Przykład:

? pokaż schowek
[DataObject Object Descriptor Rich Text Format 1 13 3 Embed Source Native OwnerLink Ole Private Data 16 7 14]

Te, być może dziwnie wyglądające słowa, pozwalają poleceniom pierwotnym prawidłowo interpretować zawartość Schowka.
ścieżka
(ścieżka podfolder )
(ścieżka [ podfolder ]) 		F Jeśli jest użyta bez parametrów, to wynikiem jest pełna ścieżka folderu Projekty (lub folderu ustalonego poleceniem ustalŚcieżkę ścieżka).

Jeśli jest użyta z parametrem Projekty, to wynikiem jest ścieżka dostępu do folderu Projekty; jeśli jest użyta z parametrem Www, to wynikiem jest ścieżka do Www; jeśli z parametrem Media, to do folderu Media itd. dla wszystkich standardowych folderów środowiska.

Jeśli jest użyta z parametrem będącym listą, to wynikiem jest lista słów, które są alternatywnymi sposobami odwołania się do podfolderu środowiska.

Przykładowo:

? pokaż (ścieżka [Www])
[$Www\ %Projekty\Www\ %Www\ $ %Projekty\ %]

? pokaż (ścieżka [Projekty])
[$ %Projekty\ %]

Stąd projekty będą wpierw wyszukiwane w ścieżce ładowania $, następnie w podfolderze Projekty folderu macierzystego % i wreszcie bezpośrednio w folderze macierzystym.

Użycie ścieżka bez parametrów jest równoważne użyciu (ścieżka "Projekty).
twórzFolder ścieżka P Tworzy nowy folder o nazwie będącej daną polecenia. Nie jest możliwe utworzenie folderu w nieistniejącym folderze – polecenie potrafi w pojedynczym wywołaniu utworzyć tylko jeden folder. Podanie częściowej (względnej) ścieżki spowoduje utworzenie folderu, którego wyznaczanie rozpocznie się od folderu macierzystego.

Przykładowo, jeśli chcemy utworzyć nowy podfolder NoweProjekty w folderze Projekty, powinniśmy napisać:

? twórzFolder "|Projekty\NoweProjekty|

Próba ponownego wykonania:

? twórzFolder "|Projekty\NoweProjekty|
spowoduje błąd i wypisanie komunikatu:

wystąpił problem z utworzeniem folderu Projekty\NoweProjekty.
ustalŚcieżkę ścieżka
(ustalŚcieżkę podfolder-środowiska ścieżka )
ustalŚcieżkę [ ścieżka ścieżka …]
(ustalŚcieżkę podfolder-środowiska
[ ścieżka ścieżka …])
ustalŚcieżkę []
(ustalŚcieżkę podfolder-środowiska []) 		P Jeśli używamy tego polecenia z jednym parametrem, to określa ono folder, jaki będzie używany przy otwieraniu i zapisywaniu projektów.

Jeśli używamy tego polecenia z dwoma parametrami, to: gdy pierwszym parametrem jest Pokazy, polecenie ustala folder pokazów; gdy jest to Projekty, ustala folder do odczytu i zapisu projektów, itd. dla wszystkich standardowych podfolderów środowiska.

Gdy używamy listy ścieżek [ścieżka ścieżka ...] zamiast pojedynczej ścieżki ścieżka, określamy wiele alternatywnych folderów poszukiwania plików określonego typu (tekstów, projektów...).

Przykładowo, polecenie (ustalŚcieżkę "Teksty [|$Teksty\| |%Teksty\| $ %]), określa, że teksty będą poszukiwane w: podfolderze Teksty ścieżki ładowania $, w podfolderze Teksty folderu macierzystego %, w folderze ścieżki ładowania i wreszcie – w folderze macierzystym.

Zauważmy, że ustalŚcieżkę ścieżka daje ten sam efekt, co (ustalŚcieżkę "Projekty ścieżka). Podobnie ustalŚcieżkę [ścieżka ścieżka …] daje ten sam efekt, co (ustalŚcieżkę "Projekty [ścieżka ścieżka …]).

Użycie listy pustej [] (w miejscu określenia alternatywnych folderów) przywraca standardowe ustawienia ścieżek:

? (ustalŚcieżkę "Www [d: %])
? pokaż (ścieżka [Www])
[d:\ %]
? (ustalŚcieżkę "Www [])
? pokaż (ścieżka [Www])
[$Www\ %Projekty\Www\ %Www\ $ %Projekty\ %]
usuńFolder ścieżka | P | Kasuje folder o nazwie będącej daną polecenia. Jeśli folder nie jest pusty, nie będzie skasowany i pojawi się komunikat o błędzie. Podanie częściowej (względnej) ścieżki spowoduje skasowanie folderu, którego wyznaczanie rozpocznie się od folderu macierzystego.
usuńPlik plik
Skrót:
uspl 		P Kasuje plik o nazwie będącej daną polecenia. Podanie częściowej (względnej) ścieżki spowoduje usunięcie pliku, którego wyznaczanie rozpocznie się od folderu macierzystego.

Przykładowo, dla usunięcia pliku Plik777.IMP z folderu Projekty należy napisać:

? usuńPlik "|Projekty\Plik777.IMP|

Taki sam skutek miałoby:

? usuńPlik "|%Projekty\Plik777.IMP|.

Próba usunięcia nieistniejącego pliku spowoduje błąd i wyświetlenie stosownego komunikatu:

? usuńPlik "|Projekty\Ąćęłńóśżź.IMP|
Wystąpił problem z usunięciem pliku Projekty\Ąćęłńóśżź.IMP.

Należy pamiętać o konieczności wpisania rozszerzenia nazwy pliku w danej polecenia usuńPlik.


Zapisywanie projektów dla WWW

Istnieją dwa sposoby zapisania projektu jako strony WWW:

  • Wybierając opcję menu Plik / Zapisz jako WWW…. Otworzy się dialog Zapisz jako WWW.
  • Poleceniem zapiszWWW "nazwa_pliku tytuł tekst, (patrz poniżej).
Procedura Typ Opis
zapiszWWW nazwa_pliku tekst1 tekst2 P Tworzy parę plików: nazwa_pliku.HTM i nazwa_pliku.IMP w podfolderze WWW folderu Projekty. Jeśli otworzysz plik.HTM w przeglądarce internetowej, tytułem strony będzie tekst1, a tekst2 zostanie wypisany poniżej tytułu. Pod nimi zostanie uruchomiony dzięki specjalnej "wtyczce" (ang. plugin) odpowiadający plik.IMP. W ten sposób można uruchamiać dowolny projekt w przeglądarce internetowej z poniższymi ograniczeniami:
  • Nie można zapisywać na dysk. Tzn. nie można zapisać czegokolwiek (za wyjątkiem schowka Windows), nie można tworzyć lub kasować plików ani folderów etc.
  • Nie można drukować.
  • Środowisko jest znacznie ograniczone. Nie można otworzyć okna pamięci, dialogu Zmień mnie, okna przycisków, paska narzędzi oraz przybornika malarskiego.
  • Nie można używać joysticków (ale można myszy).
  • Nie można używać poleceń związanych z głosem.
  • Nie można otworzyć Edytora postaci.
  • Nie ma ekranu tekstowego. W związku z tym nie można wydawać poleceń w wierszu poleceń.
  • Nie można odczytywać z dysku.

Jeśli plugin nie jest zainstalowany na Twoim komputerze, to w przeglądarce zostanie wyświetlony komunikat: Click here to get the plug-in. Jeśli Twój komputer jest podłączony do internetu i klikniesz na ikonę, to plugin zostanie ściągnięty i zainstalowany.

Strukturę pliku nazwa_pliku.HTM określa wartość zmiennej wspólnej szablonHtml Bazy.


O procesach

Po wpisaniu instrukcji w wierszu poleceń, na przykład:

? powtórz 24 [np 7 owal [50 13] np 7 pw 15]

Logo wykonuje proces, w trakcie którego każdy aktywny żółw narysuje "kwiatek". Po wykonaniu polecenia powtórz proces jest skończony i automatycznie anulowany. W czasie jego realizacji nie można wpisywać żadnych innych instrukcji w wierszu poleceń – wykonywanie instrukcji z wiersza poleceń angażuje całkowicie jego zasoby.
Istnieją jednak inne sposoby uruchamiania wielu autonomicznych procesów biegnących równolegle. Te niezależne procesy mogą współpracować z tymi samymi lub różnymi obiektami. Każdy proces może:

  • pracować z jednym, wieloma lub żadnym obiektem,
  • uruchamiać inne procesy,
  • anulować inne procesy,
  • anulować siebie,
  • podlegać inspekcji, czy został zakończony, czy nie.

W każdym procesie można tworzyć zmienne lokalne za pomocą poleceń niech oraz lokalna.

Proces, po jego utworzeniu i uruchomieniu (równolegle z innymi procesami), pamięta:

  • swojego adresata, do którego kieruje polecenia (zobacz Adresat i aktywne obiekty procesów),
  • swoje aktualnie aktywne obiekty (zobacz Jak określić początkowe obiekty aktywne procesu),
  • wartości wszystkich bieżących zmiennych lokalnych (utworzonych za pomocą poleceń niech oraz lokalna),
  • instrument wykonujący polecenia graj (ustalony domyślnie lub przez inny proces),
  • skutek polecenia test (w definicji procesu, tak samo jak w definicjach procedur, można używać poleceń test, jeśliNie oraz jeśliTak).

? zapuść [test pozY > 100 jeśliTak [pisz "|za wysoko|]]
za wysoko

  • nazwę ostatnio utworzonego obiektu, będzie to wynik funkcji ostNazwa, jeśli uprzednio w tym samym procesie użyto procedur nowy, nowyObiekt lub nowaKlasa,
  • ostatnio utworzony obiekt, będzie to bieżąca wartość aliasu ostObiekt, jeśli uprzednio w tym samym procesie użyto procedur nowy, nowyObiekt lub nowaKlasa,
  • wartość licznika powtórzeń numpow polecenia powtórz, jeśli jest aktualnie wykonywane przez proces; użycie funkcji numpow (w powtórz) nie kłóci się z innym numpow użytym w innym procesie,
  • ostatni komunikat o błędzie – wynik funkcji błąd.

Do znalezienia aktualnych aktywnych obiektów procesu, używamy (w danym procesie) funkcji kto, a by dostać nazwę adresata procesu, używamy: adresat'mojaNazwa.

Zobacz:


Typy procesów

Istnieją trzy typy procesów:

  • Proces realizacji wiersza poleceń zapoczątkowany przez napisanie jednej lub wielu instrukcji w wierszu poleceń i anulowany po ich wykonaniu. Na przykład po napisaniu:

    ? np 200

    (i naciśnięciu enter) tworzy się proces, który wykonuje to jedno polecenie i znika. Ale jedno polecenie może zawierać wywołania innych procedur, które mogą wywoływać inne procedury… i ten proces może trwać przez długi okres czasu. W trakcie wykonywania jednej instrukcji z wiersza poleceń mogą się tworzyć nowe procesy, na przykład:

    ? bezKońca [np 1 pw 1]

    uruchamia proces realizacji wiersza poleceń do wykonania tej jednej instrukcji. Ale ten proces napotyka polecenie bezKońca , które uruchamia nowy proces (nazywany procesem bezKońca - patrz niżej) a sam się kończy, ponieważ wykonał swoje zadanie.

    Polecenie

    ? proszę [ż1 ż2 ż3 ż4 ż5]
       [każdy [bezKońca [np 2 pw 1 czekaj 1]]]

    uruchamia proces realizacji wiersza poleceń, który uruchamia kolejno pięć procesów bezKońca. Po wykonaniu tego zadania, zostanie anulowany, a każdy z pięciu nowych niezależnych procesów będzie kontynuowany w nieskończoność (o ile ich nie zatrzymamy kliknięciem w przycisk Zastopuj wszystkie procesy paska narzędzi).

    Zauważ, że w trakcie procesu realizacji wiersza poleceń Logo nie pozwala wpisywać żadnych nowych instrukcji. Ale można kliknąć dowolny obiekt na ekranie, przycisk na pasku itd. Można natomiast uruchomić proces realizacji wiersza poleceń w czasie działania autonomicznych równoległych procesów dwóch opisanych poniżej rodzajów.

    Proces realizacji wiersza poleceń - w odróżnieniu od niezależnie uruchomionych procesów (np. poleceniami zapuść lub bezKońca), przypomina realizację wywołania procedury - może tworzyć zmienne lokalne za pomocą niech oraz lokalna. Ma automatycznie nadawaną nazwę - @Wykonawca. Można go zatrzymać kliknięciem w przycisk Zastopuj proces realizacji wiersza poleceń paska narzędzi. Można także utworzyć własny przycisk z reakcją anuluj "@Wykonawca.

    Zmienne lokalne utworzone w wierszu poleceń za pomocą procedur niech oraz lokalna istnieją do końca sesji Logo.

    ? niech "pocz ż1'poz
    ? ż1'powtórz 18 [pw 5 np 6 pw 5]
    ? ż1'napoz :pocz

    Gdy ustawienie wierszPoleceń okna głównego ma wartość fałsz, bieżąca treść wiersza poleceń jest realizowana normalnie. Jednocześnie, wiersz poleceń jest wyłączony, nie można wpisać nowej treści dopóki nie przywrócimy standardowej wartości prawda ustawienia wierszPoleceń.

  • Proces "zapuść" lub "bezKońca" - to niezależny proces utworzony np. za pomocą poleceń zapuść albo bezKońca przez inny proces (nazywany procesem rodzicem). Takie procesy po ich uruchomieniu otrzymują kopie wszystkich zmiennych lokalnych. Biegną one równolegle z innymi bieżącymi procesami. W trakcie ich realizacji wiersz poleceń przyjmuje nową treść. Proces "bezKońca" można uruchomić również poleceniem co, a polecenie po uruchamia proces "zapuść".
  • Proces zdarzenia jest niezależnym równoległym procesem utworzonym jako reakcja na zdarzenie zdefiniowane dla jakiegoś obiektu. W odróżnieniu od procesów typu "zapuść" i "bezKońca" jest realizowany podobnie jak wywołanie procedury.

    • ? nowaKlasa "Żółw "mójŻółw []
    ? mójŻółw'ustalZdarzenie "gdyKlik [niech "d abs poz skieruj azymut [0 0] np 0.1 * :d]


Nadawanie nazw procesom

Każdy proces ma nazwę, nadaną w sposób:

  • jawny (dotyczy tylko procesów typu "zapuść" i "bezKońca"), tzn. określoną w poleceniu zapuść, bezKońca, co albo po w formie (zapuść lista-P słowo) lub (bezKońca lista-P słowo) itp. Słowo występujące jako druga dana będzie nazwą procesu, której będzie można następnie użyć w procedurach anuluj oraz zrobione?. Nie używaj nazw zaczynających się od znaku @, ponieważ takich nazw używa Logo dla swoich własnych procesów, więc mógłbyś przypadkowo zatrzymać taki proces i spowodować szkodę.
  • niejawny (w przypadku procesów typu "zapuść" i "bezKońca"). Jeśli nie nazwiesz procesu w sposób jawny, jako nazwy można używać definicji procesu (tzn. jego listy poleceń). Na przykład:

    ? bezKońca [np 1 pw 1 czekaj 5]
    tworzy proces, który ma nazwę [np 1 pw 1 czekaj 5]
    ? pokaż zrobione? [np 1 pw 1 czekaj 5]
    fałsz
    ? anuluj [np 1 pw 1 czekaj 5]

  • niejawny (w przypadku procesów zdarzeń). Nazwy są generowane automatycznie i zaczynają się od znaku @.
  • Słowo @Wykonawca (dla procesu realizacji wiersza poleceń).

Może istnieć wiele procesów o identycznej (nadanej jawnie lub niejawnie) nazwie. Jeśli użyjesz takiej nazwy w poleceniu anuluj, wszystkie te procesy zostaną anulowane. Jeśli użyjesz jej jako danej funkcji zrobione?, dostaniesz wynik prawda tylko wtedy, gdy wszystkie te procesy zostały zakończone.


Procedury zarządzania procesami

anuluj
bezKońca
co
po
stopMnie
stopProc
wszystkieProcesy
wznów
zapuść
zatrzymaj
zrobione?

Do sterowania procesami można używać następujących procedur:

Procedura | Typ | Opis
anuluj słowo
anuluj lista-P 		P Zatrzymuje (i usuwa) proces, którego nazwą jest dane słowo. Jeśli istnieje wiele procesów o danej nazwie, wszystkie zostaną anulowane. Jeśli daną jest lista-P, wszystkie procesy mające taka definicję zostaną anulowane.
bezKońca lista-P
(bezKońca lista-P słowo ) 		P Uruchamia nowy, równoległy, niezależny, niekończący się proces, który dziedziczy adresata i otrzymuje kopie wszystkich istniejących zmiennych lokalnych. Polega on na wykonywaniu w koło w niekończącej się pętli danej listy poleceń. Opcjonalna druga dana - słowo - określa nazwę procesu. Jeśli nie ma żadnej jawnej nazwy, nazwą domyślną będzie dana lista poleceń.
co N lista-P
(co N lista-P słowo ) 		P Uruchamia nowy, niezależny, równoległy proces typu "bezKońca" wykonujący powtarzalnie co N milisekund daną listę poleceń. Proces ten dziedziczy adresata i otrzymuje kopie wszystkich istniejących zmiennych lokalnych. Polecenie:
? co N [polecenie … ]

jest równoważne z:

? bezKońca [polecenie … czekaj N]

Polecenie :

? (co N [polecenie … ] słowo)

jest równoważne z:

? (bezKońca [polecenie … czekaj N] słowo)
po N lista-P
(po N lista-P słowo ) 		P Uruchamia nowy, niezależny, równoległy proces typu "zapuść", który dziedziczy adresata i otrzymuje kopie wszystkich zmiennych lokalnych. Pierwsza dana liczba całkowita N określa, w milisekundach, po jakim czasie od bieżącej chwili proces zostanie uruchomiony. Dana lista-P zostanie wykonana raz po czym proces zostanie anulowany.

Opcjonalna trzecia dana określa nazwę procesu.

? po 5000
    [proszę [ż1 ż2]
      [powtórz 800 [każdy [napoz poz + [1 0]]]]
? (bezKońca [np 0.1] "pr1) po 500 [anuluj "pr1]
stopMnie P Tego polecenia można użyć tylko w definicji procesu. Powoduje natychmiastowe zatrzymanie tego procesu. Sprawdź jaka jest różnica pomiędzy tymi dwoma poleceniami:

? bezKońca [np 2 jeśli pozY > 100 [stopMnie]]
? powtórz 1000 [np 2 jeśli pozY > 100 [stopMnie]]

Polecenia stopMnie można użyć w konstrukcji złap:

? złap "przerwij [ … stopMnie … ].

Polecenie stopMnie jest równoważne rzuć "przerwij.
stopProc | P | Anuluje wszystkie wykonywane procesy dowolnego typu.
wszystkieProcesy F Wynikiem jest lista nazw wszystkich wykonywanych w danej chwili procesów.

? pokaż wszystkieProcesy
[@Wykonawca]
? ż1'bezKońca [np 1 pw 1]
? pokaż wszystkieProcesy
[@Wykonawca [np 1 pw 1]]
? (ż1'bezKońca [jeśli 0.01 [lw 1]] "losowy)
? pokaż wszystkieProcesy
[@Wykonawca [np 1 pw 1] losowy]
wznów P Wznawia wszystkie wstrzymane procesy. Polecenie to można wydać:
  • wpisując je w wierszu poleceń, jeśli jest dostępny,
  • kliknięciem w przycisk Pauza / Wznów paska narzędzi,
  • kliknięciem przycisku zdefiniowanego przez nas celowo w taki sposób, aby na zdarzenie gdyKlik reagował wywołaniem wznów.
zapuść lista-P
(zapuść lista-P słowo ) 		P Uruchamia nowy, równoległy, niezależny proces, który dziedziczy adresata i otrzymuje kopie wszystkich istniejących zmiennych lokalnych. Dana lista poleceń (treść procesu) zostanie wykonana raz, po czym proces zostanie anulowany. Opcjonalna druga dana - słowo - określa nazwę procesu. Jeśli nie ma żadnej jawnej nazwy, nazwą domyślną będzie dana lista poleceń.
zatrzymaj

P Wstrzymuje wszystkie wykonywane procesy dowolnego typu.
Po wstrzymaniu procesu realizacji wiersza poleceń, w wierszu poleceń nie można pisać nowych instrukcji.
To samo można osiągnąć kliknięciem w przycisk Pauza / Wznów paska narzędzi. Kliknięcie tego przycisku ponownie wznawia proces.
zrobione? słowo
zrobione? Lista-P 		F Wynikiem jest prawda jeśli nie istnieje czynny proces, którego nazwą jest dane słowo. Jeśli dana jest lista poleceń, funkcja daje wynik prawda jeśli nie jest wykonywany żaden proces mający taką definicję.

Również usunięcie aktualnego (lub początkowego) adresata procesu, anuluje proces.


Adresat i aktywne obiekty procesu

Funkcja ktoNaStronie daje nazwę lub listę nazw aktywnych obiektów na aktywnej stronie. Każdy proces ma swoją funkcję kto, która daje nazwy jego aktywnych obiektów. Jeśli chcesz dostać nazwę adresata procesu, musisz użyć wyrażenia adresat'mojaNazwa.

Zobacz:

Jak określić początkowego adresata procesu
Jak zmienić adresata procesu
Jak określić początkowe aktywne obiekty procesu
Jak zmienić aktywne obiekty procesu


Jak określić początkowego adresata procesu

Początkowym adresatem procesu jest aktualny adresat w chwili jego uruchomienia.

  • W przypadku procesu realizacji wiersza poleceń początkowym adresatem (w chwili rozpoczęcia realizacji nowego wiersza) jest okno główne.
  • W przypadku procesu typu "zapuść" lub "bezKońca", początkowym adresatem jest aktualny adresat w chwili jego uruchomienia. Na przykład:
    • W przypadku proszę "ż100 [bezKońca [np 5 pw 4]], początkowym adresatem procesu bezKońca będzie żółw ż100.
    • W przypadku proszę [ż1 ż2 ż3][zapuść [powtórz 360 [np 1 pw 1]]], początkowym adresatem uruchomionego procesu będzie adresat wiersza poleceń (zwykle okno główne).
  • Początkowym adresatem procesu zdarzenia jakiegoś obiektu jest sam ten obiekt.

? nowy "Przycisk [poz [200 300] nazwa tak1]
? pokaż adresat'mojaNazwa
OknoGłówne
? tak1'ustalZdarzenie "gdyKlik [pokaż adresat'mojaNazwa]
; teraz kliknij przycisk
tak1


Jak zmienić adresata procesu

Można na pewien czas zmienić adresata procesu i określić innego adresata. W przypadku:

  • proszę "ż5 [ … ], adresatem listy poleceń [ … ] będzie ż5.
  • ż5'mojePolecenie dana1 dana2 …, adresatem dla mojePolecenie będzie ż5. Ale trzeba wiedzieć, że wartości wyrażeń określających dane będą obliczane wcześniej niż mojePolecenie, przed ustaleniem tymczasowego adresata ż5.
  • każdy [ … ], pierwszy aktywny żółw będzie tymczasowym adresatem procesu i wykona listę poleceń [ … ]. Następnie drugi, trzeci i kolejne żółwie zrobią to samo.
  • słuchaj [obiekt1 obiekt2 … ] i w konsekwencji w przypadku realizacji każdego polecenia należącego do wspólnego przodka tych obiektów, obiekt1 będzie tymczasowym adresatem i je wykona, tak samo obiekt2, obiekt3… i po kolei wszystkie.
  • proszęKażdego [obiekt1 obiekt2 … ][ … ], najpierw: obiekt1 będzie tymczasowym adresatem i wykona listę poleceń [ … ]. Następnie obiekt2 zrobi to samo, następnie - obiekt3… itd. Wszystkie po kolei.

Po wykonaniu polecenia lub listy poleceń przez tymczasowo określonego adresata, przywraca się poprzedniego adresata.


Jak określić początkowe aktywne obiekty procesu

  • Początkowe obiekty aktywne procesu realizacji wiersza poleceń to:
    • obiekt na aktywnej stronie aktywny na skutek polecenia słuchaj "obiekt,
    • lista obiektów na aktywnej stronie aktywnych na skutek polecenia słuchaj [obiekt1 obiekt2 … ],
    • pusta lista [], jeśli wartością ktoNaStronie jest [], tzn. jeśli dla aktywnej strony nie użyto dotąd polecenia słuchaj.
  • Każdy proces typu zapuść" lub "bez końca" dziedziczy aktywne obiekty po procesie, który go utworzył (procesie rodzicu).
  • Każdy proces zdarzenia utworzony za pomocą przycisku (jako realizacja zdarzenia gdyWciśnięty lub gdyZwolniony) pożycza aktywne obiekty od strony do której należy (będącej wartością mojaStrona).
  • Każdy proces zdarzenia utworzony przez zmianę pola tekstowego, za pomocą suwaka, kliknięcia żółwia, naciskania specPrzycisku itd. (czyli inaczej niż przez wciśnięcie lub zwolnienie przycisku) otrzymuje pustą listę [] aktywnych obiektów.


Jak zmienić aktywne obiekty procesu

Przeanalizuj poniższy dialog. Zwróć uwagę, że polecenie proszę, jeśli adresuje jeden obiekt, zmienia aktualnego adresata procesu, lub, jeśli adresuje kilka obiektów, zmienia listę aktywnych obiektów. Polecenie słuchaj zawsze zmienia aktywny obiekt lub aktywne obiekty. Jeśli polecenie słuchaj zostanie użyte w procesie typu "zapuść" lub "bezKońca", ciągle zmienia listę kto, ale tylko tego procesu - poprzednia lista kto wiersza poleceń (i lista ktoNaStronie aktywnej strony) jest chroniona:

? słuchaj [ż2 ż4]
? pokaż kto
[ż2 ż4]
? zapuść [(pokaż kto adresat'mojaNazwa)
          proszę [ż1][(pokaż kto adresat'mojaNazwa)]
          (pokaż kto adresat'mojaNazwa)
          proszę [ż1 ż3] [(pokaż kto adresat'mojaNazwa)]
          (pokaż kto adresat'mojaNazwa)]
[ż2 ż4] OknoGłówne
ż1 ż1
[ż2 ż4] OknoGłówne
[ż1 ż3] OknoGłówne
[ż2 ż4] OknoGłówne

? pokaż kto
[ż2 ż4]
? zapuść [słuchaj [ż1]
          (pokaż kto adresat'mojaNazwa)
          słuchaj [ż1 ż3] (pokaż kto adresat'mojaNazwa)]
ż1 OknoGłówne
[ż1 ż3] OknoGłówne
? pokaż kto
[ż2 ż4]
? zapuść [słuchaj [ż1 ż3]
          każdy [(pokaż kto adresat'mojaNazwa)]]
ż1 ż1
ż3 ż3

Można przedefiniować początkowe aktywne obiekty procesu. Jeśli użyjesz (wewnątrz treści procesu):

  • proszę dla jednego obiektu, na przykład proszę [ż2][ … ], to lista aktywnych obiektów się nie zmieni (ale zmieni się adresat).
  • notacji z apostrofem, na przykład ż2'mojePolecenie … , to lista aktywnych obiektów się nie zmieni (ale zmieni się adresat).
  • proszę dla kilku obiektów, na przykład proszę [ż1 ż2 ż3 ż4][ … ], to lista aktywnych obiektów zostanie czasowo zmieniona na [ż1 ż2 ż3 ż4].
  • każdy [ … ], pierwszy aktywny obiekt stanie się czasowo jedynym aktywnym obiektem procesu i wykona daną listę instrukcji [ … ]. Potem drugi aktywny obiekt zrobi to samo, potem trzeci … itd..
  • proszęKażdego [ż1 ż2 ż3][ … ] oznacza to samo co proszę [ż1 ż2 ż3][każdy [ … ]], tzn. jest kombinacją poleceń proszę i każdy.
  • Jeśli proces w trakcie działania zmieni aktywną stronę, to jego aktywne obiekty zostaną przedefiniowane zgodnie z listą ktoNaStronie tej strony. To samo dotyczy sytuacji, kiedy proces utworzy nową stronę i uczyni ją aktywną.

    ? zapuść [(pokaż aktywnaStrona kto)
              ustalAktywnąStronę "s2
              (pokaż aktywnaStrona kto)]
    s1 ż1
    s2 []

  • Jeśli polecenie słuchaj zostanie użyte w procesie realizacji wiersza poleceń, obydwie listy, kto procesu i ktoNaStronie aktywnej strony, zostaną zmienione w ten sam sposób.

    ? słuchaj "ż1
    ? (pokaż kto s1'ktoNaStronie) słuchaj "p1 (pokaż kto s1'ktoNaStronie)
    ż1 ż1
    p1 p1

  • Jeśli polecenie słuchaj zostanie użyte w procesie typu "zapuść" lub "bezKońca", lub w procesie zdarzenia, tylko lista procesu kto zostanie.

    ? słuchaj "ż1
    ? zapuść [(pokaż kto s1'ktoNaStronie) słuchaj "p1 (pokaż kto s1'ktoNaStronie)]
    ż1 ż1
    p1 ż1


Przykłady procesów

Przykład 1:

Utwórz planszę p1 i dwa żółwie żyjące na niej: ż1 i ż2. Niech ż1 będzie żółwiem aktywnym, a jego stylZakresu ma wartość odbij. Dla żółwia ż2 zdefiniuj następujący proces bez końca: kiedy ż1 się przesuwa, to ż2 obraca się tak, aby patrzeć na ż1:

? ż2'bezKońca [skieruj azymut "ż1]

Ustal ustawienie przeciąganie dla żółwia ż2 na prawda. Jeśli teraz przeciągasz ż2 po planszy, to będzie się on ciągle obracał w kierunku żółwia ż1 dzięki procesowi, który został uruchomiony. Utwórz teraz następny proces bez końca, tym razem dla żółwia ż1, który będzie go losowo przesuwał:

? bezKońca [skieruj jld np 5 czekaj 10]

Ponieważ żółw ż1 jest aktywny, to proces wyśle polecenia skieruj jld i np 5 do tego żółwia. To samo by się stało po wydaniu polecenia ż1'bezKońca [skieruj jld np 5], także jeśli ż1 nie byłby aktywny. Teraz biegną obydwa procesy, żółw ż1 będzie się przesuwać, a żółw ż2 będzie na niego patrzeć.

Poszerz przykład jeszcze bardziej. Ustal większą grubość pisaka dla żółwia ż2, jego kolor pisaka na czerwony i uruchom kolejny proces, który będzie wolno przesuwał żółwia ż2. Teraz dwa autonomiczne procesy dotyczą żółwia ż2 – jeden odpowiada za jego obroty, a drugi przesuwa do przodu:

? ż2'ugp 3
? ż2'ukp "czerwony
? ż2'bezKońca [np 0.5 czekaj 10]

Uwagi:

Zauważ (i sprawdź), że jeśli uruchomisz procesy bez polecenia czekaj, to działanie będzie zupełnie inne. Dzieje się tak dlatego, że procesy są niezależne i biegną "za szybko" i asynchronicznie. Polecenie czekaj je synchronizuje.

Możesz otrzymać wiele interesujących wersji eksperymentując z różnymi "prędkościami" obu żółwi, tzn. z różnymi danymi ich poleceń np. Jedna z możliwości to utworzenie suwaka obok planszy p1 - suw1. W dialogu Zmień mnie dla tego suwaka ustal Minimum na 1 i Maksimum na 50. Zatrzymaj wszystkie procesy (na przykład klikając w przycisk Zastopuj wszystkie uruchomione procesy paska narzędzi) i uruchom ponownie trzy poniższe procesy:

? ż1'co 10 [skieruj jld np 5]
? ż2'bezKońca [skieruj azymut "ż1]
? ż2'co 10 [np suw1/30]

Zamiast bezKońca [ … czekaj 10] można użyć co 10 [ … ].

Przeciągając suwadło suwaka suw1 można teraz interaktywnie ustawiać prędkość żółwia ż2 pomiędzy np 1/30 i np 5/3.

Przykład 2:

Teraz rozszerz poprzedni projekt w następujący sposób: utwórz trzy przyciski obok suwaka suw1.

Niech napisem na pierwszym przycisku będzie Przesuń ż1. Jeśli klikniesz w niego, zostanie uruchomiony proces zdarzenia, który spowoduje, że żółw ż1 będzie losowo chodził po planszy p1. Niech przycisk (w rzeczywistości przełącznik) zostanie wciśnięty. Jeśli klikniesz go znowu, to zostanie zwolniony, a proces anulowany. Drugi przycisk (także przełącznik) z napisem Obróć ż2 uruchomi (kiedy zostanie wciśnięty) i anuluje (kiedy zostanie zwolniony) proces obracający żółwia ż2 w kierunku żółwia ż1. Trzeci przycisk (także przełącznik) z napisem Przesuń ż2 uruchamia i anuluje proces gonienia żółwia ż1 przez żółwia ż2 z prędkością określoną przez suwak suw1.

Szczegóły:

Klikając w przycisk Nowy przycisk paska narzędzi utwórz pierwszy przycisk, kliknij go prawym przyciskiem myszy i wybierz Zmień prz1 z menu. W dialogu Zmień prz1 określ Napis jako Przesuń ż1. Poza tym zaznacz pole Przełącznik. Następnie zdefiniuj jego zdarzenia:

  • gdyWciśnięty jako [(ż1'co 10 [skieruj jld np 5] "ruch.ż1)]. Kiedy przycisk zostanie wciśnięty, to uruchomi się proces bez końca dla żółwia ż1 o nazwie ruch.ż1. Nazywając proces łatwiej go potem anulować.
  • gdyZwolniony jako [anuluj "ruch.ż1]. Kiedy przełącznik prz1 (aktualnie wciśnięty) zostanie kliknięty ponownie, losowe ruchy żółwia ż1 zostaną anulowane, a przycisk zwolniony.

Otwórz zakładkę Wygląd dialogu Zmień prz1 i zaznacz pole Płaski. Utwórz przyciski prz2 i prz3 w podobny sposób. Treści zdarzeń dla tych przycisków są następujące:

  • gdyWciśnięty dla prz2 - [(ż2'bezKońca [skieruj azymut "ż1] "obrót.ż2)],

  • gdyZwolniony dla prz2 - [anuluj "obrót.ż2],

  • gdyWciśnięty dla prz3 - [(ż2'co 10 [np suw1/30] "ruch.ż2)],

  • gdyZwolniony dla prz3 - [anuluj "ruch.ż2].

Przykład 3:

Utwórz jeszcze jedną wersję. Tym razem żółw ż1 nie będzie chodził losowo, ale dzięki procesowi ż1'bezKońca [powtórz 80 [np 2 czekaj 10] pw 90] będzie się poruszał po kwadracie. Żółw ż2 będzie gonił żółwia ż1. Wykonaj następujące polecenia:

? ż1'bezKońca [powtórz 80 [np 2 czekaj 10] pw 90]
? ż2'ugp 2
? ż2'ukp "czerwony
? ż2'bezKońca [skieruj azymut "ż1 np 1.5 czekaj 10]

Wynik jest bardzo interesujący.

Zauważ, że jeśli pominiesz polecenie czekaj, ruchy żółwia goniącego będą zupełnie inne. Bez polecenia czekaj, każdy z procesów biegnie bardzo szybko i Windows pozwoli pierwszemu z nich wykonać się kilka razy, następnie drugiemu też kilka razy, itd. Wynik (patrz dolny rysunek) jest zupełnie inny (i chaotyczny):

? ż1'bezKońca [powtórz 90 [np 2] pw 90]
? ż2'bezKońca [skieruj azymut ż1'poz np 1.5]

Przykład 4:

Utwórz kolejną wersję dla większej liczby żółwi: żółw ż0 będzie chodził na planszy p1 po kwadracie. Niech sześć żółwi, z losową pozycją wyjściową i losowym kolorem pisaka, goni żółwia ż0:

? p1'nowy "Żółw [nazwa ż0 poz [–80 –80]]
? ż0'bezKońca [powtórz 50 [np 3 czekaj 10] pw 90]
? powtórz 6 [p1'nowy "Żółw [poz jld kolpis jld grubość 3]
? proszęKażdego [ż1 ż2 ż3 ż4 ż5 ż6]
          [bezKońca [skieruj azymut "ż0 np 2 czekaj 10]]


Klasy pierwotne i ich procedury

Świat Logomocji-Imagine składa się z pojedynczych obiektów (jak żółw Jaś, strona Wstęp itp.), poleceń, które można wydawać obiektom oraz klas. Każdy konkretny obiekt - jednostka - należy do pewnej klasy, która wyznacza procedury jego działania. Te procedury pozwalają obiektom reagować na wydawane im polecenia.

Jest kilkanaście klas pierwotnych (zobacz lista poniżej), których nie można zmieniać, za to można definiować własne podklasy i jednostki wywodzące się od klas pierwotnych.

Klasa Baza
Obiekt OknoGłówne
Klasa Strona
Klasa Plansza
Klasa PasekNarzędzi
Klasa Żółw
Klasa PoleTekstowe
Klasa Suwak
Klasa Przycisk
Klasa SpecPrzycisk
Klasa WWW
Klasa Odtwarzacz
Klasa Sieć
Klasa Joystick


Przegląd klas pierwotnych - Klasa Baza

Klasa Baza

Ogólny opis
Ustawienia
Zmienne wspólne
Zmienne zakresu losowości
Zmienne globalne
Zdarzenia

Alfabetyczna lista procedur, słów i zdarzeń

- | - |  |
* | * |  |
.Albo |  |  |
.I |  |  |
.Lub |  |  |
.Nie |  |  |
.nieZapisuj |  |  |
.nieZapisujProc |  |  |
.nieZapisujZdarzenia |  |  |
.nieZapisujZmiennej |  |  |
.nieZapisujZmiennych |  |  |
.schowaj |  |  |
.zmienne |  |  |
/ | / |  |
+ | + |  |
< | < |  |
<= | <= |  |
<> | <> | <> |
= | = | = |
> | > |  |
>= | >= |  |
abs | abs |  |
aktsp? |  |  |
aktywnySpecPrzycisk? |  |  |
albo |  |  |
anuluj |  |  |
arctg |  |  |
ascii |  |  |
atrpos |  |  |
be | be |  |
ben | ben |  |
bezElementu | bezElementu |  |
bezelnum | bezelnum |  |
bezKompresji |  |  |
bezKońca |  |  |
bezost | bezost |  |
bezpierw | bezpierw |  |
bitAlbo |  |  |
bitI |  |  |
bitLub |  |  |
bitNie |  |  |
błąd |  |  |
bo | bo |  |
bp | bp |  |
całaNazwaPliku |  |  |
ck |  |  |
cl |  |  |
co |  |  |
cos |  |  |
csw |  |  |
cz | cz |  |
czas |  |  |
czasS |  |  |
czasSłowo |  |  |
czekaj |  |  |
czekajDo |  |  |
czytajKlawisz |  |  |
czytajListę |  |  |
czytajSłowo |  |  |
czytajZ |  |  |
czytajZnak | czytajZnak |  |
data |  |  |
dataS |  |  |
dataSłowo |  |  |
defprzy |  |  |
demoDialog |  |  |
dialog |  |  |
dialogOtwórz |  |  |
dialogOtwórzDźwięk |  |  |
dialogOtwórzProjekt |  |  |
dialogZapisz |  |  |
dialogZapiszObraz |  |  |
dialogZapiszProjekt |  |  |
dialogZapiszWWW |  |  |
div | div |  |
dla |  |  |
dlaKażdego |  |  |
dlw |  |  |
dlwł |  |  |
długość | długość |  |
dopiszPostać |  |  |
dopiszTekst |  |  |
dopóki |  |  |
dość |  |  |
ed |  |  |
element? | element? |  |
elzg |  |  |
ent | ent |  |
exp |  |  |
fałsz |  |  |
filtr |  |  |
folder? |  |  |
gdyPrawyWciśnięty |  |  |
generuj |  |  |
grajd |  |  |
grajDźwięk |  |  |
graj |  |  |
grajPlik |  |  |
grajp |  |  |
grajWav |  |  |
ignoruj |  |  |
iloczyn | iloczyn |  |
i |  |  |
iloraz |  |  |
ilorazc | ilorazc |  |
instrument |  |  |
int | int |  |
jest? |  |  |
jeśli |  |  |
jeśliNie |  |  |
jeśliTak |  |  |
jeżeli |  |  |
jld |  |  |
każdy |  |  |
kątWektorów |  |  |
klasa? |  |  |
klawisz? |  |  |
klawisz |  |  |
klonuj |  |  |
kolory |  |  |
kpl? |  |  |
ktoNaStronie |  |  |
kto |  |  |
liczba? |  |  |
lista? |  |  |
lista |  |  |
listaFolderów |  |  |
listaPlików |  |  |
ln |  |  |
logo |  |  |
lokalna |  |  |
losowa | losowa |  |
los | los |  |
lub |  |  |
lwł |  |  |
ładlistpos |  |  |
ładpos |  |  |
ładProjekt |  |  |
ładproj |  |  |
ładście |  |  |
ładtab |  |  |
ładTekst |  |  |
ładuj | ładuj |  |
mamZmienną? |  |  |
maRodzica? |  |  |
mci |  |  |
mniejsze? | mniejsze? |  |
mod | mod |  |
mojaProcedura? |  |  |
mojaZmienna? |  |  |
mojePierwotne? |  |  |
mojeZdarzenie? |  |  |
naabs |  |  |
naAbsolutne |  |  |
naEkran |  |  |
naekr |  |  |
naFazy |  |  |
naFilm |  |  |
nakar |  |  |
naKartezjańskie |  |  |
nak | nak |  |
naobi |  |  |
naObiekt |  |  |
nap | nap |  |
naRGB |  |  |
naśladowcy |  |  |
nazwaPliku |  |  |
nazwij |  |  |
nazwy | nazwy |  |
niech |  |  |
niechpr |  |  |
niechws |  |  |
nie |  |  |
nowaKlasa |  |  |
nowy |  |  |
nowyObiekt |  |  |
npw |  |  |
numel | numel |  |
numpow |  |  |
nuta |  |  |
obiekt? |  |  |
obiekty | obiekty |  |
obróć |  |  |
odel | odel |  |
odElementu | odElementu |  |
odkryj |  |  |
określ |  |  |
określone? |  |  |
opcje |  |  |
ostKlawisz |  |  |
ostNazwa |  |  |
ost | ost |  |
oto |  |  |
otwórzDokument |  |  |
pauza |  |  |
pętla |  |  |
pierwotne? |  |  |
pierw | pierw |  |
piszDo |  |  |
pisz |  |  |
piszWiersz |  |  |
piszWPolu |  |  |
plik? |  |  |
pokaż |  |  |
pokażPamięć |  |  |
pokażPrzyciski |  |  |
po |  |  |
postać? |  |  |
potomne |  |  |
powiedz |  |  |
powlecz |  |  |
powtórz |  |  |
poziomKompresji |  |  |
pozMyszy | pozMyszy |  |
prawda |  |  |
prefiksNazwy |  |  |
proc | proc |  |
procedury | procedury |  |
proszęKażdego |  |  |
proszę |  |  |
przedok |  |  |
przejmijZachowanie |  |  |
przejrzyjDokument |  |  |
przemianujPlik |  |  |
przerwij |  |  |
przezroczystość |  |  |
przyciski |  |  |
przyp |  |  |
przypisz |  |  |
przywłaść |  |  |
ps |  |  |
puspos |  |  |
puste? | puste? |  |
pusto |  |  |
pwk |  |  |
pwł |  |  |
pwwł |  |  |
pww |  |  |
redaguj |  |  |
red |  |  |
redpos |  |  |
reszta | reszta |  |
rozmiarPrzycisków |  |  |
rozpos |  |  |
rozprzy |  |  |
równe? | równe? | równe? | równe?
różnica | różnica |  |
rzuć |  |  |
schowajPamięć |  |  |
schowajPrzyciski |  |  |
schowek |  |  |
sin |  |  |
słowo? |  |  |
słowo |  |  |
słuchaj |  |  |
sortuj |  |  |
spb |  |  |
specBłąd |  |  |
specMenu |  |  |
spowolnienie |  |  |
sprz |  |  |
startlos |  |  |
stoper |  |  |
stopMnie |  |  |
stopproc |  |  |
suma | suma |  |
sumaPostaci |  |  |
sumpos |  |  |
systemMetryczny |  |  |
szablonHTML |  |  |
ścieżka |  |  |
tasuj | tasuj |  |
tekst |  |  |
test |  |  |
tg |  |  |
trybKoloru |  |  |
trybKoloruTła |  |  |
trybNachodzenia |  |  |
trybZam |  |  |
twórz | twórz |  |
twórzFolder |  |  |
ukryj |  |  |
ukryte |  |  |
upm | upm |  |
urp |  |  |
uspl |  |  |
us | us | us |
uspwl |  |  |
ustalAtrpos |  |  |
ustalBezKompresji |  |  |
ustal |  |  |
ustalDruk |  |  |
ustalGłos |  |  |
ustalLogo |  |  |
ustalŁadproj |  |  |
ustalNazwęProjektu |  |  |
ustalOpcje |  |  |
ustalPoziomKompresji |  |  |
ustalPozMyszy | ustalPozMyszy |  |
ustalPrefiksNazwy |  |  |
ustalPrzezroczystość |  |  |
ustalRozmiarPrzycisków |  |  |
ustalSpowolnienie |  |  |
ustalStan |  |  |
ustalSzablonHTML |  |  |
ustalŚcieżkę |  |  |
ustalTrybKoloru |  |  |
ustalTrybKoloruTła |  |  |
ustalTrybNachodzenia |  |  |
ustalTrybZam |  |  |
ustalWskaźnikMyszy |  |  |
ustalZdarzenie |  |  |
ustalZlGp |  |  |
ustalZlKierunku |  |  |
ustalZlKoloru |  |  |
ustalZlLw |  |  |
ustalZlNp |  |  |
ustalZlPoz |  |  |
ustalZlPw |  |  |
usuń | usuń | usuń |
usuńDoDna |  |  |
usuńFolder |  |  |
usuńObiekt |  |  |
usuńPlik |  |  |
usuńZachowanie |  |  |
usuńZdarzenie |  |  |
usw |  |  |
uswłaś |  |  |
uswł |  |  |
uszd |  |  |
uwsm |  |  |
war |  |  |
warob |  |  |
warpar |  |  |
wartość |  |  |
weźpar |  |  |
widaćPamięć? |  |  |
większe? | większe? |  |
właściwości | właściwości |  |
właściwość |  |  |
włączWideo |  |  |
wł |  |  |
wpisz |  |  |
wsci | wsci |  |
wspak | wspak |  |
wszystkieProcesy |  |  |
wybierz |  |  |
wybkol |  |  |
wybórGłosu |  |  |
wybórGrubościLinii |  |  |
wybórKoloru |  |  |
wybórObrazu1 |  |  |
wybórObrazu |  |  |
wybórURL |  |  |
wybór |  |  |
wybórWzoruLinii |  |  |
wybórWzorumal |  |  |
wybórWzoruzam |  |  |
wykonaj |  |  |
wykonajProgram |  |  |
wykprog |  |  |
wykwp |  |  |
wynik |  |  |
wy |  |  |
wzorce |  |  |
wznów |  |  |
zaczep |  |  |
zaczepienie |  |  |
zakryte |  |  |
zamknijWideo |  |  |
zaokr |  |  |
zapisz |  |  |
zapiszPostać |  |  |
zapiszTab |  |  |
zapiszTekst |  |  |
zapiszWWW |  |  |
zapuść |  |  |
zastąp | zastąp |  |
zastąpwg |  |  |
zatrzymaj |  |  |
zd |  |  |
zdanie |  |  |
zdarzenia | zdarzenia | zdarzenia |
zdarzenie |  |  |
zdarzenie? |  |  |
zerst |  |  |
zerujStoper |  |  |
zlGp |  |  |
zlKierunku |  |  |
zlKoloru |  |  |
zlLw |  |  |
zlNp |  |  |
zlPoz |  |  |
zlPw |  |  |
złap |  |  |
zmienna? |  |  |
zmienne | zmienne |  |
zmieńMnie |  |  |
zmniejsz |  |  |
znak |  |  |
zniszcz |  |  |
zrobione? |  |  |
zrób |  |  |
zróbZdarzenie |  |  |
zwg |  |  |
zwiększ |  |  |


Przegląd klas pierwotnych - obiekt OknoGłówne

Obiekt OknoGłówne

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

aktywnaStrona |
całyEkran |
ct |
czynneSkróty |
czynnyGłos |
de |
dostępny |
dr | dr
drukrys | drukrys
drukujTekst |
dt |
dzielEkran |
eg |
gdyKomendaGłosowa |
gdyZmianaListyStron |
głosy | głosy
kolMarginesu |
kolż | kolż
komendyGłosowe |
listaStron |
lwt |
maksymalizuj |
minimalizuj |
napoz |
nazwijStronę |
nazwyZdarzeń |
nowaKlasa |
nowaStrona | nowaStrona
nowy |
nowyObiekt |
pokażCzas |
pokażMnie |
pokażNarzędzia |
pokażStronę |
poz |
pozabs |
przywróćWielkośćOkna |
pwo |
rada |
rozmiar |
schowajMnie |
schowajNarzędzia |
skróty |
snarz |
stanMyszy |
stanOkna |
teksty |
ts |
tytuł |
ulwt |
ustalAktywnąStronę |
ustalCzynneSkróty |
ustalCzynnyGłos |
ustalDostępny |
ustalGłosy | ustalGłosy
ustalKolMarginesu |
ustalKomendyGłosowe |
ustalLwt |
ustalMenu |
ustalNazwyZdarzeń |
ustalPozabs |
ustalRadę |
ustalRozmiar |
ustalSkróty |
ustalStanOkna |
ustalTytuł |
ustalWidoczny |
ustalWierszPoleceń |
ustalZachętę |
ustalZachętęCl |
ustalZamrożony |
usuńDoDna |
usuńObiekt |
usuńStronę |
widoczny |
wierszPoleceń |
włącz |
wszystkie |
wszystkiez |
wyłącz |
zachęta |
zachętaCl |
zamrożony |
zmażTekst |
zt |


Przegląd klas pierwotnych - klasa Strona

Klasa Strona

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Obiekty
Procedury klas Strona i Plansza
Tło strony i planszy
Czyszczenie strony i planszy
Początek strony i planszy
Funkcje informujące o stanie strony i planszy

Alfabetyczna lista procedur, słów i zdarzeń

autoAkcja |  |
cs |  |
czynneNarzędzia |  |
czyść |  |
daneElipsy |  |
daneOdcinka |  |
daneOwalu |  |
daneProst |  |
daneProstokąta |  |
daneZamProst |  |
dostępny |  |
drukujMnie | drukujMnie |
elipsaT |  |
elipsaTła |  |
gdyCiągniesz |  |
gdyCs |  |
gdyDwuKlik |  |
gdyKlik |  |
gdyKomendaGłosowa |  |
gdyLewyWciśnięty |  |
gdyLewyZwolniony |  |
gdyŁadujesz |  |
gdyMyszJedzie |  |
gdyMyszNajedzie |  |
gdyMyszZjedzie |  |
gdyPrawyWciśnięty |  |
gdyPrawyZwolniony |  |
gdyŚrodkowyWciśnięty |  |
gdyŚrodkowyZwolniony |  |
gdyTworzysz |  |
gdyWciśnięty1PJ |  |
gdyZwolniony1PJ |  |
grlin | grlin |
grubośćLinii | grubośćLinii |
kollin | kollin |
kolorLinii | kolorLinii |
kolorPunktuTła |  |
kolPktT |  |
kolTła | kolTła |
kolż | kolż | kolż
komendyGłosowe | komendyGłosowe |
ktoNaStronie |  |
lewyGórnyRóg |  |
ładek |  |
ładujEkran |  |
łElipsyT |  |
łukElipsyTła |  |
menuKontekstowe |  |
naabs |  |
naAbsolutne |  |
nachodząceNaPunkt |  |
naekr |  |
naEkran |  |
nakar |  |
naKartezjańskie |  |
naobi |  |
naObiekt |  |
napkt |  |
nazwa |  |
nazwyZdarzeń |  |
obrazTła | obrazTła |
odcinekT |  |
odcinekTła |  |
odmroź |  |
owalT |  |
owalTła |  |
początek | początek |
pozklik |  |
pozMyszy | pozMyszy |
prefiksNazwy |  |
prostokątTła |  |
prostT |  |
punktyT |  |
punktyTła |  |
rada |  |
rod |  |
rozmiar |  |
rozp |  |
rozpylanie |  |
rysowanieOdręczne |  |
stanMyszy |  |
ustalCzynneNarzędzia |  |
ustalDostępny |  |
ustalGrLin | ustalGrLin |
ustalGrubośćLinii | ustalGrubośćLinii |
ustalKolLin | ustalKolLin |
ustalKolorLinii | ustalKolorLinii |
ustalKolTła | ustalKolTła |
ustalKomendyGłosowe | ustalKomendyGłosowe |
ustalKtoNaStronie |  |
ustalMenuKontekstowe |  |
ustalNazwyZdarzeń |  |
ustalObrazTła | ustalObrazTła |
ustalPoczątek | ustalPoczątek |
ustalPozMyszy | ustalPozMyszy |
ustalPrefiksNazwy |  |
ustalRadę |  |
ustalRozmiar |  |
ustalWzLin | ustalWzLin |
ustalWzórLinii | ustalWzórLinii |
ustalZapisTła |  |
wklejObraz |  |
wklejWycinekZPliku |  |
włącz |  |
wszystkie | wszystkie |
wszystkiez | wszystkiez |
wycinekTła |  |
wyłącz |  |
wytnijTło |  |
wzlin | wzlin |
wzórLinii | wzórLinii |
zamalujTło |  |
zamProstT |  |
zamProstTła |  |
zamroź |  |
zamrożony? |  |
zamT |  |
zapisTła |  |
zapiszEkran |  |
zek |  |
zmaż |  |


Przegląd klas pierwotnych - klasa Plansza

Klasa Plansza

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Obiekty
Procedury
Procedury klas Strona i Plansza
Tło strony i planszy
Czyszczenie strony i planszy
Początek strony i planszy
Funkcje informujące o stanie strony i planszy

Alfabetyczna lista procedur, słów i zdarzeń

autoAkcja |  |  |
cs |  |  |
czyść |  |  |
daneElipsy |  |  |
daneOdcinka |  |  |
daneOwalu |  |  |
daneProst |  |  |
daneProstokąta |  |  |
daneZamProst |  |  |
dostępny |  |  |
drukujMnie |  |  |
elipsaTła |  |  |
elipsaT |  |  |
gdyCiągniesz |  |  |
gdyCs |  |  |
gdyDwuKlik |  |  |
gdyKlik |  |  |
gdyLewyWciśnięty |  |  |
gdyLewyZwolniony |  |  |
gdyŁadujesz |  |  |
gdyMyszJedzie |  |  |
gdyMyszNajedzie |  |  |
gdyMyszZjedzie |  |  |
gdyPrawyWciśnięty |  |  |
gdyPrawyZwolniony |  |  |
gdyRuchJoysticka |  |  |
gdyŚrodkowyWciśnięty |  |  |
gdyŚrodkowyZwolniony |  |  |
gdyTworzysz |  |  |
gdyWciśnięty1PJ |  |  |
gdyZwolniony1PJ |  |  |
grlin | grlin |  |
grubośćLinii | grubośćLinii |  |
kollin | kollin |  |
kolorLinii | kolorLinii |  |
kolorPunktuTła |  |  |
kolPktT |  |  |
kolTła1 |  |  |
kolTła2 |  |  |
kolTła | kolTła |  |
kolż | kolż | kolż | kolż
lewyGórnyRóg |  |  |
ładek |  |  |
ładujEkran |  |  |
łElipsyT |  |  |
łukElipsyTła |  |  |
menuKontekstowe |  |  |
naabs |  |  |
naAbsolutne |  |  |
nachodząceNaPunkt |  |  |
naEkran |  |  |
naekr |  |  |
naFront |  |  |
nakar |  |  |
naKartezjańskie |  |  |
naobi |  |  |
naObiekt |  |  |
napkt |  |  |
napoz |  |  |
naTył |  |  |
nazwa |  |  |
nazwyZdarzeń |  |  |
obrazTła | obrazTła |  |
odcinekTła |  |  |
odcinekT |  |  |
odmroź |  |  |
owalTła |  |  |
owalT |  |  |
początek | początek |  |
pokażMnie |  |  |
pozabs |  |  |
pozklik | pozklik |  |
pozMyszy | pozMyszy |  |
poz |  |  |
prefiksNazwy |  |  |
prostokątTła |  |  |
prostT |  |  |
przeciąganie |  |  |
przesuń |  |  |
punktyT |  |  |
punktyTła |  |  |
rada |  |  |
rod |  |  |
rozmiar |  |  |
rozp |  |  |
rozpylanie |  |  |
rysowanieOdręczne |  |  |
schowajMnie |  |  |
stanMyszy |  |  |
ustalDostępny |  |  |
ustalGrLin | ustalGrLin |  |
ustalGrubośćLinii | ustalGrubośćLinii |  |
ustalKolLin | ustalKolLin |  |
ustalKolorLinii | ustalKolorLinii |  |
ustalKolTła1 |  |  |
ustalKolTła2 |  |  |
ustalKolTła | ustalKolTła |  |
ustalMenuKontekstowe |  |  |
ustalNazwyZdarzeń |  |  |
ustalObrazTła | ustalObrazTła |  |
ustalPoczątek | ustalPoczątek |  |
ustalPozabs |  |  |
ustalPozMyszy | ustalPozMyszy |  |
ustalPoz |  |  |
ustalPrefiksNazwy |  |  |
ustalPrzeciąganie |  |  |
ustalRadę |  |  |
ustalRozmiar |  |  |
ustalWidoczny |  |  |
ustalWzlin | ustalWzlin |  |
ustalWzórLinii | ustalWzórLinii |  |
ustalZapisTła |  |  |
widoczny |  |  |
wklejObraz |  |  |
wklejWycinekZPliku |  |  |
włącz | włącz |  |
wszystkie | wszystkie |  |
wszystkiez | wszystkiez |  |
wycinekTła |  |  |
wyłącz | wyłącz |  |
wytnijTło |  |  |
wzlin | wzlin |  |
wzórLinii | wzórLinii |  |
zamalujTło |  |  |
zamProstT |  |  |
zamProstTła |  |  |
zamroź |  |  |
zamrożony? |  |  |
zamT |  |  |
zapisTła |  |  |
zapiszEkran |  |  |
zek |  |  |
zmaż |  |  |


Przegląd klas pierwotnych - klasa PasekNarzędzi

Klasa PasekNarzędzi

Ogólny opis
Ustawienia
Zmienne wspólne
Zmienne prywatne
Zdarzenia
Obiekty
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

dostępny
gdyCiągniesz
gdyDwuKlik
gdyKlik
gdyLewyWciśnięty
gdyLewyZwolniony
gdyŁadujesz
gdyMyszJedzie
gdyMyszNajedzie
gdyMyszZjedzie
gdyObrót
gdyPrawyWciśnięty
gdyPrawyZwolniony
gdyŚrodkowyWciśnięty
gdyŚrodkowyZwolniony
gdyTworzysz
grupa
menuKontekstowe
nastX
nastY
nazwa
nazwyZdarzeń
nowaKlasa
nowy
nowyObiekt
nowyPrzełącznik
nowyPrzycisk
nowySpecPrzycisk
odstęp
pokażMnie
pozklik
prefiksNazwy
priorytet
rada
rozmiar
schowajMnie
stszer
stwys
ustalDostępny
ustalGrupę
ustalMenuKontekstowe
ustalNastX
ustalNastY
ustalNazwyZdarzeń
ustalPrefiksNazwy
ustalPriorytet
ustalRadę
ustalRozmiar
ustalStszer
ustalStwys
ustalWidoczny
ustalWyrównanie
usuńDoDna
usuńObiekt
widoczny
włącz
wszystkiez
wyłącz
wyrównanie


Przegląd klas pierwotnych - klasa Żółw

Klasa Żółw

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury
Żółwie i geometria żółwia
Wiele żółwi

Alfabetyczna lista procedur, słów i zdarzeń

animacja | animacja
azymut |
czcionka | czcionka
dotyk |
elipsa |
faza | faza
font | font
gdyCiągniesz |
gdyDwuKlik |
gdyKlik |
gdyKolizja |
gdyLewyWciśnięty |
gdyLewyZwolniony |
gdyŁadujesz |
gdyMyszJedzie |
gdyMyszNajedzie |
gdyMyszZjedzie |
gdyPrawyWciśnięty |
gdyPrawyZwolniony |
gdyRuchJoysticka |
gdyŚrodkowyWciśnięty |
gdyŚrodkowyZwolniony |
gdyTworzysz |
gdyWciśnięty1PJ |
gdyZwolniony1PJ |
gp |
grubość | grubość
kierunek | kierunek
klatka | klatka
klikprost |
kolpis | kolpis
kolpkt |
kolpos | kolpos
kolzam | kolzam
koło |
kreśl |
kropka |
lewo |
lw |
menuKontekstowe |
nachodzą? |
nachodzące |
nachodząceż |
naFront |
napoz |
naprzód |
naPunkty |
naTył |
naWektory |
nazwa |
nazwyZdarzeń |
noweX |
noweXY |
noweY |
np |
obpos |
odmroź |
odwr |
odwracanie |
oknoŻółwia |
okrąg |
opuść |
opu |
owal |
pisak | pisak
piszTekst |
pkt |
podnieś |
pod |
pokażMnie |
postać | postać
poza? |
pozabs | pozabs
pozklik |
pozMyszy | pozMyszy
poz | poz
pozX | pozX
pozY | pozY
prawo |
prefiksNazwy |
prostokątPostaci |
prostpos |
przeciąganie |
przesuń |
pw |
pż |
rozmiarTekstu |
rysg |
rysuj |
rysujGładko |
schowajMnie |
skalapos | skalapos
skieruj |
sklej |
stanWyjściowy | stanWyjściowy
stempluj |
stemplujObraz |
stylZakresu | stylZakresu
suń |
sż |
ścier |
ścieranie |
tempo |
trybFaz | trybFaz
ufa |
ugp |
ukm |
ukp |
ustalAnimację | ustalAnimację
ustalCzionkę | ustalCzionkę
ustalDotyk |
ustalFazę | ustalFazę
ustalFont | ustalFont
ustalGrubość | ustalGrubość
ustalKierunek | ustalKierunek
ustalKlatkę | ustalKlatkę
ustalKlikprost |
ustalKolPis | ustalKolPis
ustalKolPos | ustalKolPos
ustalKolZam | ustalKolZam
ustalMenuKontekstowe |
ustalNazwyZdarzeń |
ustalPisak | ustalPisak
ustalPostać | ustalPostać
ustalPozabs | ustalPozabs
ustalPoz | ustalPoz
ustalPozX | ustalPozX
ustalPozY | ustalPozY
ustalPrefiksNazwy |
ustalPrzeciąganie |
ustalSkalęPos | ustalSkalęPos
ustalStanWyjściowy | ustalStanWyjściowy
ustalStylZakresu | ustalStylZakresu
ustalTempo |
ustalTrybFaz | ustalTrybFaz
ustalWidoczny | ustalWidoczny
ustalWzórPis | ustalWzórPis
ustalWzórZam | ustalWzórZam
ustalXY |
ustalZakres | ustalZakres
ustalZakwid | ustalZakwid
uwm |
uwp |
w? |
wewnątrz? |
widoczny | widoczny
widoczny? |
wielokąt |
wpiszTekst |
wróć |
ws |
wstecz |
wygładź |
wzórpis | wzórpis
wzórZam | wzórZam
wzp |
zakres | zakres
zakwid | zakwid
zam |
zamaluj |
zamroź |
zamrożony? |
zdjęcie |


Przegląd klas pierwotnych - klasa PoleTekstowe

Klasa PoleTekstowe

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

autoAkcja |
czcionka |
dostępny |
drukujMnie | drukujMnie
edycja |
font |
gdyCiągniesz |
gdyDwuKlik |
gdyKlik |
gdyLewyWciśnięty |
gdyLewyZwolniony |
gdyŁadujesz |
gdyMyszJedzie |
gdyMyszNajedzie |
gdyMyszZjedzie |
gdyPrawyWciśnięty |
gdyPrawyZwolniony |
gdyŚrodkowyWciśnięty |
gdyŚrodkowyZwolniony |
gdyTworzysz |
gdyZmieniasz |
jakoPostać |
kolor |
kolTła |
menuKontekstowe |
naFront |
napoz |
naTył |
nazwa |
nazwyZdarzeń |
odmroź |
pokażMnie |
poz |
pozabs |
pozklik |
pozMyszy | pozMyszy
prefiksNazwy |
przesuń |
przezroczystość |
rada |
rozmiar |
RTF |
schowajMnie |
stałaEdycja |
stempluj |
ustalCzcionkę |
ustalDostępny |
ustalEdycję |
ustalFont |
ustalKolor |
ustalKolTła |
ustalMenuKontekstowe |
ustalNazwyZdarzeń |
ustalPoz |
ustalPozabs |
ustalPozMyszy | ustalPozMyszy
ustalPrefiksNazwy |
ustalPrzezroczystość |
ustalRadę |
ustalRozmiar |
ustalRTF |
ustalStałąEdycję |
ustalWidoczneNarzędzia |
ustalWidoczny |
ustalZawartość |
ustalZaznaczenie |
ustalZaznaczonyTekst |
widoczneNarzędzia |
widoczny |
włącz |
wyłącz |
zamroź |
zamrożony? |
zawartość |
zaznaczenie |
zaznaczonyTekst |


Przegląd klas pierwotnych - klasa Suwak

Klasa Suwak

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

autoAkcja |
dostępny |
gdyCiągniesz |
gdyDwuKlik |
gdyKlik |
gdyLewyWciśnięty |
gdyLewyZwolniony |
gdyŁadujesz |
gdyMyszJedzie |
gdyMyszNajedzie |
gdyMyszZjedzie |
gdyPoZmianie |
gdyPrawyWciśnięty |
gdyPrawyZwolniony |
gdyŚrodkowyWciśnięty |
gdyŚrodkowyZwolniony |
gdyTworzysz |
gdyZmieniasz |
kolTła |
maks |
max |
menuKontekstowe |
min |
naFront |
napoz |
naTył |
nazwa |
nazwyZdarzeń |
odmroź |
pionowo |
pokażMnie |
posuw |
poz |
pozabs |
pozklik |
pozMyszy | pozMyszy
pozycjaSuwadła |
prefiksNazwy |
przesuń |
przezroczystość |
rada |
rozmiar |
rozmiarSuwadła |
schowajMnie |
ustalDostępny |
ustalKolTła |
ustalMaks |
ustalMax |
ustalMenuKontekstowe |
ustalMin |
ustalNazwyZdarzeń |
ustalPionowo |
ustalPosuw |
ustalPoz |
ustalPozabs |
ustalPozMyszy | ustalPozMyszy
ustalPrefiksNazwy |
ustalPrzezroczystość |
ustalRadę |
ustalRozmiar |
ustalRozmiarSuwadła |
ustalWidoczny |
widoczny |
włącz |
wyłącz |
zamroź |
zamrożony? |


Przegląd klas pierwotnych - klasa Przycisk

Klasa Przycisk

Ogólny opis
Przycisk
Przycisk: pozycja i rozmiar
Przycisk: ikona, napis i styl
Przycisk: inne ustawienia
Zmienne wspólne
Działania i zdarzenia
Procedury
Przełącznik: cechy szczególne
Przełącznik: dodatkowe ustawienia
Przełącznik: działania i zdarzenia

Alfabetyczna lista procedur, słów i zdarzeń

aktywneKto |  |
autoAkcja |  |
dostępny |  |
gdyŁadujesz |  |
gdyMyszNajedzie |  |
gdyMyszZjedzie |  |
gdyTworzysz |  |
gdyWciśnięty |  |
gdyZwolniony |  |
grupa |  |
menuKontekstowe |  |
możnaZwolnićWszystkie |  |
mzw |  |
naFront |  |
napis |  |
napoz |  |
naTył |  |
nazwa |  |
nazwyZdarzeń |  |
obraz |  |
odmroź |  |
płaski |  |
pokażMnie |  |
poz |  |
pozabs |  |
pozklik |  |
pozMyszy | pozMyszy | pozMyszy
prefiksNazwy |  |
przełącznik | przełącznik |
przesuń |  |
rada |  |
rozmiar |  |
schowajMnie |  |
styl |  |
tylkoObraz |  |
ustalDostępny |  |
ustalGrupę |  |
ustalMenuKontekstowe |  |
ustalMożnaZwolnićWszystkie |  |
ustalMzw |  |
ustalNapis |  |
ustalNazwyZdarzeń |  |
ustalObraz |  |
ustalPłaski |  |
ustalPoz |  |
ustalPozabs |  |
ustalPozMyszy | ustalPozMyszy | ustalPozMyszy
ustalPrefiksNazwy |  |
ustalPrzełącznik | ustalPrzełącznik |
ustalRadę |  |
ustalRozmiar |  |
ustalStyl |  |
ustalTylkoObraz |  |
ustalWciśnięty |  |
ustalWidoczny |  |
wciśnięty |  |
widoczny |  |
włącz |  |
wyłącz | wyłącz |
zamroź |  |
zamrożony? |  |


Przegląd klas pierwotnych - klasa SpecPrzycisk

Klasa SpecPrzycisk

Ogólny opis
Ustawienia
Zmienne wspólne
Działania i zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

autoAkcja |
dostępny |
gdyKlik |
gdyŁadujesz |
gdyMyszNajedzie |
gdyMyszZjedzie |
gdyNarzędzie |
gdyTworzysz |
gdyWciśnięty |
gdyZwolniony |
jednokrotny |
menuKontekstowe |
naFront |
napis |
napoz |
naTył |
nazwa |
nazwyZdarzeń |
obraz |
odmroź |
płaski |
pokażMnie |
poz |
pozabs |
pozklik |
pozMyszy | pozMyszy
prefiksNazwy |
przesuń |
rada |
rozmiar |
schowajMnie |
styl |
tylkoObraz |
ustalDostępny |
ustalJednokrotny |
ustalMenuKontekstowe |
ustalNapis |
ustalNazwyZdarzeń |
ustalObraz |
ustalPłaski |
ustalPoz |
ustalPozabs |
ustalPozMyszy | ustalPozMyszy
ustalPrefiksNazwy |
ustalRadę |
ustalRozmiar |
ustalStyl |
ustalTylkoObraz |
ustalWciśnięty |
ustalWidoczny |
wciśnięty |
widoczny |
włącz |
wyłącz |
zamroź |
zamrożony? |


Przegląd klas pierwotnych - klasa WWW

Klasa WWW

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

adres
dalej
dostępny
gdyKoniec
gdyŁadujesz
gdyMyszNajedzie
gdyMyszZjedzie
gdyStart
gdyTworzysz
maksymalizuj
maksymalne
menuKontekstowe
naFront
nagłówek
napoz
naTył
nazwa
nazwyZdarzeń
odmroź
pokażMnie
poz
pozabs
prefiksNazwy
przesuń
przywróćWielkośćOkna
pwo
rada
rozmiar
schowajMnie
skróty
start
styl
tytuł
ustalAdres
ustalDostępny
ustalMaksymalne
ustalMenuKontekstowe
ustalNazwyZdarzeń
ustalPoz
ustalPozabs
ustalPrefiksNazwy
ustalRadę
ustalRozmiar
ustalSkróty
ustalStyl
ustalTytuł
ustalWidoczny
ustalWidocznyTytuł
ustalZamrożony
widoczny
widocznyTytuł
włącz
wstecz
wyłącz
zamroź
zamrożony
zamrożony?


Przegląd klas pierwotnych - klasa Odtwarzacz

Klasa Odtwarzacz

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

autoAkcja
dostępny
gdyCiągniesz
gdyDwuKlik
gdyKlik
gdyLewyWciśnięty
gdyLewyZwolniony
gdyŁadujesz
gdyMyszJedzie
gdyMyszNajedzie
gdyMyszZjedzie
gdyPrawyWciśnięty
gdyPrawyZwolniony
gdyŚrodkowyWciśnięty
gdyŚrodkowyZwolniony
gdyTworzysz
gdyZmianaPozGrania
gdyZmianaStanuGrania
graj
krok
krokWstecz
maksymalne
menuKontekstowe
naFront
naKoniec
napoz
naTył
nazwa
nazwaPliku
nazwyZdarzeń
odmroź
pokażMnie
poz
pozabs
pozGrania
pozklik
prefiksNazwy
przerwa
przesuń
przewiń
rada
rozmiar
schowajMnie
skróty
stanGrania
stop
styl
trwanie
tytuł
ustalDostępny
ustalMaksymalne
ustalMenuKontekstowe
ustalNazwaPliku
ustalNazwyZdarzeń
ustalPoz
ustalPozabs
ustalPozGrania
ustalPrefiksNazwy
ustalRadę
ustalRozmiar
ustalSkróty
ustalStanGrania
ustalStyl
ustalTytuł
ustalWidocznePrzyciski
ustalWidoczny
ustalZamrożony
widocznePrzyciski
widoczny
włącz
wyłącz
zamroź
zamrożony
zamrożony?


Przegląd klas pierwotnych - klasa Sieć

Klasa Sieć

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

dostępność
gdyŁadujesz
gdyOdbierzesz
gdyOdbierzeszObiekt
gdyTworzysz
gdyZmienionyStan
nadaj
nadajIZrób
nadajObiekt
nadawca
nazwa
nazwyZdarzeń
odbierzObiekt
połącz
połączony?
port
prefiksNazwy
przekaz
pseudo
pseudonim
rozłącz
serwer
skróty
stan
styl
ustalDostępność
ustalNazwyZdarzeń
ustalPort
ustalPrefiksNazwy
ustalPseudo
ustalPseudonim
ustalSerwer
ustalSkróty
ustalStyl
użytkownicy
wiadomość
wyślij
wyślijIZrób
wyślijObiekt


Przegląd klas pierwotnych - klasa Joystick

Klasa Joystick

Ogólny opis
Ustawienia
Zmienne wspólne
Zdarzenia
Procedury

Alfabetyczna lista procedur, słów i zdarzeń

aktJ
aktywneJoysticki
bum
gdyRuchJoysticka
gdyWciśnięty1PJ
gdyZwolniony1PJ
kob
liczbaOsi
liczbaPrzycisków
lj
martwaStrefaR
martwaStrefaU
martwaStrefaV
martwaStrefaX
martwaStrefaY
martwaStrefaZ
nazwa
numer
odbicie
osie
prefiksNazwy
przycisk1
przycisk32
R
skróty
sterowanyObiekt
U
uruchomEfekt
ustalMartwąStrefęR
ustalMartwąStrefęU
ustalMartwąStrefęV
ustalMartwąStrefęX
ustalMartwąStrefęY
ustalMartwąStrefęZ
ustalPrefiksNazwy
ustalSiłę
ustalSkróty
ustalSterowanyObiekt
V
X
XY
Y
Z
zakresR
zakresU
zakresV
zakresX
zakresY
zakresZ
zatrzymajEfekt


Baza: Ogólny opis

To najogólniejsza klasa. Zawiera definicje prawie wszystkich najczęściej używanych procedur pierwotnych. Jest przodkiem wszystkich obiektów. Każda procedura i zmienna zdefiniowana w klasie Baza jest dostępna dla wszystkich innych klas i jednostek. Tak więc, jest to odpowiednie miejsce dla globalnych procedur, właściwości i globalnych zmiennych.

Po napisaniu:

? nowy "Baza [ … ]

powstaje nowy obiekt baza1, którego miejscem jest OknoGłówne, nie mający żadnych standardowych ustawień ani zdarzeń. Na liście ustawień (lub później) możesz utworzyć prywatne bądź wspólne zmienne nowego obiektu, możesz zdefiniować jego procedury itp.

Jeśli chcesz utworzyć jednostkę klasy Baza na planszy p1, powinieneś napisać:

? p1'nowy "Baza [ … ]

Aktualną treść klasy Baza (wraz z globalnymi zmiennymi i właściwościami) możesz obejrzeć w jej dialogu Zmień - by go otworzyć, napisz w wierszu poleceń:

? Baza'zmieńMnie

By obejrzeć jednostkę baza1:

  • kliknij przycisk Pamięć na pasku narzędzi i dwukrotnie baza1, albo
  • wpisz w wierszu poleceń: baza1'zmieńMnie


Baza: ustawienia

Nie ma żadnych standardowych ustawień klasy Baza. Natomiast można dodawać prywatne i wspólne zmienne, niestandardowe zdarzenia, procedury itd.

Trzeba jednak pamiętać, że wszystkie klasy pierwotne (takie jak Żółw, PoleTekstowe itd.) są potomne od klasy Baza i mogą mieć własne standardowe ustawienia.

? pokaż ż1'jest? "Żółw
prawda
? pokaż ż1'jest? "Baza
prawda


Baza: Zmienne wspólne

bezKompresji
ładproj
nazwaProjektu
poziomKompresji
prefiksNazwy
przezroczystość
szablonHTML
trybKoloru
trybKoloruTła
trybNachodzenia
trybZam

Klasa Baza ma zmienne wspólne, które są dostępne dla wszystkich obiektów. Dla każdej zmiennej wspólnej istnieje funkcja (o identycznej nazwie), która daje wartość tej zmiennej. Dla każdej zmiennej wspólnej istnieje także polecenie (zwykle o identycznej nazwie, poprzedzonej przedrostkiem ustal), które nadaje zmiennej określoną wartość. Na przykład funkcja trybZam daje wartość zmiennej trybZam, a polecenie ustalTrybZam nadaje wartość zmiennej trybZam.

Uwaga:

Bieżące ustawienia klasy Baza nie są zapisywane wraz z projektem. Oznacza to, że jeśli zmienisz albo dodasz nowe zmienne lub procedury, nie zostaną one zapisane. Jeśli chcesz, aby były one trwale dostępne w Twoim projekcie, musisz je zmodyfikować albo utworzyć w procedurze starter, na przykład za pomocą polecenia Baza'niechws "zlKierunku [0 180]. W przypadku, gdy chcesz, aby były one dostępne dla innych projektów, musisz umieścić odpowiednie polecenia w pliku inicjującym .INI.

Zmienna | Opis
bezKompresji | Jeśli ma wartość prawda, bieżąca wartość zmiennej poziomKompresji jest ignorowana i w czasie zapisywania nie stosuje się kompresji. Standardową wartością jest fałsz.
ładproj Wartość tej zmiennej jest automatycznie ustalana podczas uruchamiania. Jej wartością jest:
  • [], gdy aplikacja została wywołana bez parametru określającego nazwę projektu,
  • nazwa projektu, gdy aplikacja została wywołana z parametrem określającym nazwę otwieranego projektu.
nazwaProjektu | Zawiera bieżącą nazwę projektu. Jeżeli nazwa projektu jest nieokreślona, wartością zmiennej jest słowo puste. Po każdym zapisaniu projektu, wartość zmiennej jest odpowiednio modyfikowana.
poziomKompresji Wartość zmiennej określa poziom kompresji podczas zapisu plików typu .LGF oraz .IMP. Dla wartości:
  • 0 - nie stosuje się kompresji,
  • 1 - szybka, ale słaba kompresja,
  • 2 - normalna kompresja,
  • 3 - powolna, ale silna kompresja.

Domyślną wartością jest 1. Wartość jest ignorowana, gdy zmienna bezKompresji ma wartość prawda.
prefiksNazwy | Przedrostek używany przy tworzeniu nowej jednostki klasy Baza.
przezroczystość Jej wartość decyduje o tym, czy w obrazie uzyskanym jako wynik funkcji wycinekTła lub zdjęcie będą fragmenty przezroczyste oraz określa pozycję zaczepienia. Dla wartości:
  • 0 - wszystkie fragmenty obrazu mające kolor tła strony lub planszy będą przezroczyste. Zaczepienie będzie w środku obrazu,
  • 1 - żaden fragment obrazu nie będzie przezroczysty. Zaczepienie będzie w środku,
  • 2 - wszystkie fragmenty obrazu mające kolor tła strony lub planszy będą przezroczyste. Zaczepienie będzie w lewym górnym rogu,
  • 3 - żaden fragment obrazu nie będzie przezroczysty. Zaczepienie będzie w lewym górnym rogu.

Domyślną wartością jest 0.
szablonHTML | Określa szablon HTML projektu zapisywanego jako strona WWW.
trybKoloru Określa format opisu koloru, np. będącego wynikiem funkcji kolpis. Dla wartości:
  • 0 - szesnaście podstawowych kolorów reprezentują liczby od 0 do 15, inne kolory są reprezentowane przez kod RGB.

    ? ustalKolPis "czerwony8
    ? pokaż kolpis
    [255 104 104]
    ? ustalKolPis "szary9
    ? pokaż kolpis
    7

  • 1 - wszystkie kolory z palety są reprezentowane jako kolory Logo, pozostałe jako kod RGB.
  • 2 - wszystkie kolory są reprezentowane jako kod RGB:
    ? ustalKolPis "szary9
    ? pokaż kolpis
    [192 192 192]

Domyślną wartością jest 1.
trybKoloruTła | Jeśli wartością jest prawda, to polecenie ustalKolTła powoduje zamalowanie strony lub planszy na jeden z 16 podstawowych kolorów, najbliższy kolorowi danemu jako argument polecenia.
trybNachodzenia Określa w jaki sposób rozstrzyga się, czy żółwie nachodzą na siebie:
  • dla wartości 0 - żółwie nachodzą na siebie, gdy dwie elipsy wpisane w prostokąty przedstawiające żółwie mają niepustą część wspólną,
  • dla wartości 1 - żółwie nachodzą na siebie, gdy dwa prostokąty przedstawiające żółwie mają niepustą część wspólną.

Domyślną wartością jest 0.
trybZam

Określa tryb zamalowywania dla wszystkich aktywnych żółwi. Domyślną wartością jest 0.


Baza: Zmienne zakresu losowości

zlKierunku
zlKoloru
zlNp
zlLw
zlGp
zlPoz
zlPw

Argumentem wielu poleceń może być wartość losowa, zwracana przez funkcję jld, np. ustalKolPis jld lub prawo jld. Dla każdego z tych poleceń określony jest zbiór wartości możliwych do wylosowania, np. prawo jld obróci żółwia o losowy kąt z zakresu od 1 do 90 stopni. Ten zbiór wartości można przedefiniować poprzez zmianę odpowiedniej zmiennej wspólnej klasy Baza, np.:

? Baza'niechws "zlKoloru 2
? Baza'niechws "zlPw [90 270]

Uwaga:

Bieżące ustawienia klasy Baza nie są zapisywane wraz z projektem. Oznacza to, że jeśli zmienisz albo dodasz nowe zmienne lub procedury, nie zostaną one zapisane. Jeśli chcesz, aby były one trwale dostępne w Twoim projekcie, musisz je zmodyfikować albo utworzyć w procedurze starter, na przykład za pomocą polecenia Baza'niechws "zlKierunku [0 180]. W przypadku, gdy chcesz, aby były one dostępne dla innych projektów, musisz umieścić odpowiednie polecenia w pliku inicjującym .INI.

Zmienna | Dotyczy procedur… | Opis
zlKierunku ustalKierunek, skieruj Wartością tej zmiennej jest lista [kąt1 kąt2], wylosowany zostanie kąt z przedziału od kąt1 do kąt2.

Domyślną wartością jest [0 359].
zlKoloru ustalKolPis, ustalKolZam, ustalKolMal, ustalKolTła, ustalKolorLinii, ustalKolLin Wartością tej zmiennej jest liczba całkowita N:
  • jeśli jest równa 1, to wylosowany zostanie kolor czarny albo biały.
  • jeśli jest pomiędzy 2 i 15, to wylosowany zostanie jeden z podstawowych kolorów, o numerze od 0 do N.
  • jeśli jest większa od 15, to wylosowany zostanie jeden z kolorów dostępnej palety.

Możliwe jest także, aby wartość zmiennej była listą kolorów. Wówczas wylosowany zostanie kolor z tej listy, np.:
[szary2 szary3 szary4 szary5]
[7 czarny czerwony3 [10 12 1]]
[[jld 0 0][0 jld 0][0 0 jld]]
zlNp naprzód, np, wstecz, ws

?Baza'niechws "zlNp [72 80]
?powtórz 1500[np jld wróć skieruj jld]
?Baza'niechws "zlNp 80
?cs
?powtórz 1500[np jld wróć skieruj jld]

 Wartością tej zmiennej jest liczba całkowita max lub lista [min max]. Polecenie np jld lub ws jld przesunie żółwia o losową liczbę kroków, odpowiednio: od 0 do max, albo od min do max. Domyślną wartością jest [1 100].
zlLw | lewo, lw | Wartością tej zmiennej jest lista [kąt1 kąt2]. Polecenie lw jld obróci żółwia w lewo o losowy (całkowity) kąt od kąt1 do kąt2. Domyślną wartością jest [1 90].
zlGp | ustalGrubość, ustalGp, ustalGrubośćLinii, ustalGrLin | Wartością tej zmiennej jest lista [gr1 gr2], gdzie gr1, gr2 są liczbami naturalnymi. Wylosowana zostanie grubość z podanego przedziału. Domyślną wartością jest [1 20].
zlPoz ustalPoz, napoz, ustalPozabs, noweXY, ustalXY, noweX, ustalPozX, noweY, ustalPozY

?pod ustalKolPis "czarny
?Baza'niechws "zlPoz [55 25]
?powtórz 15000[napoz jld pkt]
?ustalKolPis "ciemnoniebieski
?Baza'niechws "zlPoz 40
?powtórz 15000[napoz jld pkt]

 Wartość tej zmiennej określa minimalną odległość od krawędzi strony lub planszy podczas losowania. Jest liczbą lub listą [liczba1 liczba2] (liczba1 określa minimalną odległość od pionowej krawędzi, a liczba2 - od poziomej krawędzi).

Domyślną wartością jest 10.
zlPw | prawo, pw | Wartością tej zmiennej jest lista [kąt1 kąt2]. Polecenie pw jld obróci żółwia w prawo o losowy (całkowity) kąt od kąt1 do kąt2. Domyślną wartością jest [1 90].


Baza: zmienne globalne

Jeśli utworzymy zmienną globalną, jest ona wyświetlana w oknie pamięci. Po podwójnym kliknięciu w dowolny element grupy Zmienne globalne, otworzy się okno Zmień Baza, gdzie można dodawać nowe zmienne i zmieniać wartości już istniejących.


Baza: zdarzenia

Klasa Baza nie ma własnych zdarzeń. Jednakże zdefiniowane jest standardowe zdarzenie gdyPrawyWciśnięty, które dziedziczą wszystkie obiekty. Powoduje ono wyświetlenie menu kontekstowego (dotyczy to obiektów, które nie są zamrożone i mają zdefiniowaną zmienną menuKontekstowe).


OknoGłówne: ogólny opis

OknoGłówne jest jednostką pierwotnej klasy Okno i nie można go użyć do tworzenia dodatkowych okien. Jest jedyną jednostką klasy Okno. Zawiera pasek menu, pasek narzędzi i przybornik, stronę lub strony używane do rysowania i budowania projektów, a także ekran tekstowy wraz z wierszem poleceń.

Uwaga:

  • Można dodawać paski narzędziowe w OknieGłównym.
  • W OknieGłównym widoczna jest tylko jedna strona - jej nazwa jest wartością funkcji aktywnaStrona.
  • Strony można dodawać albo usuwać, ale jeśli jest tylko jedna strona - nie można jej usunąć.
  • Nie można usunąć OknaGłównego.
  • Nie można użyć OknaGłównego jako prototypu do tworzenia nowych obiektów (zobacz tworzenie nowych jednostek).

OknoGłówne jest domyślnym adresatem poleceń wpisywanych w wierszu poleceń. Jednak trzeba wiedzieć, że są też sposoby kierowania poleceń do innych obiektów.


OknoGłówne: ustawienia

aktywnaStrona; ustalAktywnąStronę | rozmiar; ustalRozmiar
czynneSkróty; ustalCzynneSkróty | skróty; ustalSkróty
czynnyGłos; ustalCzynnyGłos | stanOkna; ustalStanOkna
dostępny; ustalDostępny | tytuł; ustalTytuł
głosy; ustalGłosy | widoczny; ustalWidoczny
kolMarginesu; ustalKolMarginesu | wierszPoleceń; ustalWierszPoleceń
poz; ustalPoz; napoz | zachęta; ustalZachętę
pozabs; ustalPozabs | zachętaCl; ustalZachętęCl
rada; ustalRadę | zamrożony; ustalZamrożony

Poniższe ustawienia służą do odczytywania i modyfikowania właściwości OknaGłównego. Z każdym ustawieniem związana jest para odpowiednich procedur pierwotnych - funkcja, która daje wartość ustawienia i polecenie, które ją zmienia. Na przykład, dla ustawienia kolMarginesu - istnieje funkcja kolMarginesu, a także polecenie ustalKolMarginesu, które wymaga jednej danej - koloru; tak więc można napisać: ustalKolMarginesu "czerwony5.

Ustawienie | Wartość | Opis
aktywnaStrona słowo Wartością tego ustawienia jest nazwa strony widocznej w OknieGłównym. By pokazać inną stronę, używamy polecenia

ustalAktywnąStronę nazwa lub polecenia pokażStronę nazwa lub klikamy ikonę strony na pasku narzędzi lub piszemy nazwę strony w wierszu poleceń.

? pokaż aktywnaStrona
s1
? ustalAktywnąStronę "s2
czynneSkróty logiczna Domyślną wartością jest prawda. Jeśli ma wartość fałsz, skróty klawiszowe wszystkich obiektów są wyłączone.

Alternatywnym sposobem zmiany wartości tego ustawienia jest skorzystanie z Opcje / Skróty.
czynnyGłos logiczna Domyślną wartością jest prawda. Jeśli ma wartość fałsz, komendy głosowe są wyłączone.

Alternatywnym sposobem zmiany wartości tego ustawienia jest skorzystanie z Opcje / Głosy.
dostępny logiczna Domyślną wartością jest prawda. Jeśli ma wartość fałsz, to rozmiarów OknaGłównego nie można zmieniać za pomocą myszy, a ponadto nie reaguje ono na zdarzenia gdyKlik ani gdyMyszNajedzie itd. Nie można kliknąć żadnego przycisku na pasku narzędzi ani otworzyć żadnego menu. Jednak wszystkie aktywne procesy są kontynuowane. Tak więc można zablokować dostęp do OknaGłównego za pomocą myszy i klawiatury:

? ustalDostępny "fałsz
? po 5000 [ustalDostępny "prawda]
głosy | lista głosów | Wartością są aktualne komendy głosowe OknaGłównego. Domyślną wartością jest [].
kolMarginesu kolor Jeśli strona jest mniejsza niż obszar roboczy OknaGłównego, to wartością jest kolor marginesu wokół strony.

Domyślną wartością, która powoduje przyjęcie ustawień Windows, jest [].

? ustalKolMarginesu "jasnoniebieski
poz | punkt | Współrzędne bezwzględne lewego górnego rogu OknaGłównego. Punkt [0 0] określa lewy górny róg ekranu. Dla OknaGłównego wartość poz jest taka sama, jak pozabs.
pozabs | punkt | Współrzędne bezwzględne lewego górnego rogu OknaGłównego. Punkt [0 0] określa lewy górny róg ekranu. Dla OknaGłównego wartość pozabs jest taka sama, jak poz.
rada | tekst | Wartością jest dowolny tekst pojawiający się, gdy kursor myszy znajdzie się nad obszarem roboczym OknaGłównego. Domyślną wartością jest słowo puste.
rozmiar | [ n n ] | Para liczb określająca szerokość i wysokość OknaGłównego, razem z paskiem tytułu i krawędziami.
skróty | lista skrótów | Określa skróty klawiszowe OknaGłównego. Domyślną wartością jest [] - brak skrótów.
stanOkna liczba Jego wartością jest stan okna.

Polecenie ustalStanOkna z parametrem:

  • 0 lub 3 jest równoważne poleceniu pwo,
  • 1 lub 4 jest równoważne poleceniu minimalizuj,
  • 2 jest równoważne poleceniu maksymalizuj,
  • 5 jest równoważne poleceniu całyEkran.
tytuł | tekst | Określa tekst wyświetlany w pasku tytułu OknaGłównego.
widoczny | logiczna | Domyślną wartością jest prawda. Jeśli ma wartość fałsz, to OknoGłówne jest zminimalizowane.
wierszPoleceń logiczna Domyślną wartością jest prawda. Jeśli ma wartość fałsz, wiersz poleceń jest wyłączony. Nie można w nim wpisywać poleceń, ale jest on widoczny i polecenie cl przyjmuje wprowadzane dane

Alternatywnym sposobem zmiany wartości tego ustawienia jest skorzystanie z Opcje / Wiersz poleceń.
zachęta | Znak zachęty wiersza poleceń OknaGłównego. Domyślną wartością jest ?.
zachętaCl | tekst | Znak zachęty polecenia CL OknaGłównego. Domyślną wartością jest :.
zamrożony | logiczna | Domyślną wartością jest fałsz. Jeśli ma wartość prawda, to całe OknoGłówne i wszystkie jego obiekty są zamrożone.


OknoGłówne: zmienne wspólne

Okno główne ma tylko jedną zmienną tego typu. Do odczytania jej wartości służy funkcja nazwyZdarzeń,

a do modyfikowania - polecenie ustalNazwyZdarzeń.

Zmienna Opis
nazwyZdarzeń
 Wartością jest lista nazw zdarzeń, która pojawia się w dialogu Dodaj Zdarzenie (po kliknięciu przycisku Dodaj na zakładce Zdarzenia w dialogu Zmień mnie). Domyślną wartością dla okna głównego jest lista [gdyTworzysz gdyŁadujesz gdyMyszNajedzie gdyMyszZjedzie gdyZmianaListyStron gdyKomendaGłosowa gdyZamykasz].


OknoGłówne: zdarzenia

Okno główne rozpoznaje siedem zdarzeń, wśród nich dwa specjalne: gdyZmianaListyStron i gdyKomendaGłosowa.

Oto pełna lista standardowych zdarzeń rozpoznawanych przez okno główne:

[gdyKomendaGłosowa gdyŁadujesz gdyMyszNajedzie gdyMyszZjedzie gdyTworzysz gdyZamykasz gdyZmianaListyStron]

Zdarzenie | Opis
gdyKomendaGłosowa | Funkcjonuje pod warunkiem, że ustawienie głosy okna głównego nie jest listą pustą. Zachodzi, gdy zostanie rozpoznana fraza z menu głosy. Wówczas wywoływany jest autonomiczny proces zdarzenia. Jeżeli definicja reakcji na rozpoznaną frazę jest listą pustą [], to zostanie wywołane zdarzenie gdyKomendaGłosowa. Treść procedury obsługi zdarzenia może używać lokalnej zmiennej :komendaGłosowa - jej bieżącą wartością jest zawsze ostatnio rozpoznana fraza.
gdyZmianaListyStron | Zachodzi, gdy lista stron okna głównego jest modyfikowana, tzn. nowa strona jest dodawana, następuje zmiana nazwy strony lub strona jest usuwana.


OknoGłówne: procedury

całyEkran | pokażMnie
drukRys; dr | pokażNarzędzia
drukujTekst; dt | pokażStronę
dzielEkran; de | pwo
eg | schowajMnie
listaStron | schowajNarzędzia; snarz
lwt | teksty; ts
maksymalizuj | ustalLwt; ulwt
minimalizuj | ustalMenu
nazwijStronę | włącz
nowaStrona | wyłącz
pokażCzas | zmażTekst; zt

Niektóre polecenia i funkcje są traktowane przez obiekty okna głównego w specjalny sposób. Kiedy użyjemy takiego polecenia, będzie ono przekazane do aktywnej strony i przyjmie swą wartość od niej. Te polecenia to: czyść, kolTła, kolż, komendyGłosowe, lewyGórnyRóg, ładujEkran, nachodząceNaPunkt, początek, ustalKolTła, ustalKomendyGłosowe, ustalPoczątek, wklejObraz, wszystkie, wszystkiez, wycinekTła, zapiszEkran i zmaż.

Ich dokładniejszy opis znajduje się w opisie klas Strona i Plansza.

Oto lista pozostałych procedur rozpoznawanych przez okno główne:

Procedura | Typ | Opis
całyEkran P Powoduje zmianę rozmiarów okna graficznego i okna tekstowego tak, aby wypełniały cały ekran. Nie jest wyświetlany ani tytuł, ani menu. W celu przywrócenia domyślnego układu poszczególnych elementów okna używamy polecenia maksymalizuj.

Alternatywną metodą zmiany rozmiarów okna graficznego jest użycie opcji Widok / Cały ekran w głównym menu.
drukRys opcja
(drukRys opcja prostokąt )
Skrót:
dr 		P Drukuje zawartość aktywnej strony. Pierwszy parametr, opcja, określa ustawienia drukowania. Jego wartości mogą być następujące:
  • [] – drukowanie będzie nadzorowane przez domyślne ustawienia drukarki w systemie Windows. Nie pojawią się żadne dodatkowe pytania i nie będzie możliwości zmiany ustawień.
  • prawda – przed rozpoczęciem drukowania będzie otwarte okienko dialogowe, gdzie użytkownik będzie mógł dokonać zmian ustawień drukowania, podobnie jak po wybraniu opcji Drukuj menu Plik.
  • fałsz – ustawienia drukowania będą odpowiadać ustawieniom używanym najczęściej.

Jeśli polecenie będzie wywołane tylko z jednym parametrem, to będzie wydrukowana cała strona. Jeśli z dwoma - to tylko wybrany prostokąt.

Alternatywną metodą drukowania jest wybranie opcji Plik / Drukuj z menu.
drukujTekst opcja
Skrót:
dt 		P Drukuje zawartość okna tekstowego (z pełną historią poleceń wprowadzonych w wierszu poleceń). Pierwszy parametr, opcja, określa ustawienia drukowania (identycznie jak w drukRys).
dzielEkran
Skrót:
de 		P Dzieli okno główne (pod paskami narzędzi), aby pokazać jednocześnie zarówno ekran graficzny (w górnej części), jak i ekran tekstowy (w dolnej części). Zawartość ekranu graficznego nie jest zmieniana, nawet przy częściowym zasłonięciu przez okno tekstowe. Zawartość ekranu tekstowego nie jest zmieniana – pokazuje wiersz poleceń i kilka ostatnio wydanych poleceń.
eg | P | Okno główne (pod paskami narzędzi) będzie zawierać jedynie ekran graficzny. Ekran tekstowy nie będzie wyświetlany, ale będzie aktywny (oznacza to, że zostaną zapamiętane i uruchomione wszystkie polecenia wpisane z klawiatury).
listaStron | F | Lista wszystkich aktualnie istniejących stron okna głównego, w chronologicznej kolejności ich utworzenia
lwt | P | Liczba (całkowita) linii wyświetlanych na ekranie tekstowym, o ile pracujemy w trybie dzielEkran, tj. gdy oba ekrany okna głównego są wyświetlane. Zwykle z zakresu od 2 do 68. Dla zmiany, należy użyć ustalLwt.
maksymalizuj | P | Okno główne wypełnia cały dostępny ekran monitora. Dla przywrócenia poprzednich rozmiarów i pozycji, należy użyć pwo.
minimalizuj | P | Minimalizuje okno główne do ikony.
nazwijStronę słowo | P | Zmienia nazwę aktywnej strony.
nowaStrona
(nowaStrona słowo )

P Tworzy nową, pustą stronę. Jeśli zostanie wywołane z parametrem, to będzie on nazwą strony. W przeciwnym przypadku nazwa strony powstanie poprzez wzięcie wartości zmiennej wspólnej prefiksNazwy klasy Strona i dołączenie do niej odpowiedniej liczby.

Dla utworzonej strony, na pasku narzędzi automatycznie tworzy się nowa ikona. Utworzona strona wyświetla się w oknie głównym i staje się stroną aktywną.
pokażCzas logiczna P Wywołanie pokażCzas "prawda włącza mechanizm wypisujący na ekranie tekstowym czas potrzebny dla wykonania poleceń wpisanych w wierszu poleceń. Dla wyłączenia tego mechanizmu, należy napisać pokażCzas "fałsz.

? pokażCzas "prawda
czas:0.000
? powtórz 360 [np 1 pw 1]
czas:0.089
? powtórz 10
    [powtórz 360 [np 1 pw 1] lw 36]
czas:0.888
? pokażCzas "fałsz
pokażMnie | P | Powoduje, że okno będzie ponownie wyświetlone na ekranie.
pokażNarzędzia | P | To samo, co narzędzia'pokażMnie.
pokażStronę słowo | P | Wyświetla stronę o nazwie słowo. To samo, co ustalAktywnąStronę "słowo.
pwo | P | Przywraca oknu poprzedni rozmiar. To samo, co wyzerowanie ustawienia stanOkna okna głównego.
schowajMnie | P | Minimalizuje okno do ikony.
schowajNarzędzia
Skrót:
snarz 		P To samo, co narzędzia'schowajMnie.
teksty
Skrót:
ts 		P Okno główne (pod paskami narzędzi, o ile wyświetlone) będzie zawierać jedynie ekran tekstowy. Aktualna zawartość ekranu graficznego nie będzie zgubiona, choć będzie przesłonięta przez ekran tekstowy, tj. będzie nadal aktywna i żółwie mogą na niej rysować itp.
ustalLwt liczba

Skrót:

ulwt

 P Ustala liczbę wierszy wyświetlanych na ekranie tekstowym o ile okno główne jest w trybie dzielEkran. Parametr jest liczbą całkowitą z zakresu od 2 do 68.

Dla niektórych wartości parametru spowoduje to przesłonięcie zawartości ekranu graficznego, ale nigdy nie zmieni jego zawartości. Dla poznania aktualnej liczby linii, należy użyć lwt.

Alternatywną metodą zmiany wielkości okna tekstowego jest przeciągnięcie jego górnej krawędzi za pomocą myszy.
ustalMenu menu | P | Określa wygląd menu okna głównego. Pamiętaj, że przy wyborze opcji z menu, aktywnym adresatem jest właśnie okno główne.
włącz | P | To samo, co ustalDostępny "prawda (dla okna głównego).
wyłącz | P | To samo, co ustalDostępny "fałsz (dla okna głównego).
zmażTekst
Skrót:
zt 		P Czyści ekran tekstowy, wyświetla znak zachęty w lewym górnym rogu ekranu tekstowego i umieszcza za nim kursor.

Bieżąca postać znaku zachęty jest zapamiętana w ustawieniu zachęta. Aby ją zmienić, użyj ustalZachętę. Aby określić liczbę linii ekranu tekstowego, użyj ustalLwt.


Strona: ogólny opis

Projekt może zawierać jedną lub więcej stron. Strona jest tym miejscem, w którym funkcjonują wszystkie składniki projektu. Możesz:

  • umieszczać na niej żółwie, którymi możesz poruszać i za pomocą których możesz rysować, pisać itd.,
  • umieszczać obrazy w tle strony,
  • tworzyć na niej i używać specjalnych obszarów roboczych, zwanych planszami (mogą one zmieniać swoje położenie, przesłaniać, zmieniać rozmiar, a także mieć własne żółwie i inne obiekty),
  • osadzać na niej przyciski (wywołujące różne akcje), specjalne przyciski, suwaki, paski narzędzi,
  • osadzać na niej inne widoczne obiekty, np. pola tekstowe, odtwarzacze, przeglądarki www, obiekty sieciowe

Podczas otwierania aplikacji, już na początku, środowisko zawiera jedną stronę, nazwaną s1, z jednym żółwiem. Możemy tworzyć nowe strony w jeden z następujących sposobów:

  • klikając przycisk Nowa strona w narzędziach,
  • używając polecenia nowaStrona bez parametrów lub z jednym (nieobowiązkowym) parametrem - nazwą tworzonej strony (np. nowaStrona "nazwa),
  • używając standardowego polecenia utworzenia nowego obiektu (np. nowy "Strona [ … ustawienia … ] lub (nowyObiekt "Strona ustawienie wartość ustawienie wartość … )).

Po kliknięciu prawym przyciskiem myszy na stronie i wybraniu Zmień …, pojawi się dialog Zmień mnie. Pozwala on określić radę (podpowiedź) dla strony, kolor tła, rozmiar i inne ustawienia strony. W tym dialogu możesz też określić sposób reakcji strony na poszczególne zdarzenia, własne zmienne strony i jej procedury. Na przykład, jeśli chcesz zmienić rozmiar strony, to możesz zrobić to w dialogu Zmień, bądź wydać polecenie s1'ustalRozmiar [480 320]; jeśli chcesz zmienić nazwę strony, to też możesz zrobić to w dialogu Zmień, bądź użyć polecenia nazwijStronę.

Jeśli w projekcie używasz wielu stron, to w celu sprawdzenia nazwy aktualnie widocznej strony - przesuń kursor myszy na ikonę strony znajdującą się na końcu paska narzędzi),

Alternatywnie możesz użyć funkcji aktywnaStrona. Dla uzyskania listy nazw wszystkich stron, użyj funkcji listaStron.

Jeśli projekt ma wiele stron, to w celu wyświetlenia innej (niż aktualnie widoczna) strony, tj. przełączenia strony, możesz skorzystać z następujących możliwości:

  • kliknąć jej ikonę w pasku narzędzi,
  • użyć nazwy strony jako bezparametrowego polecenia (zależy to od autoAkcja zdefiniowanego dla strony, patrz dalej),
  • użyć polecenia pokażStronę z parametrem będącym nazwą strony do wyświetlenia,
  • użyć polecenia ustalAktywnąStronę dla okna głównego z parametrem będącym nazwą strony do wyświetlenia.

W celu skasowania strony możesz:

  • kliknąć w obrębie strony prawym przyciskiem myszy, a następnie z menu kontekstowego wybrać opcję Usuń, albo
  • użyć polecenia usuńStronę z jednym parametrem - nazwą strony do usunięcia.

Jeśli jest tylko jedna strona, to nie można jej usunąć.

Ten projekt ma tylko jedną stronę. Na niej jest wiele żółwi. W centralnej części widać dużą planszę z jej własnym tłem i żółwiami. Wszystkie przyciski są umieszczone na innej planszy - czymś w rodzaju centrum sterowania projektu.

Jeśli nowa strona ma lub dziedziczy zdarzenie gdyCs, to zachodzi ono także bezpośrednio po jej utworzeniu. Przykładowo, możesz określić zdarzenie gdyCs dla strony s1 następująco (albo bezpośrednio w dialogu Zmień mnie):

? s1'ustalZdarzenie "gdyCs [wklejObraz "Alpy.JPG [styl rozciągnij]]

Dla każdej strony możesz także zdefiniować komendyGłosowe. Możesz zrobić to w dialogu Zmień mnie dla danej strony lub używając poleceń komendyGłosowe i ustalKomendyGłosowe.

Na przykład:

? ustalKomendyGłosowe [lewo [lw 90]
                       prawo [pw 90]
                       naprzód [np 20 + losowa 50]
                       [gruby pisak] [ugp 5]
                       [cienki pisak] [ugp 1]]

Jeśli system rozpoznawania mowy dopasuje usłyszany dźwięk do jednej z fraz, to wykona się odpowiednie polecenie jako równoległy niezależny proces - z adresatem będącym tą samą stroną dla aktywnych obiektów wziętych z listy ktoNaStronie. W takich sytuacjach będzie wywołane zdarzenie gdyKomendaGłosowa dla strony.

Pamiętaj, że polecenia aktywnaStrona, listaStron, nazwijStronę, pokażStronę i usuńStronę są poleceniami klasy okno główne.


Strona: ustawienia

dostępny; ustalDostępny
grubośćLinii; grlin; ustalGrubośćLinii; ustalGrlin
kolorLinii; kollin; ustalKolorLinii; ustalKolLin
kolTła; ustalKolTła
komendyGłosowe; ustalKomendyGłosowe
ktoNaStronie; ustalKtoNaStronie
nazwa
obrazTła; ustalObrazTła
początek; ustalPoczątek
rada; ustalRadę
rozmiar; ustalRozmiar
wzórLinii; wzlin; ustalWzórLinii; ustalWzlin

Tu zamieszczony jest spis ustawień, które mogą być używane w liście ustawień: podczas tworzenia strony za pomocą nowy "Strona [ … ], bądź później - dla sprawdzenia lub zmiany ustawień strony. Dla każdego z ustawień (z wyjątkiem nazwa, patrz niżej) dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla ustawienia mówiącego o kolorze tła są to: bezparametrowa funkcja kolTła i polecenie ustalKolTła z jednym parametrem - kolorem (lub losowym kolorem). Można więc wykonać:

? s1'ustalKolTła "jasnoczerwony
lub

? ustalKolTła "jasnoczerwony5

(będzie przesłane do okna głównego, które prześle do strony)
? proszę "s2 [ustalRozmiar rozmiar + [50 -50]]

Ustawienie nazwa ma wartość nadawaną podczas tworzenia strony. Jeśli chcemy później ją zmienić, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia nazwijStronę.

Dla zmiany nazwy s1 możesz użyć:

? s1'nazwijStronę "panel1

Ustawienie | Wartość | Opis
dostępny | logiczna | Jeśli ma wartość fałsz, to nie można zmienić rozmiarów strony za pomocą myszy, ani nie są obsługiwane zdarzenia związane z klawiaturą i myszą, takie jak gdyKlik czy gdyMyszNajedzie itp. Domyślną wartością jest prawda.
grubośćLinii Skrót: grlin | grubość pisaka | Określa grubość pisaka dla rysowania na stronie bez użycia żółwia. Domyślną wartością jest 1.
kolorLinii Skrót: kollin | kolor | Określa kolor pisaka dla rysowania na stronie bez użycia żółwia. Domyślny jest kolor czarny.
kolTła | kolor | Określa kolor tła strony. Każdy kolor jest poprawny. Domyślny jest kolor biały.
komendyGłosowe | lista głosów | Określa komendy głosowe dla strony. Domyślną wartością jest [].
ktoNaStronie | słowo albo lista | Określa nazwę jedynego (jeśli jest tylko jeden) lub listę nazw (jeśli jest ich więcej) aktywnego żółwia lub innego aktywnego obiektu znajdującego się na stronie aktywnaStrona. Warto pamiętać że wszystkie plansze osadzone na stronie podają tę samą wartość funkcji ktoNaStronie. Ponadto, obiekty inne niż żółwie, mogą być uaktywnione za pomocą słuchaj tylko wtedy, gdy wywodzą się one ze wspólnej pierwotnej klasy. W takim przypadku ktoNaStronie podaje ich nazwy.
nazwa | słowo | Może być użyte tylko podczas tworzenia strony. Wartość określa nazwę tworzonej strony. Jeśli nie zostanie użyte, to tworzona strona otrzyma unikalną nazwę, składającą się z wartości zmiennej prefiksNazwy (domyślnie litery s) i liczby. Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.
obrazTła | postać | Określa zawartość tła strony. Rozmiar każdej fazy i każdej klatki jest zawsze identyczny jak bieżący rozmiar strony. Jeśli później tło będzie zmieniane za pomocą ustalObrazTła postać lub ustalObrazTła kod rysunku, szerokość i wysokość strony też będzie zmieniona.
początek | punkt | Punkt na stronie (we współrzędnych bezwzględnych) określający początek kartezjańskiego układu współrzędnych. Domyślnie jest nim środek strony. Po zmianie, można powrócić do domyślnego ustawienia za pomocą: ? s1'ustalPoczątek s1'rozmiar / 2
rada | tekst | Lista pusta lub dowolny tekst.
rozmiar | [ n n ] | Wartość jest dwuelementową listą liczbową, określającą szerokość i wysokość strony w pikselach ekranu. Domyślną wartością jest [796 499].
wzórLinii Skrót: wzlin | wzór pisaka | Określa wzór pisaka dla rysowania na stronie bez użycia żółwia. Domyślną wartością jest 0.


Strona: zmienne wspólne

Klasa Strona ma zmienne wspólne, które są dostępne dla wszystkich jej jednostek. Należy pamiętać, że można zdefiniować zmienne o tych samych nazwach (prywatne lub wspólne) na dowolnej ze stron - wówczas zmienne wspólne klasy Strona o tych nazwach nie będą dostępne (będą przysłonięte).

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Zmienna | Opis
czynneNarzędzia Załóżmy, że mamy przycisk narzędziowy. Kiedy zostanie on naciśnięty, włączone zostanie naciśnięte narzędzie. Wówczas, po kliknięciu na jakiś obiekt (stronę, żółwia, planszę…), to narzędzie zadziała lub nie. Narzędzie działa o ile kliknięty obiekt ma lub dziedziczy zmienną czynneNarzędzia o wartości prawda. Narzędzie nie działa, jeżeli nie ma takiej zmiennej lub jej wartością jest fałsz.

Domyślną wartością dla wszystkich stron jest prawda.
menuKontekstowe Jej wartością jest menu , które wyświetla się po kliknięciu prawym przyciskiem myszy w obrębie strony. Poniżej możesz obejrzeć przykład pokazujący, jak może ono wyglądać.

nazwyZdarzeń | Jej wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdej strony, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowej (tworzonej) jednostki klasy Strona, zwykle s1, s2, s3 … itd. Jeśli chcemy zmienić nazwę strony, to możemy to zrobić w dialogu Zmień mnie każdej z istniejących stron, albo użyć pierwotnego polecenia ustalStan, albo użyć polecenia nazwijStronę okna głównego; albo zdefiniować specjalną podklasę stron ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Na przykład:

? nowaKlasa "Strona "MojaStrona [wspólne'prefiksNazwy zdjęcie rozmiar [640 420]]
? powtórz 3[nowy "MojaStrona []]

utworzy strony o nazwach zdjęcie1, zdjęcie2, zdjęcie3.

Domyślną wartością jest s.
zapisTła Określa, czy tło wszystkich stron będzie zapisywane wraz z projektem. Ta zmienna odpowiada opcji Zapisz strony z tłem w dialogu Opcje przy wyborze Zapisz projekt z menu Plik. Warto pamiętać, że można selektywnie dla dowolnej strony utworzyć zmienną zapisTła i nadać jej wartość fałsz, co spowoduje, że tło danej strony nie będzie zapisywane z projektem.

Domyślną wartością jest prawda.


Strona: zdarzenia

Strony rozpoznają wiele zdarzeń, a szczególnie często zdarzenie gdyKlik. Kiedy klikniemy stronę (tj. klikniemy, gdy mysz znajduje się w obrębie strony, ale nie wskazuje na niej żadnego obiektu), zachodzi zdarzenie gdyKlik i jest ono obsługiwane (jeśli wcześniej została zdefiniowana procedura obsługi tego zdarzenia).

Dla strony może być zdefiniowane także zdarzenie gdyKomendaGłosowa. Będzie ono aktywne, o ile zostanie określone menu komend głosowych dla tej strony. Jeśli system rozpoznawania mowy usłyszy i rozpozna jedną z jego fraz, to zostanie wywołany niezależny równoległy proces zdarzenia. Jeśli rozpoznanej frazie towarzyszy pusta lista [], to zamiast tego zostanie wywołane zdarzenie gdyKomendaGłosowa. Procedura zdarzenia może używać lokalnej zmiennej :komendaGłosowa - jej wartością jest ostatnia rozpoznana fraza.

Oto pełna lista zdarzeń rozpoznawanych przez klasę Strona:

[gdyCiągniesz gdyCs gdyDwuKlik gdyKlik gdyKomendaGłosowa gdyLewyWciśnięty gdyLewyZwolniony gdyŁadujesz gdyMyszJedzie gdyMyszNajedzie gdyMyszZjedzie gdyPrawyWciśnięty gdyPrawyZwolniony gdyŚrodkowyWciśnięty gdyŚrodkowyZwolniony gdyTworzysz gdyWciśnięty1PJ gdyWciśnięty2PJ gdyWciśnięty3PJ gdyWciśnięty4PJ gdyZwolniony1PJ gdyZwolniony2PJ gdyZwolniony3PJ gdyZwolniony4PJ]


Strona: obiekty

Strony udostępniają przestrzeń roboczą (prawie) wszystkim obiektom. Na stronach (lub planszach) rysujemy używając (lub nie) żółwi, wyświetlamy teksty lub tworzymy pola tekstowe, tworzymy animacje, tu umieszczamy gadżety (suwaki, przyciski itp.), możemy mieć okno przeglądarki WWW lub połączenie sieciowe.

Ściślej, na stronie można umieszczać żółwie, pola tekstowe, przyciski, specjalne przyciski, plansze, paski narzędzi, suwaki, odtwarzacze, joysticki, przeglądarki i obiekty sieciowe. Wszystkie obiekty znajdujące się na stronie widać w oknie pamięci, przy danej stronie:

W celu utworzenia obiektu na stronie należy:

  • nacisnąć odpowiedni przycisk w pasku narzędzi (Nowy żółw, Nowa plansza… itp.), a następnie kliknąć na stronie, albo
  • użyć poleceń języka - podając nazwę strony, apostrof i polecenie nowy lub nowyObiekt:
    ? s1'nowy "Suwak [min 10]
    albo
    ? s1'nowy "Plansza [rozmiar [150 40] poz [-30 100]]

Nie można tworzyć strony na stronie.

Odwołując się do wszystkich obiektów, poza paskiem narzędzi, obiektem sieciowym i joystickiem, można pomijać ich nazwy. Znaczy to np., że zamiast s1'nowy "Suwak [ … ] można użyć nowy "Suwak [ … ] - dzieje się tak dlatego, że polecenie otrzymane przez okno główne zostanie przesłane do strony aktywnaStrona.


Strona i Plansza: procedury

autoAkcja
drukujMnie
kolż
pozklik
włącz
wszystkie
wszystkiez
wyłącz

Procedury charakterystyczne dla klasy Strona omówione w opisie tej klasy:

Czyszczenie strony i planszy
Narzędzia rysowania bez żółwia
Początek strony i planszy
Funkcje informujące o stanie strony i planszy
Strona ustawienia - polecenia i funkcje związane ze standardowymi ustawieniami strony.
Strona: zmienne wspólne - polecenia i funkcje związane z wszystkimi zmiennymi obiektowymi.
Tło strony i planszy

Także polecenia wymienione niżej działają dla stron. Jeśli jedna lub więcej stron stanie się aktywna po wykonaniu polecenia słuchaj (lub choćby czasowo po proszę), a następnie zostanie wykonane schowajMnie, to polecenie to nie będzie wykonane przez bieżącego adresata, tylko przez każdą aktywną stronę.

Procedura | Typ | Opis
autoAkcja P Określa domyślną akcję dla klasy Strona. Jest zdefiniowana następująco:

oto autoAkcja
  mojeOkno'ustalAktywnąStronę mojaNazwa
już

Oznacza to, że jeśli użyjemy nazwy strony jako polecenia (podczas wywołania, np. s3), to zmieni się aktywna strona i zostanie ona wyświetlona.

drukujMnie | P | Drukuje tło strony będącej bieżącym adresatem.
kolż żółwie | P | Zmienia kolejność żółwi umieszczonych na stronie będącej adresatem. Oznacza to, że definiuje które żółwie będą przesłaniały inne podczas poruszania się po stronie w tych sytuacjach, gdy ich sylwetki będą nachodziły na siebie. Dokładniej - patrz nachodzenie żółwi.
pozklik | F | Podaje wektor, którego początek jest lewym górnym wierzchołkiem strony, a koniec - miejscem ostatniego kliknięcia na stronie.
włącz | P | Dla strony s1 spowoduje to samo, co s1'ustalDostępny "prawda.
wszystkie F Podaje listę wszystkich żółwi znajdujących się na bieżącej stronie (lub planszy).

Jeśli strona zawiera wiele plansz z ich własnymi żółwiami, to nie znajdą się one w liście wszystkie wywołanej dla strony.
wszystkiez klasa
wszystkiez jednostka 		F Podaje listę nazw wszystkich jednostek, które są potomkami klasy będącej parametrem i są umieszczone na stronie będącej bieżącym adresatem:

? pokaż wszystkiez "Suwak
[suw1 suw2 suw3 suw4]
wyłącz | P | Dla strony s1 spowoduje to samo, co s1'ustalDostępny "fałsz.


Tło strony i planszy

kolTła
ładujEkran; ładek
obrazTła
ustalKolTła
ustalObrazTła
wklejObraz
wklejWycinekZPliku
wycinekTła
wytnijTło
zapiszEkran; zek

Wszystkie wymienione tu procedury działają identycznie dla stron i plansz. Wygląd tła strony lub planszy jest pamiętany w ustawieniu obrazTła i może być zmieniany przez te procedury. Dodatkowo, każda strona i plansza mają ustawienie pamiętające kolor tła kolTła, które jest używane np. podczas czyszczenia obiektu.

Procedura | Typ | Opis
kolTła | F | Podaje kolor tła strony lub planszy.
ładujEkran plik
ładujEkran "schowek
Skrót:
ładek 		P To samo, co ustalObrazTła ładpos plik,

z jedną mała różnicą - jeśli nazwa pliku nie ma określonego rozszerzenia, to przyjmowane jest BMP zamiast LGF.
obrazTła F Podaje zawartość tła strony lub planszy jako postać składającą się z jednej fazy z jedną klatką. Rozmiar jest identyczny z rozmiarem całej strony lub planszy.

ObrazTła planszy (lub strony) może być użyty jako wizerunek żółwia, np.:

? ż1'ustalPostać p1'obrazTła
ustalKolTła kolor
ustalKolTła losowy-kolor 		P Ustala kolor tła strony lub planszy stosownie do wartości parametru. Następnie cały obszar jest czyszczony (patrz zmaż). Stany żółwi nie są zmieniane – wszystkie pozostają na swoich miejscach, widoczne lub schowane - jak wcześniej.

Jeśli strona lub plansza ma bądź dziedziczy zdarzenie gdyCs, to jest ono wywoływane.
ustalObrazTła postać
ustalObrazTła kod rysunku
ustalObrazTła plik
ustalObrazTła "schowek 		P Rysunek tła strony lub planszy – będący też wartością ustawienia obrazTła – przyjmuje wartość zapamiętanej w parametrze postaci lub wartość opisaną przez listę lub zapisaną w pliku bądź Schowku. Rozmiar strony lub planszy jest zmieniany na rozmiar określony w parametrze.

Jeśli nazwa pliku nie zawiera rozszerzenia, to polecenie dodaje .LGF.
wklejObraz obraz lista-ustawień
wklejObraz plik lista-ustawień
wklejObraz "schowek lista-ustawień
wklejObraz kod rysunku lista-ustawień
wklejObraz
    [rysujGładko
      [ukm "czerwony5
       wielokąt[8 [75 144
                   8 49]]]]
    [prost [-100 300 285 375]
     styl tapeta] 		P Wyświetla w tle strony lub planszy określony obraz (pierwszą klatkę pierwszej fazy) lub obraz zapamiętany w pliku lub określony listą lub wzięty z systemowego Schowka. Jeśli parametr jest nazwą pliku graficznego o rozpoznawanym formacie, to plik jest wczytywany i wyświetlany w tle adresata. Obraz staje się częścią tła i nie może być przesunięty ani skasowany (chyba, że całe tło zostanie wyczyszczone).

Lista-ustawień umożliwia określenie prostokątnego fragmentu strony bądź planszy i/lub wklejanie w określony sposób, za pomocą podania pozycji, rozmiarów i stylu. W tym celu może zawierać następujące ustawienia:

  • poz - określa lewy górny wierzchołek prostokąta w którym pojawi się obraz. Domyślną wartością jest lewy górny róg adresata.
  • apoz - określa lewy górny wierzchołek prostokąta we współrzędnych bezwzględnych. Domyślną wartością jest lewy górny róg adresata.
  • prost - określa prostokąt. Domyślną wartością jest cały obszar adresata.
  • aprost - określa bezwzględny prostokąt. Domyślną wartością jest cały obszar adresata.
  • rozmiar - jeśli zostały określone poz lub apoz, to to ustawienie określa [ szerokość wysokość ] prostokąta (poz lub apoz określają położenie lewego górnego wierzchołka).
  • styl - określa, że obraz:
    tapeta - jest elementem powtarzanym w prostokącie,
    rozciągnij - wypełnia cały prostokąt,
    lewygórny - jest umieszczony w lewym górnym rogu,
    środek (wartość domyślna) - jest umieszczony na środku prostokąta.
wklejWycinekZPliku plik
wklejWycinekZPliku "schowek 		P To samo, co wytnijTło, ale zaznaczany jest prostokąt w lewym górnym rogu strony lub planszy i jego zawartość jest określona przez plik lub systemowy Schowek.

Jeśli nazwa pliku nie zawiera rozszerzenia, to polecenie dodaje .LGF.
wycinekTła prostokąt F Podaje postać zawierającą tylko jedną fazę z jedną klatką. Ta postać jest tworzona (tak jak za pomocą kamery) z aktualnej zawartości tła adresata. Parametr określa prostokątny fragment strony lub planszy, który będzie skopiowany do nowego obrazu. Środek tego prostokąta definiuje punkt zaczepienia tego obrazu.

Wizerunki żółwi nie będą ujęte w wyniku tej funkcji (chyba, że wpierw użyjesz poleceń stempluj dla żądanych żółwi, pozostawiając ich wizerunki bezpośrednio na stronie lub planszy).

Bieżąca wartość zmiennej wspólnej klasy Baza o nazwie przezroczystość określa które fragmenty obrazu wynikowego będą przezroczyste.

? ustalPostać wycinekTła [-200 120 60 90]
wytnijTło prostokąt

P Na stronie lub planszy zaznaczany jest prostokąt opisany przez parametr. Obszar tła znajdujący się pod tym prostokątem jest wypełniany kolorem kolTła. Teraz można:
  • rozciągnąć zawartość zaznaczonego prostokąta - poprzez przeciągnięcie któregoś z jego 8 czarnych kwadratów na obrzeżu,
  • przeciągnąć zaznaczony prostokąt (jeśli podczas przeciągania wciśnięty jest klawisz Ctrl, to kopia zawartości pojawi się w miejscu, gdzie zwolnimy przycisk myszy),
  • umieścić kopię zawartości prostokąta w Schowku - wybierając opcję Wytnij lub Kopiuj z menu Edycja lub za pomocą skrótów klawiszowych,
  • skasować zawartość prostokąta - naciskając klawisz Delete,
  • pozostawić zawartość prostokąta w bieżącym miejscu i zakończyć działanie polecenia wytnijTło - poprzez naciśnięcie klawisza Escape.

Wszystkie fragmenty zaznaczonego prostokąta, których kolor jest identyczny jak kolTła strony lub planszy są przezroczyste.
zapiszEkran plik
zapiszEkran "schowek
Skrót:
zek 		P To samo, co zapiszPostać plik obrazTła, z jedną mała różnicą: jeśli nazwa pliku nie ma określonego rozszerzenia, to przyjmowane jest BMP zamiast LGF.


Czyszczenie strony i planszy

Należy pamiętać, że czyszczenie strony lub planszy wywołuje zdarzenie gdyCs, jeśli zostało ono zdefiniowane lub jest dziedziczone przez tę stronę lub planszę.

Procedura | Typ | Opis
czyść Skrót: cs | P | Strona lub plansza jest czyszczona, tj. jest wypełniana kolorem tła. Każdy żółw znajdujący się na stronie lub planszy jest przenoszony (bez rysowania linii) do swej początkowej pozycji i skierowywany w początkowym kierunku. Nie jest zmieniany kolor, grubość, wzór ani tryb (pod/opu) pisaka żadnego z żółwi. Tylko żółwie żyjące bezpośrednio na danej stronie lub planszy zmieniają swą pozycję. Jeśli polecenie będzie adresowane do innego (niż strona czy plansza) obiektu, np. do żółwia, to wyczyszczona zostanie strona lub plansza na której znajduje się ten obiekt.
zmaż | P | Strona lub plansza jest czyszczona, tj. jest wypełniana kolorem tła. Zmaż nie zmienia kierunku ani pozycji ani stanu pisaka żadnego z żółwi.


Początek strony i planszy

Te same procedury są rozpoznawane przez okno główne.

Procedura | Typ | Opis
lewyGórnyRóg | F | Podaje współrzędne kartezjańskie lewego górnego rogu adresata.
początek | F | Podaje współrzędne bezwzględne początku adresata.
ustalPoczątek punkt P Ustala początek adresata na punkt będący parametrem (mierzony we współrzędnych bezwzględnych adresata). Początek może znajdować się poza adresatem.

Żółwie i inne elementy znajdujące się na stronie lub planszy nie poruszają się, gdy początek zmienia swoją pozycję. Ich bieżąca pozycja i początkowa pozycja są wówczas przeliczane i zapamiętywane.

? pokaż ż1'poz
[74 125]
? s1'ustalPoczątek [100 100]

? pokaż poz
[548 -195]

Przykłady:

? pokaż p1'pozMyszy
[-73 162]

Pokazuje współrzędne kartezjańskie kursora myszy, mierzone od początku p1.

? pokaż p2'pozMyszy
[49 144]

Pokazuje współrzędne kartezjańskie kursora myszy, mierzone od początku p2 - nie szkodzi, że mysz jest poza p2.

? pokaż proszę "p2 [naAbsolutne pozMyszy]
[134 -52]
? pokaż p2'naAbsolutne p2'pozMyszy
[134 -52]

Pokazuje bezwzględne współrzędne kursora myszy, mierzone od lewego górnego rogu p2. Pokazane zostały dwa różne sposoby uzyskania tej samej informacji.

? pokaż naAbsolutne pozMyszy
[153 25]

Pokazuje bezwzględne współrzędne kursora myszy, mierzone od lewego górnego rogu strony (tj. okna głównego).

? pokaż proszę "p1 [naAbsolutne pozMyszy]
[44 17]

Pokazuje bezwzględne współrzędne kursora myszy, mierzone od lewego górnego rogu p1.


Funkcje informujące o stanie strony i planszy

W poniższych funkcjach punkt jest zawsze mierzony we współrzędnych kartezjańskich adresata, tj. strony lub planszy.

Procedura | Typ | Opis
kolpkt punkt | F | Podaje kolor tła punktu będącego parametrem.
nachodząceNaPunkt punkt Skrót: napkt | F | Podaje listę wszystkich żółwi, które nachodzą (nieprzezroczystym punktem) na punkt będący parametrem.


Plansza: ogólny opis

Plansza jest prostokątnym obszarem, który można przesuwać w obrębie strony. Możliwe jest istnienie na niej żółwi i innych obiektów utworzonych na stronie lub innej planszy. Na stronie można utworzyć wiele plansz, które mogą nachodzić na siebie. Plansze mogą mieć swoje żółwie, przyciski, pola tekstowe i inne obiekty. Każda plansza określa, poprzez swój rozmiar i pozycję, obszar dla wszystkich obiektów żyjących na niej - miejsce, gdzie mogą się one wyświetlać, poruszać lub rysować.

Plansze mogą mieć tło określone przez bitmapowy rysunek. Plansze używają współrzędnych kartezjańskich z początkiem [0 0] zwykle umieszczonym na środku.

Możesz tworzyć nowe plansze w jeden z następujących sposobów:

  • przyciskiem Nowa plansza z paska narzędzi.

    Naciskasz przycisk, a następnie określasz prostokąt w obrębie już istniejącej strony lub planszy. W ten sposób określasz rozmiar, pozycję i miejsce nowej planszy.

  • używając poleceń języka.
    Wpisujesz polecenie nowy "Plansza [… ustawienia …]. Jeśli chcesz, to możesz określić dla tworzonej planszy inne miejsce niż bieżąca strona, np. gdy chcesz utworzyć nową planszę na stronie s20, to powinieneś napisać s20'nowy "Plansza [ … ].
    Inną metodą jest użycie polecenia (nowyObiekt "Plansza ustawienie wartość …).

Jeśli nowa plansza ma lub dziedziczy zdarzenie gdyCs, to zachodzi ono gdy plansza:

  • zostanie utworzona.
  • jest czyszczona poleceniem zmaż lub cs.

Gdy zostanie określone zdarzeniem gdyCs w podklasie klasy Plansza lub bezpośrednio w dialogu Zmień mnie) następująco:

? nowaKlasa "Plansza "mojaPlansza
    [zdarzenie'gdyCs
       [wklejObraz "obrazek.BMP
          [styl rozciągnij]]]

to każda nowa plansza będzie miała tło określone przez plik obrazek.BMP. Co więcej, to tło będzie pojawiać się po każdym użyciu poleceń cs, zmaż lub ustalKolTła dla obiektu klasy mojaPlansza.


Plansza: ustawienia

dostępny; ustalDostępny
grubośćLinii; grlin; ustalGrubośćLinii; ustalGrlin
kolorLinii; kollin; ustalKolorLinii; ustalKolLin
kolTła; ustalKolTła
ktoNaStronie; ustalKtoNaStronie
nazwa
obrazTła; ustalObrazTła
początek; ustalPoczątek
poz; ustalPoz; napoz
pozabs; ustalPozabs
przeciąganie; ustalPrzeciąganie
rada; ustalRadę
rozmiar; ustalRozmiar
widoczny; ustalWidoczny
wzórLinii; wzlin; ustalWzórLinii; ustalWzlin

Tu zamieszczony jest spis ustawień, które mogą być używane w liście ustawień: podczas tworzenia planszy za pomocą nowy "Plansza [ … ], bądź później - dla sprawdzenia lub zmiany ustawień planszy. Dla każdego z ustawień (z wyjątkiem nazwa, patrz niżej) dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla ustawienia mówiącego o kolorze tła są to: bezparametrowa funkcja kolTła i polecenie ustalKolTła z jednym parametrem - kolorem (lub losowym kolorem). Można więc wykonać:

? p1'ustalKolTła "jasnoniebieski
? proszę "p1 [napoz poz + [50 -50]]

Ustawienie nazwa ma wartość nadawaną podczas tworzenia planszy. Jeśli chcemy później ją zmienić, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie | Wartość | Opis
dostępny | logiczna | Jeśli ma wartość fałsz, to plansza nie może być przeciągana myszą ani nie są obsługiwane zdarzenia związane z klawiaturą i myszą. Domyślną wartością jest prawda.
grubośćLinii Skrót: grlin | grubość pisaka | Określa grubość pisaka dla rysowania na planszy bez użycia żółwia. Domyślną wartością jest 1.
kolorLinii Skrót: kollin | kolor | Określa kolor pisaka dla rysowania na planszy bez użycia żółwia. Domyślny jest kolor czarny.
kolTła | kolor | Określa kolor tła planszy. Wszystkie kolory są dopuszczalne.
nazwa | słowo | Może być użyte tylko podczas tworzenia planszy. Wartość określa nazwę tworzonej planszy. Jeśli nie zostanie użyte, to tworzona plansza otrzyma unikalną nazwę, składającą się z wartości zmiennej prefiksNazwy (domyślnie litery p) i liczby. Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.
obrazTła | postać | Określa zawartość tła planszy. Jeśli później tło będzie zmieniane za pomocą ustalObrazTła postać lub ustalObrazTła kod rysunku, szerokość i wysokość planszy też będzie zmieniona.
początek | punkt | Punkt na planszy (we współrzędnych bezwzględnych) określający początek kartezjańskiego układu współrzędnych. Domyślnie jest nim środek planszy.
poz | punkt | Określa współrzędne kartezjańskie lewego górnego rogu planszy w jej miejscu, tj. na stronie lub innej planszy.
pozabs | punkt | Określa bezwzględne współrzędne lewego górnego rogu planszy w jej miejscu, tj. na stronie lub innej planszy.
przeciąganie | logiczna | Jeśli ma wartość prawda, to plansza może być przesuwana (po wciśnięciu lewego przycisku myszy), o ile ustawienie dostępny nie ma wartości fałsz. Domyślną wartością jest fałsz.
rada | tekst | Puste słowo lub dowolny tekst.
rozmiar | [ n n ] | Wartość jest dwuelementową listą liczbową, określającą szerokość i wysokość planszy w pikselach ekranu. Domyślną wartością jest [100 100].
widoczny | logiczna | Jeśli ma wartość prawda, to plansza jest widoczna. W przeciwnym przypadku jest ukryta. Domyślną wartością jest prawda.
wzórLinii Skrót: wzlin | wzór pisaka | Określa wzór pisaka dla rysowania na planszy bez użycia żółwia. Domyślną wartością jest 0.


Plansza: zmienne wspólne

Klasa Plansza ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez każdą planszę.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa | Opis
kolTła1 Określa początkowy kolor tła dla nowej planszy. Będzie on użyty, gdy miejsce nowej planszy ma tło inne niż białe. Jeśli tak nie jest, będzie użyty kolor kolTła2.

Domyślną wartością jest biały.
kolTła2 Patrz kolTła1.

Domyślną wartością jest pomarańczowy11.
menuKontekstowe Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy w obrębie planszy. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać:

nazwyZdarzeń | Jej wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdej planszy, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowej (tworzonej) jednostki klasy Plansza, zwykle p1, p2, p3 … itd. Jeśli chcemy zmienić nazwę planszy, to możemy to zrobić w dialogu Zmień mnie każdej z istniejących plansz, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę plansz ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Na przykład:

? nowaKlasa "Plansza "MojaPlansza
     [wspólne'prefiksNazwy abc
      kolTła żółty10
      rozmiar [180 280]]
? powtórz 3[nowy "MojaPlansza []]

utworzy plansze o nazwach abc1, abc2, abc3.

Domyślną wartością jest p.
zapisTła Określa, czy tło wszystkich plansz będzie zapisywane wraz z projektem. Ta zmienna odpowiada opcji Zapisz plansze z tłem w dialogu Opcje przy wyborze Zapisz projekt z menu Plik. Warto pamiętać, że można selektywnie dla dowolnej planszy utworzyć zmienną zapisTła i nadać jej wartość fałsz, co spowoduje, że tło danej planszy nie będzie zapisywane z projektem.

Domyślną wartością jest prawda.


Plansza: zdarzenia

Plansze rozpoznają wiele zdarzeń, a szczególnie często zdarzenie gdyKlik. Kiedy klikniesz planszę (tj. klikniesz, gdy mysz znajduje się w obrębie planszy, ale nie wskazuje na niej żadnego obiektu), zachodzi zdarzenie gdyKlik i jest ono obsługiwane (jeśli wcześniej została zdefiniowana procedura tego zdarzenia).

Oto pełna lista standardowych zdarzeń rozpoznawanych przez klasę Plansza:

[gdyCiągniesz gdyCs gdyDwuKlik gdyKlik gdyLewyWciśnięty gdyLewyZwolniony gdyŁadujesz gdyMyszJedzie gdyMyszNajedzie gdyMyszZjedzie gdyPrawyWciśnięty gdyPrawyZwolniony gdyRuchJoysticka gdyŚrodkowyWciśnięty gdyŚrodkowyZwolniony gdyTworzysz gdyWciśnięty1PJ gdyWciśnięty2PJ gdyWciśnięty3PJ gdyWciśnięty4PJ gdyZwolniony1PJ gdyZwolniony2PJ gdyZwolniony3PJ gdyZwolniony4PJ]


Plansza: obiekty

Na planszy mogą być tworzone inne obiekty. Są to żółwie, pola tekstowe, przyciski, specjalne przyciski, inne plansze, paski narzędzi, suwaki, odtwarzacze, joysticki, przeglądarki i obiekty sieciowe. Wszystkie obiekty znajdujące się na planszy widać w oknie pamięci, przy danej planszy:

W celu utworzenia obiektu na planszy należy:

  • nacisnąć odpowiedni przycisk w pasku narzędzi (Nowy żółw, Nowa plansza… itp.), a następnie kliknąć na planszy, albo
  • użyć poleceń języka - podając nazwę planszy, apostrof i polecenie nowy lub nowyObiekt:
    ? p1'nowy "Suwak [min 10]
    albo
    ? p1'nowy "Plansza [rozmiar [150 40] poz [-30 100]]

W celu otrzymania listy żółwi żyjących na planszy używamy funkcji wszystkie (dla danej planszy). Natomiast listę innych obiektów potomnych od planszy uzyskamy od funkcji wszystkiez. Zmianę sposobu przesłaniania sylwetek żółwi nachodzących na siebie umożliwia polecenie kolż.


Plansza: procedury

kolż
pokażMnie
pozklik
przesuń
schowajMnie
włącz
wyłącz

Procedury charakterystyczne dla klasy Plansza omówione w opisie tej klasy:

Czyszczenie strony i planszy
Funkcje informujące o stanie strony i planszy
Narzędzia rysowania bez żółwia
Plansza: ustawienia - polecenia i funkcje związane ze standardowymi ustawieniami planszy.
Plansza: zmienne wspólne - polecenia i funkcje związane z wszystkimi zmiennymi obiektowymi.
Początek strony i planszy
Tło strony i planszy

Polecenia wymienione niżej także działają dla plansz. Jeśli jedna lub więcej plansz stanie się aktywna po wykonaniu polecenia słuchaj (lub choćby czasowo po proszę), a następnie zostanie wykonane schowajMnie, to polecenie to nie będzie wykonane przez bieżącego adresata, tylko przez każdą aktywną planszę.

Procedura | Typ | Opis
kolż żółwie | P | Zmienia kolejność żółwi. Oznacza to, że definiuje które żółwie będą przesłaniały inne podczas poruszania się po planszy w tych sytuacjach, gdy ich sylwetki będą nachodziły na siebie.
pokażMnie | P | Czyni widocznymi te wszystkie aktywne plansze, które są schowane. Jeśli nie ma żadnych aktywnych plansz, to polecenie jest kierowane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itp.). Jeśli żaden obiekt nie jest aktywny, to polecenie nic nie wykona.
pozklik | F | Podaje wektor, którego początek jest lewym górnym wierzchołkiem planszy, a koniec - miejscem ostatniego kliknięcia na planszy.
przesuń | P | Efekt działania polecenia jest taki sam, jak użycie opcji Przesuń z menu kontekstowego dla planszy. Kursor myszy jest umieszczany w środku planszy i zmienia swój wygląd. Można myszą przesunąć planszę w obrębie jej miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.
schowajMnie P Chowa wszystkie aktywne plansze. Jeśli żadna plansza nie jest aktywna, to polecenie zostanie skierowane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itp.). Jeśli żaden obiekt nie jest aktywny, to polecenie nic nie wykona.

? proszę [p1 p2 p3][schowajMnie]
? p3'pokażMnie
włącz | P | Dla planszy p1 spowoduje to samo, co p1'ustalDostępny "prawda.
wyłącz | P | Dla planszy p1 spowoduje to samo, co p1'ustalDostępny "fałsz.

Należy pamiętać, że wiele użytecznych procedur i funkcji nie należy bezpośrednio do klasy Plansza, ale są one dziedziczone od klasy Strona, a działają także dla plansz. Na przykład, takimi funkcjami są wszystkie i wszystkiez:

? pokaż p1'wszystkie
[ż5 ż6 ż7]
? pokaż p1'wszystkiez "Suwak
[suw8 suw9]


PasekNarzędzi: ogólny opis

Pasek narzędzi jest to najczęściej pasek położony przy krawędzi okna głównego, strony lub planszy. Jest miejscem, gdzie osadzone są przyciski i specjalne przyciski, mające uczynić pracę łatwiejszą. Ponadto czasem na pasku narzędzi umieszczamy suwaki i plansze.

W celu utworzenia paska narzędzi musimy dla miejsca, na którym będzie on żył, użyć polecenia nowy lub nowyObiekt:

? nowy "pasekNarzędzi []
nowy pasek narzędzi będzie utworzony w oknie głównym
? s1'nowy "pasekNarzędzi [wyrównanie lewo]
nowy pasek narzędzi będzie utworzony na stronie s1
? p3'nowy "pasekNarzędzi [rozmiar [100 50]]
nowy pasek narzędzi będzie utworzony na planszy p3

Na początku pracy w oknie głównym są już dwa paski narzędzi: Narzędzia i Przybornik. Zostały one utworzone w sposób opisany powyżej. Możemy modyfikować ich wygląd.

Pasek narzędzi jest zwykle umieszczany pod górną krawędzią jego miejsca. Możemy także tworzyć paski narzędzi przy pionowych krawędziach ich miejsc, dotyczy to stron, planszy, a także okna głównego. Pasek umieszczony przy poziomej krawędzi ma taką samą szerokość, jak jego miejsce, a wysokość może mieć dowolną (domyślnie jest to 31). Pionowe paski narzędzi mają ustaloną wysokość, a ich szerokość może być określona dowolną liczbą dodatnią.


PasekNarzędzi: ustawienia

dostępny; ustalDostępny
nazwa
priorytet; ustalPriorytet
rada; ustalRadę
rozmiar; ustalRozmiar
widoczny; ustalWidoczny
wyrównanie; ustalWyrównanie

Tu zamieszczony jest spis ustawień, które mogą być używane w liście ustawień podczas tworzenia paska narzędzi za pomocą nowy "pasekNarzędzi [ … ], bądź później - dla sprawdzenia lub zmiany ustawień paska narzędzi. Dla każdego z ustawień (z wyjątkiem nazwa, patrz niżej) dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla ustawienia wyrównanie, mówiącego o tym, przy której z krawędzi jest umieszczony pasek narzędzi - są to: bezparametrowa funkcja wyrównanie i polecenie ustalWyrównanie z jednym parametrem (słowem góra, dół, lewo lub prawo).

? jeśli pn1'wyrównanie = "góra [pn1'ustalWyrównanie "dół]

Ustawienie nazwa ma wartość nadawaną podczas tworzenia paska narzędzi. Jeśli chcemy później zmienić nazwę paska, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie | Wartość | Opis
dostępny logiczna Jeśli ma wartość fałsz, to pasek narzędzi nie reaguje na zdarzenia związane z myszą ani klawiaturą. Oznacza to, że obiekty żyjące na pasku narzędzi (przyciski, suwaki itd.) nie reagują na kliknięcia lewym bądź prawym przyciskiem myszy, menu kontekstowe nie jest dostępne itd.

Domyślną wartością jest prawda.
nazwa słowo Może być użyte tylko podczas tworzenia paska narzędzi.

Wartość określa nazwę tworzonego paska.

Jeśli nie zostanie użyte, to tworzony pasek narzędzi otrzyma unikalną nazwę, składającą się z wartości zmiennej prefiksNazwy (domyślnie liter pn) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.
priorytet | liczba | Jest liczbą całkowitą. Określa - dla wielu pasków narzędzi mających to samo miejsce i umieszczonych przy tej samej krawędzi - kolejność wyświetlania tych pasków. Jeśli dla różnych pasków jest on różny, to bliżej krawędzi jest wyświetlany pasek o mniejszej wartości tego ustawienia. Jeśli dla dwóch różnych pasków jest identyczny (domyślnie jest równy 0), to kolejność zależy od kolejności odwoływania się do nich.
rada tekst Puste słowo lub dowolny tekst:

? s1'nowy "pasekNarzędzi []
; teraz utwórz na pasku kilka przycisków
? pn1'ustalRadę "|Mój własny pasek narzędzi|
rozmiar [ n n ] Wartość jest dwuelementową listą liczbową, określającą szerokość i wysokość paska narzędzi w pikselach ekranu.

Jeśli pasek jest wyświetlany przy poziomej krawędzi jego miejsca, to pierwsza z liczb określa szerokość paska i nie może być zmieniana (zawsze jest równa szerokości miejsca). Wówczas druga liczba określa wysokość paska (domyślnie jest równa 31) i może przyjmować wartość będącą dowolną liczbą naturalną.

Jeśli pasek jest wyświetlany przy pionowej krawędzi jego miejsca, to druga z liczb określa wysokość paska i nie może być zmieniana (zawsze jest równa wysokości miejsca). Wówczas pierwsza liczba określa szerokość paska (domyślnie jest równa 31) i może przyjmować wartość będącą dowolną liczbą naturalną.
widoczny logiczna Jeśli ma wartość prawda, to pasek narzędzi jest widoczny. W przeciwnym przypadku jest ukryty.

Domyślną wartością jest prawda.
wyrównanie | góra, dół, lewo lub prawo | Określa pozycję paska narzędzi w obrębie jego miejsca. Każdy pasek narzędzi jest wyświetlany przy jednej z krawędzi okna głównego, strony lub planszy. Możliwe są tyko wartości: góra, dół, lewo lub prawo. Jeśli przy danej krawędzi ma być wyświetlonych wiele pasków narzędzi, to o kolejności decyduje wartość ustawienia priorytet.


PasekNarzędzi: zmienne wspólne

Klasa Pasek narzędzi ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez każdy z pasków narzędzi.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa | Opis
menuKontekstowe Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy w obrębie paska narzędzi. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać. Przykład ten pokazuje też kolejną możliwość zmiany paska narzędzi.

Dialog Zmień mnie pozwala sprawdzić lub zmienić wiele ustawień, takich jak nazwa, rada, wyrównanie, wysokość, priorytet, obsługę zdarzeń itd.

Opcje Nowy przycisk, Nowy separator i Przerwa pozwalają bezpośrednio tworzyć i rozmieszczać przyciski w obrębie paska narzędzi.

Inne opcje zachowują swe zwykłe działania.
nazwyZdarzeń | Jej wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego paska narzędzi, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowej (tworzonej) jednostki klasy Pasek narzędzi, zwykle pn1, pn2, pn3 … itd. Jeśli chcemy zmienić nazwę paska narzędzi, to możemy to zrobić w dialogu Zmień mnie każdego z istniejących pasków, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę pasków narzędzi ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Domyślną wartością jest pn.


PasekNarzędzi: zmienne prywatne

Poniższa tabela zawiera opis zmiennych prywatnych definiowanych automatycznie dla każdego paska narzędzi. Pamiętajmy, że dla każdej z nich istnieje funkcja podająca jej wartość i polecenie zmieniające jej wartość.

W paskach narzędzi używane są współrzędne bezwzględne. Oznacza to m.in., że nastX i nastY mają początek w lewym górnym rogu paska narzędzi, a współrzędna y rośnie w dół.

Nazwa | Początkowa wartość | Opis
grupa | 1 | Pozwala tworzyć przyciski-przełączniki (tj. przyciski mające ustawienie przełącznik o wartości prawda) dołączane do kolejnych grup. Wartość jej zwiększa się o 1 po każdym użyciu polecenia nowaGrupa klasy Pasek narzędzi.
nastX 5 dla poziomych pasków narzędzi,
3 dla pionowych pasków narzędzi 		Dla poziomych pasków narzędzi: określa współrzędną x następnego przycisku (który możemy utworzyć korzystając z opcji menu kontekstowego Nowy przycisk, albo poleceniami nowyPrzycisk bądź nowySpecPrzycisk klasy PasekNarzędzi). Po utworzeniu przycisku, wartość nastX będzie zwiększona o stszer.
nastY 3 dla poziomych pasków narzędzi,
5 dla pionowych pasków narzędzi 		Dla pionowych pasków narzędzi: określa współrzędną y następnego przycisku (który możemy utworzyć korzystając z opcji menu kontekstowego Nowy przycisk, albo poleceniami nowyPrzycisk bądź nowySpecPrzycisk klasy PasekNarzędzi). Po utworzeniu przycisku, wartość nastY będzie zwiększona o stwys.
stszer 27 Określa domyślną szerokość nowego przycisku lub nowego specprzycisku (który możemy następnie utworzyć korzystając z opcji menu kontekstowego Nowy przycisk, albo poleceniami nowyPrzycisk bądź nowySpecPrzycisk).

? pn1'ustalStszer 50
? (pn1'nowyPrzycisk "napis "Wyczyść
   zdarzenie'gdyWciśnięty [p1'cs])
stwys | 27 | Określa domyślną wysokość nowego przycisku lub nowego specprzycisku (który możemy następnie utworzyć korzystając z opcji menu kontekstowego Nowy przycisk, albo poleceniami nowyPrzycisk bądź nowySpecPrzycisk).


PasekNarzędzi: zdarzenia

Oto pełna lista standardowych zdarzeń rozpoznawanych przez klasę Pasek narzędzi:

[gdyCiągniesz gdyDwuKlik gdyKlik gdyLewyWciśnięty gdyLewyZwolniony gdyŁadujesz gdyMyszJedzie gdyMyszNajedzie gdyMyszZjedzie gdyObrót gdyPrawyWciśnięty gdyPrawyZwolniony gdyŚrodkowyWciśnięty gdyŚrodkowyZwolniony gdyTworzysz]

Zdarzenie gdyObrót zachodzi (o ile zdefiniowane dla danego paska narzędzi) w momencie modyfikacji ustawienia wyrównanie powodującego, że dotychczas pionowy pasek narzędzi staje się poziomym, bądź poziomy - pionowym.


PasekNarzędzi: obiekty

Na pasku narzędzi możemy tworzyć plansze, przyciski (w tym przełączniki), specprzyciski i suwaki. Za pomocą opcji Nowy przycisk menu kontekstowego na pasku narzędzi możemy osadzać jedynie przyciski. Wszystkie typy przycisków mogą być tworzone za pomocą poleceń nowyPrzycisk, nowyPrzełącznik i nowySpecPrzycisk klasy PasekNarzędzi.

W celu osadzenia nowego obiektu na pasku narzędzi możemy także użyć polecenia nowy lub nowyObiekt. W tym przypadku nie można jednak skorzystać z takich udogodnień, jakie dają opcja Przerwa menu kontekstowego, czy ustawienia stwys, stszer, nastX, nastY.

? proszę "pn1 [(nowyPrzycisk "napis "abc)]
? pn1'nowy "SpecPrzycisk [poz [60 3] napis def]

Okno pamięci pozwala sprawdzić, jakie obiekty żyją na pasku narzędzi.


PasekNarzędzi: procedury

nowyPrzełącznik
nowyPrzycisk
nowySpecPrzycisk
odstęp
pokażMnie
pozklik
schowajMnie
włącz
wszystkiez
wyłącz

Poza procedurami związanymi z ustawieniami i zmiennymi obiektu, dodatkowo mamy do dyspozycji wymienione tu procedury, które także odnoszą się do pasków narzędzi. Jeśli uczynimy aktywnym jeden lub więcej pasek narzędzi (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez każdy aktywny pasek narzędzi. Do paska narzędzi można odwoływać się bezpośrednio, podając jego nazwę, np. pn1'schowajMnie.

Procedura | Typ | Opis
(nowyPrzełącznik
ustawienie wartość … ) 		P Tworzy nowy przełącznik na bieżącym adresacie – pasku narzędzi. Możliwa jest zmiana domyślnych wartości zmiennych nastX, nastY, stwys i stszer, a także innych ustawień.
(nowyPrzycisk
ustawienie wartość … ) 		P Tworzy nowy przycisk na bieżącym adresacie – pasku narzędzi. Możliwa jest zmiana domyślnych wartości zmiennych nastX, nastY, stwys i stszer, a także innych ustawień, np.:

? (s1'pn1'nowyPrzycisk
   "płaski "prawda
   "zdarzenie'gdyWciśnięty [ż1'wpiszTekst "A])
(nowySpecPrzycisk
ustawienie wartość … ) 		P Tworzy nowy specPrzycisk na bieżącym adresacie – pasku narzędzi. Możliwa jest zmiana domyślnych wartości zmiennych nastX, nastY, stwys i stszer, a także innych ustawień, np.:

? (s1'pn1'nowySpecPrzycisk
  "płaski "prawda
  "zdarzenie'gdyNarzędzie [ż1'napoz pozMyszy])
odstęp liczba | P | Zwiększa nastX (dla poziomego paska narzędzi) lub nastY (dla pionowego paska narzędzi) o wartość danej liczba. Oznacza to, że następny przycisk (lub specPrzycisk) tworzony na pasku narzędzi, będzie oddzielony od poprzedniego o dodatkową określoną odległość.
pokażMnie P Pokazuje wszystkie aktywne paski narzędzi. Jeśli żaden z pasków narzędzi nie jest aktywny, to polecenie będzie wysłane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itd.). Jeśli żaden obiekt nie jest aktywny, to polecenie niczego nie wykona.

? przybornik'pokażMnie
pozklik | F | Wektor, którego początek jest lewym górnym rogiem paska narzędzi, a koniec – pozycją ostatniego kliknięcia myszą w obrębie tego paska.
schowajMnie P Chowa wszystkie aktywne paski narzędzi. Jeśli żaden z pasków narzędzi nie jest aktywny, to polecenie będzie wysłane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itd.). Jeśli żaden obiekt nie jest aktywny, to polecenie niczego nie wykona.

? proszę [narzędzia przybornik][schowajMnie]
? słuchaj "narzędzia
? pokażMnie
? przybornik'pokażMnie
włącz | P | To samo, co pn1'ustalDostępny "prawda.
wszystkiez klasa

wszystkiez jednostka

 F Lista nazw wszystkich jednostek potomnych klasy będącej daną i żyjących na bieżącym adresacie – pasku narzędzi:

? pokaż narzędzia'wszystkiez "SpecPrzycisk
[prz7 prz8 prz9 prz10 prz11 prz12]
? proszę "narzędzia [wykwp [proszę :% [ps rada]] wszystkiez "SpecPrzycisk]

Nowy żółw
Nowa plansza
Nowy przycisk
Nowe pole tekstowe
Multimedia
Nowy gadżet…
wyłącz | P | To samo, co pn1'ustalDostępny "fałsz.


Żółw: ogólny opis

Ta klasa implementuje tradycyjną grafikę żółwia - jest podstawową klasą obiektów w Logo i Imagine. Żółwie są małymi graficznymi kursorami, mającymi swoje widoczne kształty (często animowane), które mogą kreślić odcinki, łamane, wielokąty, wyświetlać teksty, wykonywać polecenia pierwotne oraz polecenia zdefiniowane przez użytkownika, poruszać się po ekranie (latać, pływać, skakać, spacerować...) lub wyświetlać grafiki bądź inne obiekty. Wiele poleceń używa żółwi - są one nazywane poleceniami grafiki żółwia.

Nowy żółw może być utworzony w jeden z następujących sposobów:

  • przyciskiem Nowy żółw z paska narzędzi.

  • poleceniem nowy "Żółw [… ustawienia …].
  • poleceniem (nowyObiekt "Żółw ustawienie wartość ustawienie wartość … )

Żółw utworzony w ten sposób jest jednostką pierwotnej klasy Żółw.

Można także utworzyć klasę pochodzącą od klasy Żółw, w której niektóre ustawienia zostaną zmienione, z własnymi zmiennymi obiektowymi, zdarzeniami i/lub poleceniami. Następnie można utworzyć jednostkę tej klasy.

Można także użyć żółwia jako prototypu i utworzyć żółwia bazującego na tym obiekcie.

Każdy z żółwi jest zawsze tworzony albo na stronie, albo na planszy (która jest nazywana jego miejscem). Jeśli nie określimy pozycji żółwia (w obrębie strony czy planszy) podczas tworzenia go, to będzie on utworzony na środku swego miejsca (niekoniecznie w punkcie [0 0]).


Żółw: ustawienia

animacja; ustalAnimację
czcionka; font; ustalCzcionkę; ustalFont
dotyk; ustalDotyk
faza; ustalFazę; ufa
grubość; gp; ustalGrubość; ustalGp; ugp
kierunek; ustalKierunek; skieruj; skier
klatka; ustalKlatkę
klikprost; ustalKlikprost
kolmal; kolzam; ustalKolMal; ustalKolZam; ukm
kolpis; ustalKolPis; ukp
kolPos; ustalKolPos
nazwa
pisak; ustalPisak
postać; ustalPostać
poz; ustalPoz; napoz
pozabs; ustalPozabs
pozX; ustalPozX; noweX
pozY; ustalPozY; noweY
przeciąganie; ustalPrzeciąganie
skalaPos; ustalSkalęPos
stanWyjściowy; ustalStanWyjściowy
stylZakresu; ustalStylZakresu
tempo; ustalTempo
trybFaz; ustalTrybFaz
widoczny; ustalWidoczny
wzórMal; wzórZam; ustalWzórMal; ustalWzórZam; uwm
wzórpis; wzp; ustalWzórPis; ustalWzp; uwp; uwz
zakres; ustalZakres
zakwid; ustalZakwid

Podczas tworzenia nowego żółwia może być używana lista ustawień: nowy "Żółw [ … ] lub (nowyObiekt "Żółw … ). Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla każdego z ustawień (z wyjątkiem nazwa, patrz niżej) dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla kierunku żółwia są to: bezparametrowa funkcja kierunek i polecenie ustalKierunek z jednym parametrem - kątem. Można więc wykonać:

? ż1'bezKońca [ustalKierunek azymut "ż2 np 0.5]

Ustawienie nazwa ma wartość nadawaną podczas tworzenia żółwia. Jeśli chcemy później ją zmienić, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie | Wartość | Opis
animacja logiczna Określa, czy będzie użyta automatyczna animacja wizerunku żółwia, dotycząca jego klatek lub kodu rysunku. Zobacz też Fazy i animacja.

Domyślną wartością jest prawda.
czcionka
Skrót:
font 		czcionka Zobacz w Wyświetlanie tekstu.

Domyślną wartością jest [[System] [0 400 0 0 0 1]].
dotyk logiczna Jeśli dla dwóch żółwi wartością tego ustawienia jest prawda, to w przypadku ich kolizji będzie wywołane zdarzenie gdyKolizja dla tego z nich, który swym ruchem tę kolizję spowodował.

Domyślną wartością jest fałsz.
faza liczba Zobacz w Fazy i animacja.

Domyślną wartością jest 1.
grubość
Skrót:
gp 		grubość pisaka Zobacz w Kolor, grubość i wzór pisaka.

Domyślną wartością jest 1.
kierunek kąt Określa bieżący kierunek żółwia.

Domyślną wartością jest 0 stopni, co odpowiada kierunkowi pionowo w górę.
klatka liczba Zobacz w Fazy i animacja.

Domyślną wartością jest 1.
klikprost logiczna Jeśli ma wartość fałsz, to żółw nie rozpozna kliknięć w obrębie przezroczystego fragmentu jego wizerunku. Jeśli ma wartość prawda, to żółw rozpozna, że nastąpiło na nim kliknięcie nawet wówczas, gdy nastąpi ono w obrębie jego przezroczystego fragmentu.

Jest to szczególnie istotne w sytuacjach, gdy mamy do czynienia z wzajemnym nachodzeniem żółwi na siebie.

Domyślną wartością jest fałsz.
kolmal
Również:
kolzam 		kolor Zobacz w Zamalowywanie i wzory malowania.

Domyślną wartością jest czarny.
kolpis kolor pisaka Zobacz w Kolor, grubość i wzór pisaka.

Domyślną wartością jest czarny.
kolPos kolor Zobacz w Skala i kolor postaci.

Domyślną wartością jest [], co odpowiada sytuacji braku koloru aktywnej postaci.
nazwa słowo Może być użyte tylko podczas tworzenia żółwia.

Wartość określa nazwę tworzonego żółwia.

Jeśli nie zostanie użyte, to tworzony żółw otrzyma unikalną nazwę, składającą się z wartości prefiksNazwy (zwykle litery ż) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie. Jeśli chcemy odwołać się do określonego obiektu, to zwykle używamy jego nazwy. Innym sposobem jest użycie obiektów-aliasów.

pisak stan-pisaka Określa stan pisaka żółwia. Musi być jednym z następujących słów: podnieś, opuść, ścieranie, odwracanie lub ich skrótów (pod, opu, ścier, odwr).

Domyślną wartością jest opuść (pisak opuszczony).
postać postać
kod rysunku 		Zobacz w Postaci żółwia.

Domyślna wartość pokazana jest poniżej:
poz punkt Jeśli zostanie użyte w liście ustawień podczas tworzenia nowego żółwia, to określa (we współrzędnych kartezjańskich strony lub planszy , na której żyje żółw) startową pozycję żółwia. Jeśli nie zostanie użyte w liście ustawień podczas tworzenia nowego żółwia, to nowy żółw zostanie umieszczony na środku strony lub planszy.

Wartością tego ustawienia jest aktualna pozycja żółwia.
pozabs | punkt | Określa pozycję żółwia w bezwzględnych współrzędnych jego miejsca. Domyślną wartością jest punkt znajdujący się w środku miejsca żółwia.
pozX liczba Wartość liczba określa X-ową współrzędną pozycji żółwia.

Jeśli zmienimy wartość tego ustawienia za pomocą ustalPozX dla istniejącego żółwia, to zmieni on swoją pozycję poz poprzez zmianę swej współrzędnej X-owej (przesunie się w lewo lub w prawo).
pozY liczba Wartość liczba określa Y-ową współrzędną pozycji żółwia.

Jeśli zmienimy wartość tego ustawienia za pomocą ustalPozY dla istniejącego żółwia, to zmieni on swoją pozycję poz poprzez zmianę swej współrzędnej Y-owej (przesunie się w górę lub w dół).
przeciąganie logiczna Jeśli ma wartość prawda, żółw może być ciągnięty lewym przyciskiem myszy. Jeśli jednocześnie żółw ma opuszczony pisak, to podczas przeciągania będzie rysowana linia.

Jeśli ponadto przezroczystość ma wartość prawda, to możemy żółwia chwycić w dowolnym punkcie jego wizerunku, nawet gdy jest przezroczysty. Domyślnie możliwe jest chwycenie żółwia jedynie w obrębie jego nieprzezroczystej części.

Domyślną wartością jest fałsz.
skalaPos liczba
[ licz1 licz2 ] 		Zobacz w Skala i kolor postaci.

Domyślną wartością jest 1, co odpowiada brakowi przeskalowania.
stanWyjściowy [[X Y] kąt ] Zobacz w Kierunek i pozycja.

O ile nie został zmieniony początek miejsca żółwia (tzn. jest nadal w jego środku), to domyślną wartością jest [[0 0] 0].
stylZakresu stylZakresu Zobacz w Zakres i styl zakresu.

Domyślną wartością jest sklej.
tempo liczba Dana liczba określa opóźnienia czasowe przy wyświetlaniu postaci żółwia. Dzieje się tak również wówczas, gdy postać jest określona za pomocą kodu rysunku. Kolejne elementy są wyświetlane opóźnieniem czasowym równym iloczynowi 100 i wartości tempo. Na przykład, dla tempo równego 2, animacja klatek postaci żółwia lub elementów kodu rysunku, będzie dwukrotnie spowolniona. Dla wartości 0.5 - będzie dwukrotnie przyspieszona. Animacja będzie najszybsza dla tempo równego 0. Dla wartości ujemnych animacja zostanie zatrzymana.

Domyślną wartością jest 1.
trybFaz logiczna Zobacz w Fazy i animacja.

Domyślną wartością jest fałsz.
widoczny logiczna Określa, czy tworzony żółw będzie widoczny, czy ukryty. Domyślnie:
  • żółw tworzony z jednostki ukrytej, też będzie ukryty.
  • żółw tworzony jako jednostka klasy w której ustawienie widoczny ma wartość fałsz, też będzie ukryty.

Możemy zmienić wartość ustawienia widoczny w dowolnym momencie, wydając polecenie ustalWidoczny "prawda, albo pż. Polecenie ustalWidoczny "fałsz jest równoważne poleceniu sż.
wzórMal
Również:
wzórZam 		wzór malowania Zobacz w Zamalowywanie i wzory malowania.

Domyślną wartością jest 0.
wzórpis
Skrót:
wzp 		wzór pisaka Zobacz w Kolor, grubość i wzór pisaka.

Domyślną wartością jest 0, co odpowiada ciągłej linii.
zakres prostokąt
[] 		Zobacz w Zakres i styl zakresu.

Domyślną wartością jest [], co odpowiada całej stronie lub planszy na której żyje żółw.
zakwid prostokąt Zobacz w Pokazywanie i ukrywanie żółwi.

Domyślną wartością jest [], co odpowiada temu, że całe miejsce żółwia jest zakresem jego widoczności.


Żółw: zmienne wspólne

Klasa Żółw ma zmienne wspólne. Oznacza to, że są one dzielone i mogą być użyte przez każdego żółwia.

Nazwa | Opis
menuKontekstowe Jej wartością jest menu , które wyświetla się po kliknięciu prawym przyciskiem myszy w obrębie postaci żółwia. Poniżej możesz obejrzeć przykład pokazujący, jak może ono wyglądać. Zauważmy, że w wielu miejscach tego menu pojawia się nazwa żółwia.

nazwyZdarzeń | Jej wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego żółwia, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowej (tworzonej) jednostki klasy Żółw, zwykle ż1, ż2, ż3 … itd. Jeśli chcemy zmienić nazwę żółwia, to możemy to zrobić w dialogu Zmień mnie każdego z istniejących żółwi, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę klasy Żółw ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Na przykład:

? nowaKlasa "Żółw "MójŻółw [wspólne'prefiksNazwy żółw grubość 6]
? nowy "MójŻółw [poz [20 0]]
? nowy "MójŻółw [poz [60 0]]

utworzy żółwie o nazwach żółw1, żółw2.

Domyślną wartością jest ż.


Żółw: zdarzenia

Klasa Żółw rozpoznaje wiele zdarzeń, a szczególnie często zdarzenia związane z klikaniem myszą (jej lewym, prawym lub środkowym przyciskiem), podwójne kliknięcia, ciągnięcie itd. Warto pamiętać, że:

  • Kiedy żółw rozpozna, że zaszło zdarzenie, to zainicjowany zostanie proces zdarzenia. Początkowym adresatem tego procesu będzie sam żółw, a lista aktywnych żółwi stanie się pusta.
  • Czasem trudno jest spowodować zdarzenie polegające na podwójnym kliknięciu poruszającego się żółwia - oba kliknięcia muszą nastąpić w krótkim odstępie czasu i oba muszą nastąpić w obrębie wizerunku klikanego żółwia.
  • Każde podwójne kliknięcie jest rozpoznawane także jako pojedynczy klik. Oznacza to, że w takiej sytuacji będą zainicjowane procesy zdarzeń gdyKlik i gdyDwuKlik (o ile zostały dla danego żółwia zdefiniowane).

Oto lista zdarzeń rozpoznawanych przez żółwie:

[gdyCiągniesz gdyDwuKlik gdyKlik gdyKolizja gdyLewyWciśnięty gdyLewyZwolniony gdyŁadujesz gdyMyszJedzie gdyMyszNajedzie gdyMyszZjedzie gdyPrawyWciśnięty gdyPrawyZwolniony gdyRuchJoysticka gdyŚrodkowyWciśnięty gdyŚrodkowyZwolniony gdyTworzysz gdyWciśnięty1PJ gdyWciśnięty2PJ gdyWciśnięty3PJ gdyWciśnięty4PJ gdyZwolniony1PJ gdyZwolniony2PJ gdyZwolniony3PJ gdyZwolniony4PJ].


Żółw: procedury

Procedury klasy Żółw można znaleźć w:

Żółwie i geometria żółwia
Ustawienia - polecenia i funkcje związane z wszystkimi standardowymi ustawieniami żółwi.
Zmienne wspólne - polecenia i funkcje związane ze zmiennymi obiektu.

Poniższe procedury także dotyczą żółwi. Należy pamiętać, że jeśli uczynimy aktywnym jednego lub więcej żółwi (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez każdego aktywnego żółwia.

Procedura | Typ | Opis
pozklik | F | Wektor, którego początkiem jest aktualna pozycja żółwia, a końcem - pozycja ostatniego kliknięcia myszą w obrębie wizerunku żółwia.
przesuń | P | Odpowiednik opcji Przesuń z menu kontekstowego. Standardowy kursor myszy jest ukrywany, a zamiast niego na środku wizerunku żółwia pojawia się symbol ręki. Następnie możliwe jest przesuwanie żółwia myszą, w obrębie jego miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.


PoleTekstowe: ogólny opis

Pole tekstowe jest, wyglądającym podobnie do okna, obiektem służącym do wyświetlania tekstów na stronie lub planszy. Może po prostu wyświetlać teksty lub być w trybie edycji (wystarczy nań podwójnie kliknąć) - wówczas możemy samodzielnie wpisywać do niego teksty.

W celu utworzenia nowego pola tekstowego możemy:

  • kliknąć przycisk Nowe pole tekstowe w Narzędziach, albo
  • użyć polecenia nowy "PoleTekstowe [ … ustawienia … ] lub(nowyObiekt "PoleTekstowe … ustawienia … ).

Nad polem tekstowym będącym w trybie edycji wyświetla się pasek narzędzi czcionek. Pozwala on na wybór kroju, stylu, rozmiaru i koloru czcionki. Wybór ten dotyczy tekstu, który będzie następnie wpisywany, bądź zaznaczonego fragmentu już wpisanego tekstu. Każde pole tekstowe zapamiętuje swoje ostatnie ustawienia czcionki. Oznacza to, że nawet po ukryciu paska narzędzi czcionki (lub po naciśnięciu F9 lub po wyjściu z trybu edycji lub po ukryciu pola tekstowego) i ponownym otwarciu później - ustawienia czcionki dla danego pola tekstowego będą odtworzone. Pasek narzędzi czcionki można pokazywać i ukrywać także modyfikując wartość ustawienia widoczneNarzędzia - patrz dalej.

Kolor tła pola tekstowego może być przezroczysty - patrz dialog Zmień mnie.


PoleTekstowe: ustawienia

czcionka; font; ustalCzcionkę; ustalFont
dostępny; ustalDostępny
edycja; ustalEdycję
kolor; ustalKolor
kolTła; ustalKolTła
nazwa
poz; ustalPoz; napoz
pozabs; ustalPozabs
przezroczystość; ustalPrzezroczystość
rada; ustalRadę
rozmiar; ustalRozmiar
RTF; ustalRTF
stałaEdycja; ustalStałąEdycję
widoczneNarzędzia; ustalWidoczneNarzędzia
widoczny; ustalWidoczny
zawartość; ustalZawartość
zaznaczenie; ustalZaznaczenie
zaznaczonyTekst; ustalZaznaczonyTekst

Podczas tworzenia nowego pola tekstowego może być używana lista ustawień: nowy "PoleTekstowe [ … ]. Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla każdego z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla rozmiaru pola tekstowego są to: bezparametrowa funkcja rozmiar i polecenie ustalRozmiar z jednym parametrem - listą [ szerokość wysokość ]. Zatem można polecić wykonać:

? pt1'ustalRozmiar pt1'rozmiar + [0 60]
? pt1'powtórz 100 [ustalPoz poz + [1 0]]

Wyjątkiem jest ustawienie nazwa - ma wartość nadawaną podczas tworzenia pola tekstowego. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie | Wartość | Opis
czcionka
Również:
font 		czcionka Określa czcionkę, jaką tekst jest wyświetlany w polu tekstowym. Każdy znak może mieć inna czcionkę. Jeśli zaznaczony jest ciąg znaków, to: wartością ustawienia jest czcionka pierwszego zaznaczonego znaku, zaś polecenie ustalCzcionkę zmieni czcionkę wszystkich zaznaczonych znaków. Jeśli żaden znak nie jest zaznaczony, to ustawienie to określa czcionkę znaku jaki pojawi się po naciśnięciu klawisza na klawiaturze.
dostępny logiczna Jeśli ma wartość fałsz, to pole tekstowe nie może być w trybie edycji, nie może być przeciągane myszą, ani nie są obsługiwane zdarzenia związane z myszą.

Domyślną wartością jest prawda.
edycja | logiczna | Ma wartość prawda tylko wówczas, gdy pole tekstowe jest w trybie edycji. W przeciwnym przypadku ma wartość fałsz. W każdym momencie, w trybie edycji może być co najwyżej jedno pole tekstowe, chyba, że zmienimy wartość ustawienia stałaEdycja dla pewnych pól.
kolor | kolor | Określa kolor tekstu w polu tekstowym. Wszystkie kolory są dopuszczalne. Każdy znak może mieć inny kolor. Jeśli zaznaczony jest ciąg znaków, to wartością ustawienia jest kolor pierwszego zaznaczonego znaku, zaś polecenie ustalKolor zmieni kolor wszystkich zaznaczonych znaków. Jeśli żaden znak nie jest zaznaczony, to ustawienie to określa kolor znaku jaki pojawi się po naciśnięciu klawisza na klawiaturze.
kolTła kolor Określa kolor tła pola tekstowego. Wszystkie kolory są dopuszczalne. W poleceniu ustalKolTła możemy użyć jako daną nawet losowy kolor:

? pt1'ustalKolTła jld

Należy pamiętać, że całe pole tekstowe ma ten sam kolor tła.
nazwa słowo Może być użyte tylko podczas tworzenia pola tekstowego.

Wartość określa nazwę tworzonego pola tekstowego.

Jeśli nie zostanie użyte, to tworzone pole tekstowe otrzyma unikalną nazwę, składającą się z wartości prefiksNazwy (zwykle liter pt) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.

Jeśli chcemy odwołać się do określonego obiektu, to zwykle używamy jego nazwy. Innym sposobem jest użycie obiektów-aliasów.
poz | punkt | Określa współrzędne kartezjańskie lewego górnego rogu pola tekstowego w jego miejscu, tj. na stronie lub planszy. Dotyczy to sytuacji, gdy pole tekstowe nie jest w trybie edycji. W trybie edycji rozmiar pola tekstowego jest zwiększany o grubość wyświetlanej ramki.
pozabs | punkt | Określa bezwzględne współrzędne lewego górnego rogu pola tekstowego w jego miejscu, tj. na stronie lub planszy.
przezroczystość logiczna Określa, czy tło pola tekstowego jest przezroczyste.

Domyślną wartością jest fałsz.
rada | tekst | Puste słowo lub dowolny tekst.
rozmiar [ n n ] Wartość jest dwuelementową listą liczb dodatnich, określającą szerokość i wysokość pola tekstowego.

Informacja ta dotyczy wielkości wnętrza pola tekstowego nie będącego w trybie edycji. Należy pamiętać o tym, że w trybie edycji rozmiar pola tekstowego zwiększa się o szerokości wyświetlanej wówczas ramki.
RTF | tekst w RTF | Zawartość pola tekstowego w formacie RTF.
stałaEdycja logiczna Jeśli ma wartość prawda, to pole tekstowe pozostaje na stałe w trybie edycji, nawet wówczas, gdy inne pole tekstowe uaktywnimy w trybie edycji.

Domyślną wartością jest fałsz.
widoczneNarzędzia logiczna Określa, czy w trybie edycji pola tekstowego widoczny jest pasek narzędzi czcionki.

Jeśli pole tekstowe jest w trybie edycji, to każdorazowe naciśnięcie F9 powoduje pokazanie/ukrycie paska narzędzi czcionki. Oznacza to, że naciśnięcie F9 powoduje ten sam efekt, co polecenie:

pt1'ustalWidoczneNarzędzia nie pt1'widoczneNarzędzia.

Domyślną wartością jest prawda.
widoczny logiczna Ma wartość prawda, gdy pole tekstowe jest widoczne. Dla wartości fałsz pole tekstowe jest ukryte.

Domyślną wartością jest prawda.
zawartość tekst Wartością jest słowo zawierające bieżącą zawartość pola tekstowego, bez informacji o formatowaniu i kolorze. Jeśli pole tekstowe zawiera spacje, to użyty jest specjalny sposób zapisu tekstu.

Na przykład, Jak się masz?, napisane w jednym wierszu, będzie reprezentowane przez |Jak się masz?| (patrz pierwszy przykład). Te same trzy słowa, zapisane w trzech oddzielnych wierszach, po jednym w każdym, będą reprezentowane przez Jak¶się¶masz? (drugi przykład). Trzeci przykład będzie reprezentowany przez
|Jak się¶masz?¶¶¶Czy odpowiesz mi,¶Jacku?|.
zaznaczenie [p q]

gdzie p i q są nieujemnymi liczbami całkowitymi

 Fragment [p q] określa, jaki ciąg znaków pola tekstowego jest zaznaczony. Liczba p określa od którego znaku, zaś liczba q określa ile znaków jest w danej chwili zaznaczonych w polu tekstowym.

Należy pamiętać, że:

  • Znaki tekstu są numerowane od zera, tj. 0, 1, 2… itd.
  • Koniec akapitu (ukryty znak ¶) zawiera 2 znaki.
  • Jeśli q jest 0, to nie jest zaznaczony żaden ciąg znaków, a kursor znajduje się bezpośrednio przed p - tym znakiem.
  • Po utworzeniu pola tekstowego wartością ustawienia jest [0 0]. Podczas dopisywania kolejnych znaków wartością ustawienia jest [p 0], gdzie p jest długością wpisanego tekstu.
zaznaczonyTekst tekst Zawiera tę część tekstu znajdującego się w polu tekstowym, która jest zaznaczona. Polecenie ustalZaznaczonyTekst zastępuje zaznaczony fragment tekstu nowym, będącym daną polecenia. Jeśli nie jest zaznaczony żaden fragment tekstu, to polecenie ustalZaznaczonyTekst wpisze swoją daną w miejscu kursora.

Należy pamiętać, że wartość zaznaczonyTekst nie zawiera żadnych informacji o formatowaniu tekstu.


PoleTekstowe: zmienne wspólne

Klasa PoleTekstowe ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez każde pole tekstowe.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa | Opis
menuKontekstowe Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy w obrębie pola tekstowego. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać:

nazwyZdarzeń | Wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego pola tekstowego, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowego (tworzonego) pola tekstowego, zwykle pn1, pn2, pn3 … itd. Jeśli chcemy zmienić nazwy pól tekstowych, to możemy to zrobić w dialogu Zmień mnie każdego z istniejących pól, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę pól tekstowych ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Domyślną wartością jest pt.

Przykład:

? nowaKlasa "PoleTekstowe "MojePoleTekstowe
    [wspólne'prefiksNazwy tekst
     kolTła pomarańczowy rozmiar [300 55]]
? nowy "MojePoleTekstowe []

utworzy pole tekstowe o nazwie tekst1.


PoleTekstowe: zdarzenia

Pole tekstowe rozpoznaje wiele zdarzeń. Wśród nich, szczególnie często zdarzenie gdyZmieniasz. Zdarzenie to zachodzi wówczas, gdy zmieniamy zawartość (tekst, czcionkę, kolor itd.) pola tekstowego. Zachodzi ono również, gdy wykonujemy polecenie ustalCzionkę, ustalKolor, ustalRTF bądź ustalZawartość.

Oto pełna lista standardowych zdarzeń rozpoznawanych przez klasę PoleTekstowe:

[gdyCiągniesz gdyDwuKlik gdyKlik gdyLewyWciśnięty gdyLewyZwolniony gdyŁadujesz gdyMyszJedzie gdyMyszNajedzie gdyMyszZjedzie gdyPrawyWciśnięty gdyPrawyZwolniony gdyŚrodkowyWciśnięty gdyŚrodkowyZwolniony gdyTworzysz gdyZmieniasz]


PoleTekstowe: Procedury

autoAkcja
drukujMnie
jakoPostać
pokażMnie
pozklik
przesuń
schowajMnie
stempluj
włącz
wyłącz

Poza procedurami związanymi z ustawieniami i zmiennymi obiektu, dodatkowo mamy do dyspozycji wymienione tu procedury, które także odnoszą się do pól tekstowych. Jeśli uczynimy aktywnym jedno lub więcej pól tekstowych (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez każde aktywne pole tekstowe.

Procedura | Typ | Opis
autoAkcja F Określa domyślną akcję dla klasy PoleTekstowe. Jest zdefiniowana następująco:

oto autoAkcja
 wynik zawartość
już

Oznacza to, że jeśli użyjemy nazwy pola tekstowego jako funkcji, np. pokaż pt1, to otrzymamy bieżącą zawartość pola tekstowego pt1. Zatem polecenie pokaż pt1 jest skróconą wersją polecenia pokaż pt1'zawartość.
W razie potrzeby możemy przedefiniować tę funkcję dla całej klasy, dowolnej podklasy lub dla wybranych jednostek klasy.
drukujMnie | P | Drukuje bieżącą zawartość pola tekstowego. Jeśli jest więcej niż jedno aktywne pole tekstowe, to będzie wydrukowane każde z nich, na oddzielnych kartkach.
jakoPostać | F | Podaje postać składającą się z jednej fazy, zawierającą kopię widoku pierwszego z aktywnych pól tekstowych, które nie jest w trybie edycji. Zaczepieniem tej postaci jest jej lewy górny róg.
pokażMnie P Wyświetla wszystkie aktywne pola tekstowe. Jeśli nie ma aktywnych pól tekstowych, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, stron itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.

? pt1'pokażMnie
pozklik | F | Wektor, którego początek jest lewym górnym rogiem pola tekstowego, a koniec - pozycją ostatniego kliknięcia myszą w obrębie tego pola.
przesuń | P | Odpowiednik opcji Przesuń z menu kontekstowego. Standardowy kursor myszy jest ukrywany, a zamiast niego na środku pola tekstowego pojawia się symbol ręki. Następnie możliwe jest przesuwanie pola tekstowego (wraz z ewentualnym paskiem narzędzi czcionki) myszą, w obrębie jego miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.
schowajMnie P Ukrywa wszystkie aktywne pola tekstowe. Jeśli nie ma aktywnych pól tekstowych, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, stron itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.

? słuchaj "pt1 pokażMnie
? proszę "pt2 [schowajMnie]
? ustalKolTła [230 246 216]
stempluj | P | Odstemplowuje zawartości wszystkich aktywnych pól tekstowych na ich miejscach.
włącz | P | Dla pola tekstowego pt1 jest tym samym, co pt1'ustalDostępny "prawda.
wyłącz | P | Dla pola tekstowego pt1 jest tym samym, co pt1'ustalDostępny "fałsz.


Suwak: ogólny opis

Suwaki są widocznymi narzędziami używanymi do określania lub wizualizowania wartości. Kiedy tworzymy lub modyfikujemy suwak, możemy określać jego przedział możliwych wartości, bieżącą wartość, a także rozmiar, kolor tła (może być przezroczyste), kierunek (poziomy lub pionowy), radę, pozycję i zachowanie (zdarzenia, zmienne obiektu i procedury) oraz inne ustawienia.

W celu utworzenia nowego suwaka możemy:

  • kliknąć przycisk Nowy gadżet w Narzędziach i wybrać Poziomy suwak lub Pionowy suwak, albo
  • użyć polecenia nowy "Suwak [ …ustawienia… ] lub (nowyObiekt "Suwak … ustawienia … ).

Suwaki rozpoznają różne zdarzenia, szczególnie często gdyZmieniasz i gdyPoZmianie.


Suwak: ustawienia

dostępny; ustalDostępny | pozabs; ustalPozabs
kolTła; ustalKolTła | pozycjaSuwadła; posuw; ustalPosuw
maks; max; ustalMaks; ustalMax | przezroczystość; ustalPrzezroczystość
min; ustalMin | rada; ustalRadę
nazwa | rozmiar; ustalRozmiar
pionowo; ustalPionowo | rozmiarSuwadła; ustalRozmiarSuwadła
poz; ustalPoz; napoz | widoczny; ustalWidoczny

Podczas tworzenia nowego suwaka może być używana lista ustawień: nowy "Suwak [ … ]. Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla każdego z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla kierunku suwaka są to: bezparametrowa funkcja pionowo i polecenie ustalPionowo z jednym parametrem - wartością logiczna prawda lub fałsz. Zatem można polecić wykonać np.:

? suw1'ustalPionowo "fałsz
? proszę "suw1 [ustalMaks maks + 5]

Wyjątkiem jest ustawienie nazwa - ma wartość nadawaną podczas tworzenia suwaka. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie | Wartość | Opis
dostępny logiczna Jeśli ma wartość fałsz, to nie można myszą zmienić pozycji suwadła (choć nadal można to uczynić poleceniem ustalPosuw), suwak nie reaguje na zdarzenia związane z myszą.

Domyślną wartością jest prawda.
kolTła kolor Określa kolor tła suwaka.

Domyślną wartością jest jasnoszary.
maks
Skrót:
max 		liczba Określa największą wartość, jaka może być reprezentowana przez suwak. Jeśli dana dla polecenia ustalMaks nie jest liczbą całkowitą, to jest zaokrąglana za pomocą funkcji int.

Domyślną wartością jest 100.
min liczba Określa najmniejszą wartość, jaka może być reprezentowana przez suwak. Jeśli dana dla polecenia ustalMin nie jest liczbą całkowitą, to jest zaokrąglana za pomocą funkcji int.

Domyślną wartością jest 0.
nazwa słowo Może być użyte tylko podczas tworzenia suwaka.

Wartość określa nazwę tworzonego suwaka.

Jeśli nie zostanie użyte, to tworzony suwak otrzyma unikalną nazwę, składającą się z wartości zmiennej prefiksNazwy (domyślnie słowa suw) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.

Jeśli chcemy odwołać się do określonego obiektu, to zwykle używamy jego nazwy. Innym sposobem jest użycie obiektów-aliasów.
pionowo logiczna Kierunek suwaka: jeśli wartością jest fałsz, to suwak jest poziomy, jeśli wartością jest prawda, to suwak jest pionowy.

Kierunek suwaka można zmieniać.

Domyślną wartością jest fałsz.
poz | punkt | Określa współrzędne kartezjańskie lewego górnego rogu suwaka w jego miejscu, tj. na stronie lub planszy.
pozabs | punkt | Określa bezwzględne współrzędne lewego górnego rogu suwaka w jego miejscu, tj. na stronie lub planszy.
pozycjaSuwadła
Skrót:
posuw 		liczba Bieżąca wartość suwaka, adekwatna do pozycji suwadła. Jest liczbą całkowitą z zakresu od min do maks.
przezroczystość logiczna Jeśli ma wartość prawda, to tło suwaka jest przezroczyste. W przeciwnym przypadku tło suwaka jest jasnoszare lub ma kolor określony przez ustawienie kolTła.

Domyślną wartością jest fałsz.
rada | tekst | Puste słowo lub dowolny tekst.
rozmiar | [ n n ] | Wartość jest dwuelementową listą liczb dodatnich, określającą szerokość i wysokość suwaka.
rozmiarSuwadła liczba Określa rozmiar suwadła. Musi być liczbą naturalną.

Domyślną wartością jest 18.
widoczny logiczna Ma wartość prawda, gdy suwak jest widoczny. Dla wartości fałsz suwak jest ukryty.

Domyślną wartością jest prawda.


Suwak: zmienne wspólne

Klasa Suwak ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez każdy suwak.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa | Opis
menuKontekstowe Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy w obrębie suwaka. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać:

nazwyZdarzeń | Wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego suwaka, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowego (tworzonego) suwaka, zwykle suw1, suw2, suw3 … itd. Jeśli chcemy, aby suwaki miały inne nazwy, to możemy zmienić ich nazwy w dialogu Zmień mnie każdego z istniejących suwaków, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę suwaków ze zmieniona wartością zmiennej wspólnej prefiksNazwy.

Domyślną wartością jest suw.

Przykład:

? nowaKlasa "Suwak "SuwakPrędkości
    [wspólne'prefiksNazwy prędkość
     przezroczystość prawda maks 155]
? nowy "SuwakPrędkości []

utworzy suwak o nazwie prędkość1.


Suwak: zdarzenia

Suwak rozpoznaje wiele zdarzeń. Wśród nich, szczególnie często zdarzenia gdyZmieniasz i gdyPoZmianie.

Zdarzenie gdyZmieniasz zachodzi, gdy chwycimy i przesuniemy suwadło - wielokrotnie, za każdym razem przy spowodowanej tym przesunięciem zmianie wartości ustawienia pozycjaSuwadła. Po zwolnieniu suwadła (zwolnieniu przycisku myszy) jednokrotnie generowane jest zdarzenie gdyPoZmianie.

Przy użyciu polecenia ustalPoSuw również generowane są zdarzenia: gdyZmieniasz (jednokrotnie) oraz gdyPoZmianie. Jednak dzieje się tak tylko wtedy, gdy po wykonaniu tego polecenia ustawienie pozycjaSuwadła zmieni swoją wartość.

Oto pełna lista standardowych zdarzeń rozpoznawanych przez klasę Suwak:

[gdyCiągniesz gdyDwuKlik gdyKlik gdyLewyWciśnięty gdyLewyZwolniony gdyŁadujesz gdyMyszJedzie gdyMyszNajedzie gdyMyszZjedzie gdyPoZmianie gdyPrawyWciśnięty gdyPrawyZwolniony gdyŚrodkowyWciśnięty gdyŚrodkowyZwolniony gdyTworzysz gdyZmieniasz]


Suwak: procedury

autoAkcja
pokażMnie
pozklik
przesuń
schowajMnie
włącz
wyłącz

Poza procedurami związanymi z ustawieniami i zmiennymi obiektu, dodatkowo mamy do dyspozycji wymienione tu procedury, które także odnoszą się do suwaków. Jeśli uczynimy aktywnym jeden lub więcej suwaków (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez każdy aktywny suwak. Do każdego suwaka możemy też odwołać się bezpośrednio, np. suw1'schowajMnie.

Procedura | Typ | Opis
autoAkcja F Określa domyślną akcję dla klasy Suwak. Jest zdefiniowana następująco:

oto autoAkcja
  wynik pozycjaSuwadła
już

Oznacza to, że jeśli użyjemy nazwy pola tekstowego jako funkcji, np. ż1'pw suw1, to otrzymamy bieżącą pozycję suwaka suw1 (a zatem żółw ż1 obróci się w prawo o kąt będący wartością ustawienia pozycjaSuwadła suwaka suw1). Zatem polecenie ż1'pw suw1 jest skróconą wersją polecenia ż1'pw suw1’pozycjaSuwadła.
W razie potrzeby możemy przedefiniować tę funkcję dla całej klasy, dowolnej podklasy lub dla wybranych jednostek klasy.
pokażMnie | P | Wyświetla wszystkie aktywne suwaki. Jeśli nie ma aktywnych suwaków, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.
pozklik | F | Wektor, którego początek jest lewym górnym rogiem suwaka, a koniec - pozycją ostatniego kliknięcia myszą w obrębie tego suwaka.
przesuń | P | Odpowiednik opcji Przesuń z menu kontekstowego. Standardowy kursor myszy jest ukrywany, a zamiast niego na środku suwaka pojawia się symbol ręki. Następnie możliwe jest przesuwanie suwaka myszą, w obrębie jego miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.
schowajMnie | P | Ukrywa wszystkie aktywne suwaki. Jeśli nie ma aktywnych suwaków, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.
włącz | P | Dla suwaka suw1 jest tym samym, co suw1'ustalDostępny "prawda.
wyłącz | P | Dla suwaka suw1 jest tym samym, co suw1'ustalDostępny "fałsz.


Przycisk: ogólny opis

Przyciski są widocznymi elementami sterującymi, zwykle mającymi swoje ustawienia. Zwykle po kliknięciu lewym przyciskiem myszy specyficznie reagują, powodując, że np. żółw idzie naprzód, albo czyszczona jest zawartość strony, albo rozpoczyna się animacja itd. Zanim przycisk zareaguje, staje się on tymczasowo bieżącym adresatem, a za aktywny obiekt/obiekty uznawane są wszystkie aktualnie aktywne obiekty znajdujące się na stronie do której przycisk należy (czyli na stronie mojaStrona). Reakcje przycisku są opisywane za pomocą procedur obsługi zdarzeń.

Jednostki klasy Przycisk są tworzone poprzez kliknięcie na Nowy przycisk w Narzędziach albo za pomocą poleceń nowy lub nowyObiekt.

W celu utworzenia nowego, prostego przycisku należy:

  1. kliknąć przycisk Nowy przycisk w Narzędziach,
  2. kliknąć na stronie lub planszy - zostanie utworzony przycisk w swej domyślnej postaci,
  3. kliknąć nowoutworzony obiekt prawym przyciskiem myszy - pojawi się menu kontekstowe,
  4. wybrać pierwszą z opcji - dialog Zmień mnie
  5. w polu gdyWciśnięty: wpisać reakcję na naciśnięcie przycisku, np. naprzód 100 prawo 90,
  6. zamknąć okno dialogowe naciskając OK.

Od tej pory, po każdym naciśnięciu utworzonego przycisku, wszystkie aktywne żółwie poruszą się naprzód o 100 i obrócą w prawo o 90 stopni. Jeśli żaden z żółwi nie jest aktywny, to naciśnięcie przycisku nie spowoduje żadnej akcji (chyba, że aktywny jest obiekt innego typu, np. pole tekstowe - wówczas pojawi się komunikat o błędzie: Nie wiem jak wykonać np.).

Korzystając z poleceń języka możemy utworzyć przycisk poleceniem nowy lub nowyObiekt:

? nowy "Przycisk lista-ustawień

Wśród ustawień, jakie możemy użyć dla określenia szczegółów wyglądu i działania przycisku jest jedno szczególnie ważne - ustawienie przełącznik o wartości prawda lub fałsz (domyślnie fałsz). To ustawienie dzieli jednostki klasy Przycisk na dwie grupy: zwykłe przyciski (dla nich przełącznik ma wartość fałsz) i przełączniki (dla nich przełącznik ma wartość prawda). Różnica pomiędzy nimi dotyczy ich działania, jakkolwiek większość ich właściwości jest taka sama.


Przycisk

Może być utworzony na każdej stronie, planszy lub pasku narzędzi. Podczas tworzenia go za pomocą polecenia nowy (lub nowyObiekt) możemy określić wiele ustawień, takich jak rozmiar, pozycja, ikona, napis, styl, rada itd. Poniżej omówiony jest sposób zmiany ustawień przycisku, zarówno podczas jego tworzenia (wówczas robimy to w liście ustawień), jak i później. Ustawienia, których nie zmieniamy zachowują swe wartości domyślne.

Przykłady:

? nowy "Przycisk []
? nowy "Przycisk [poz [105 -100] napis [Wyczyść wszystko] rozmiar [111 28]]
? nowy "Przycisk [poz [175 -100]
         obraz ([ustalKolPis "czerwony wielokąt [powtórz 3 [np 13 pw 120]]])
         zdarzenie'gdyWciśnięty [np 20 pw 90]]
? (nowyObiekt "Przycisk "poz [50 -100]
         "rozmiar [40 40] "napis "Idź
         "zdarzenie'gdyWciśnięty [powtórz 10 [ż1'np 10 ż1'pw 20]])

W pierwszym przykładzie tworzony jest przycisk ze standardowymi ustawieniami.

W drugim przykładzie sami określamy pozycję, napis na, rozmiar przycisku.

W trzecim przykładzie określamy pozycję, obraz (ikonę) za pomocą kodu rysunku, a także reakcję na naciśnięcie przycisku.

W ostatnim przykładzie, dla odmiany używamy polecenia nowyObiekt, tym razem tworzymy przycisk o zmienionej pozycji, rozmiarze, napisie, reagujący na wciśnięcie go.

Jeśli nie określimy adresata i w wierszu poleceń użyjemy polecenia nowy "Przycisk…, to przycisk będzie utworzony na aktywnej stronie. Jeśli chcemy utworzyć przycisk na innej stronie lub na planszy - musimy podać jej nazwę, np.:

? p6'nowy "Przycisk [poz [160 -200]]
albo
? s3'p3'nowy "Przycisk []

Przyciski różnią się od przełączników wartością ustawienia przełącznik - w tych pierwszych musi być ona fałszem (co jest wartością domyślną), w tych drugich - prawdą. Jeśli przycisk nie jest przełącznikiem, to ignorowane są dla niego ustawienia możnaZwolnićWszystkie i grupa (gdyż mają one znaczenie tylko dla przełączników). Wartość ustawienia przełącznik może być w dowolnym momencie zmieniona - zarówno podczas tworzenia przycisku, jak i później, np.

? prz1'ustalPrzełącznik "prawda

Dla każdego z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla rozmiaru przycisku są to: bezparametrowa funkcja rozmiar i polecenie ustalRozmiar z jednym parametrem - listą [ szerokość wysokość ]. Zatem można polecić wykonać:

? prz1'ustalNapis "|Czyść ekran|  ? prz1'ustalNapis pierw prz1'napis  ? powtórz 100 [proszę "prz1 [ustalPoz poz + [1 0]]]

Wyjątkiem jest ustawienie nazwa - ma wartość nadawaną podczas tworzenia przycisku. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Zobacz także:


Przycisk: pozycja i rozmiar

Ustawienie | Wartość | Opis
poz | punkt | Określa współrzędne kartezjańskie lewego górnego rogu przycisku w obrębie jego miejsca. Zakłada przy tym, że punkt [0 0] umieszczony jest - w zależności od miejsca osadzenia przycisku - w początku strony lub planszy bądź w lewym górnym rogu paska narzędzi. Kiedy zmieniamy poz, to automatycznie zmienia się również wartość ustawienia pozabs. Domyślną wartością tego ustawienia (używaną podczas tworzenia nowego przycisku poleceniem nowy lub nowyObiekt) jest początek miejsca przycisku.
pozabs | punkt | Określa pozycję lewego górnego rogu przycisku w bezwzględnych współrzędnych jego miejsca (czyli strony, planszy lub paska narzędzi; początek miejsca znajduje się w jego lewym górnym rogu). Kiedy zmieniamy pozabs, to automatycznie zmienia się również wartość ustawienia poz. Domyślną wartością tego ustawienia (używaną podczas tworzenia nowego przycisku poleceniem nowy lub nowyObiekt) jest początek miejsca przycisku, tj. strony, planszy lub paska narzędzi.
rozmiar | [ n n ] | Wartość jest dwuelementową listą liczb naturalnych, określającą szerokość i wysokość przycisku. Jeśli dane nie są liczbami całkowitymi, to są zaokrąglane do wartości całkowitych. Domyślną wartością jest [27 28].


Przycisk: ikona, napis i styl

napis; ustalNapis
przełącznik; ustalPrzełącznik
obraz; ustalObraz
styl; ustalStyl
płaski; ustalPłaski
tylkoObraz; ustalTylkoObraz

Ustawienie | Wartość | Opis
napis tekst Określa napis znajdujący się na przycisku. Jest on wyśrodkowany w obrębie przycisku, lub - gdy określony został obraz - jest połączony z nim w sposób zależny od ustawienia styl.

Jeśli dla przycisku jednocześnie:

  • tylkoObraz ma wartość fałsz (tak jest domyślnie),
  • nie jest określony obraz,
  • nie jest określony napis,

to domyślną wartością ustawienia napis jest nazwa przycisku. W przeciwnym przypadku domyślną wartością jest puste słowo.
obraz postać
kod-rysunku 		Określa wizerunek przycisku. Dana jest postacią składającą się z od 1 do 3 faz używanych dla wyświetlenia trzech różnych stanów przycisku:
  • Pierwsza faza jest używana, gdy przycisk nie jest wciśnięty i kursor myszy znajduje się poza przyciskiem, a także wtedy gdy przycisk nie jest dostępny.
  • Druga faza jest używana, gdy mysz znajduje się nad przyciskiem, ale go nie naciska.
  • Trzecia faza jest używana, gdy przycisk jest wciśnięty.

Jeśli dana postać ma tylko jedną fazę, to przycisk będzie wyglądał tak samo we wszystkich trzech wymienionych wyżej stanach.

Jeśli dana postać ma dwie fazy, to pierwsza z nich będzie użyta w pierwszym z trzech wymienionych wyżej stanów, a druga faza - w pozostałych (drugim i trzecim).

Podczas określania wartości ustawienia obraz dla przycisku (zarówno za pomocą listy ustawień w poleceniu nowy, jak i później w poleceniu ustalObraz) możemy używać następujących danych:

  • [] - aby powiedzieć, że przycisk nie ma na sobie żadnego specjalnego wizerunku (to jest wartość domyślna).
  • nazwy pliku o dowolnym akceptowanym formacie graficznym - uwaga: podczas zapisu projektu będzie zapisana tylko nazwa pliku, a nie jego zawartość.
  • postaci z jedną, dwiema lub trzema fazami.
  • kodu rysunku, który za pomocą poleceń języka opisze wygląd przycisku, identyczny dla wszystkich trzech stanów.
  • listy kodów rysunku [kod-rysunku kod-rysunku … ], z jednym, dwoma lub trzema kodami rysunku dla określenia poszczególnych stanów przycisku, np.
   ? prz1'ustalObraz [[ustalKolPis "szary4 kropka 30]
             [ustalKolPis "ciemnoniebieski kropka 30]
                    [ustalKolPis "czerwony kropka 30]]
płaski
i
tylkoObraz 		logiczna

logiczna 		Kombinacja tych dwóch ustawień określa wygląd przycisku:
  • płaski ma wartość fałsz i tylkoObraz ma wartość fałsz:
    określa widok przycisku jako charakterystyczny dla systemu Windows: z obwódką, ikoną (jeśli zostanie dodatkowo określona) i napisem (jeśli będzie dodatkowo określony),
  • płaski ma wartość prawda i tylkoObraz ma wartość fałsz:
    przycisk bez obwódki (chyba, że mysz najedzie lub kliknie na przycisk). Jeśli określimy obraz mający przezroczyste fragmenty, to będą one przezroczyste nawet na przycisku.
  • płaski ma wartość prawda i tylkoObraz ma wartość prawda:
    kompletny wizerunek przycisku jest określony przez ustawienie obraz. Żadne elementy obwódki nie są dodawane przez system Windows. Rozmiar przycisku jest określony przez największą klatkę postaci reprezentowanej przez wartość ustawienia obraz i nie da się go zmienić (inaczej niż w dwóch poprzednich przypadkach).
  • płaski ma wartość fałsz i tylkoObraz ma wartość prawda:
    ta kombinacja nie jest możliwa. Wartość ustawienia płaski będzie zignorowana.
przełącznik | logiczna | Dla zwykłych przycisków musi mieć wartość fałsz (jest to wartość domyślna). Wówczas ustawienie grupa przyjmuje wartość 0, zaś ustawienie możnaZwolnićWszystkie przyjmuje wartość prawda. Ponadto zdarzenie gdyZwolniony jest ignorowane.
styl 0, 1, 2 lub 3
  • 0 oznacza, że napis pojawi się po prawej stronie obrazu.
  • 1 oznacza, że napis pojawi się po lewej stronie obrazu.
  • 2 oznacza, że napis pojawi się pod obrazem.
  • 3 oznacza, że napis pojawi się nad obrazem.

Domyślną wartością jest 0.


Przycisk: inne ustawienia

wciśnięty; ustalWciśnięty
nazwa
dostępny; ustalDostępny
widoczny; ustalWidoczny
rada; ustalRadę

Ustawienie Wartość Opis
dostępny logiczna Określa, czy przycisk jest dostępny, tj. czy reaguje na kliknięcia myszą.

Domyślną wartością jest prawda.
nazwa słowo Może być użyte tylko podczas tworzenia przycisku.

Wartość określa nazwę tworzonego przycisku.

Jeśli nie zostanie użyte, to tworzony przycisk otrzyma unikalną nazwę, składającą się z wartości prefiksNazwy (zwykle liter prz) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.

Jeśli chcemy odwołać się do określonego obiektu, to zwykle używamy jego nazwy. Innym sposobem jest użycie obiektów-aliasów.

Należy pamiętać, że nie ma polecenia ustalNazwę. Nazwę istniejącego przycisku możemy zmienić jedynie w dialogu Zmień mnie lub używając polecenia ustalStan.
rada tekst Rada wyświetla się w małym żółtym prostokącie, gdy mysz znajdzie się nad przyciskiem.

Domyślną wartością jest puste słowo.
wciśnięty logiczna Określa, czy przycisk jest wciśnięty.

Jeśli przypiszemy mu wartość prawda, to da to taki skutek, jak wciśnięcie przycisku, wywołanie procedury zdarzenia gdyWciśnięty, a następnie zwolnienie przycisku i przypisanie temu ustawieniu wartości fałsz.

Jeśli wartością jest prawda i zmienimy ją na fałsz , to odpowiedni proces (obsługi zdarzenia) będzie przerwany.

Wymuszenie wartości prawda podczas tworzenia przycisku poleceniem nowy lub nowyObiekt nie skutkuje opisanym wyżej działaniem.

Domyślną wartością jest fałsz.
widoczny logiczna Określa, czy przycisk jest wyświetlany. Jeśli ma wartość fałsz, to przycisk będzie niewidoczny (ukryty), aż do wydania dla niego polecenia pokażMnie lub ustalWidoczny "prawda, bądź stosownej zmiany w dialogu Zmień mnie.

Domyślną wartością jest prawda.


Przycisk: zmienne wspólne

Klasa Przycisk ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez wszystkie przyciski (zwykłe i będące przełącznikami).

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa Opis
menuKontekstowe Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy na przycisk. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać:

nazwyZdarzeń Wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego przycisku, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.

Domyślną wartością dla przycisku jest [gdyŁadujesz gdyMyszNajedzie gdyMyszZjedzie gdyTworzysz gdyWciśnięty gdyZwolniony].
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowego (tworzonego) przycisku, zwykle prz1, prz2, prz3 … itd. Jeśli chcemy, aby przyciski miały inne nazwy, to możemy je zmienić w dialogu Zmień mnie każdego z istniejących przycisków, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę przycisków ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Domyślną wartością jest prz.

Przykład:

? nowaKlasa "Przycisk "MójPrzycisk [wspólne'prefiksNazwy kliknij rozmiar [40 40]]
? nowy "MójPrzycisk [poz [120 –100]]
? nowy "MójPrzycisk [poz [168 –100]]

utworzy przyciski o nazwach kliknij1 i kliknij2.


Przycisk: działania i zdarzenia

Akcje związane z przyciskiem definiujemy w obsłudze zdarzenia gdyWciśnięty.

Kiedy klikniemy lewym klawiszem myszy na przycisku, to przycisk zostanie wciśnięty oraz zajdzie zdarzenie gdyWciśnięty i zostanie uruchomiony niezależny równoległy proces zdarzenia. Gdy ten proces zakończy się, przycisk zostanie zwolniony (wyciśnięty) - jego wygląd wróci do pierwotnego stanu. Podczas działania owego procesu tymczasowo adresatem jest przycisk, a aktywnymi obiektami są wszystkie aktywne obiekty aktywnej strony. Oznacza to, że na przykład, gdy akcją przycisku jest [np 100 pw 90], to będzie ona wykonana przez wszystkie aktywne żółwie.

Zauważmy, że użycie w omawianej akcji polecenia bezKońca… spowoduje (przy kliknięciu przycisku) uruchomienie jeszcze jednego równoległego procesu, poza procesem zdarzenia, o którym mowa wyżej.

Jeśli przycisk zostanie ponownie kliknięty, zanim skończy się jego reakcja na poprzednie kliknięcie, to proces obsługi poprzedniego kliknięcia zostanie przerwany, a przycisk będzie zwolniony (wyciśnięty). Naciśnięcie Zastopuj wszystkie uruchomione procesy w Narzędziach również powoduje przerwanie procesu zdarzenia gdyWciśnięty.

Akcja przycisku może zostać zdefiniowana w jeden z następujących sposobów:

  • w poleceniu nowy "Przycisk [ … ] ustawieniem zdarzenie'gdyWciśnięty (podobnie dla polecenia nowyObiekt),
  • w dialogu Zmień mnie przycisku,
  • w poleceniu skierowanym do wybranego przycisku ustalZdarzenie "gdyWciśnięty [ … ].

Dwóch ostatnich z powyższych trzech sposobów możemy użyć także do zmiany sposobu reakcji przycisku na wciśnięcie.

Ustawienie | Wartość | Opis
aktywneKto | logiczna | Kiedy przycisk zostanie kliknięty, to aktywnymi obiektami czasowo stają się wszystkie aktywne obiekty aktywnej strony. Ta domyślna strategia jest stosowana, o ile ustawienie aktywneKto ma wartość prawda. Jeśliby jednak to ustawienie miało wartość fałsz, to w omawianej sytuacji tymczasowo lista aktywnych obiektów stałaby się listą pustą []. Domyślną wartością jest prawda.

Zdarzenia rozpoznawane przez przyciski to gdyŁadujesz, gdyMyszNajedzie, gdyMyszZjedzie, gdyTworzysz, gdyWciśnięty i gdyZwolniony.


Przycisk: procedury

autoAkcja
pokażMnie
pozklik
pozMyszy
przesuń
schowajMnie
ustalPozMyszy; upm
włącz
wyłącz

Poza procedurami związanymi z ustawieniami i zmiennymi obiektu, dodatkowo mamy do dyspozycji wymienione tu procedury, które także odnoszą się do przycisków. Jeśli uczynimy aktywnym jeden lub więcej przycisków (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez każdy aktywny przycisk.

Do każdego przycisku możemy też odwołać się bezpośrednio, np. prz1'schowajMnie.

Procedura | Typ | Opis
autoAkcja P Określa domyślną akcję dla klasy Przycisk. Jest zdefiniowana następująco:
oto autoAkcja
  ustalWciśnięty "prawda
już

Oznacza to, że jeśli użyjemy nazwy przycisku jako polecenia, np. prz1, to spowoduje to wciśnięcie przycisku, wywołanie zdarzenia gdyWciśnięty (wraz z jego obsługą) i zwolnienie (wyciśnięcie) przycisku. Zatem polecenie prz1 jest skróconą wersją polecenia prz1'ustalWciśnięty "prawda.
W razie potrzeby możemy przedefiniować tę funkcję dla całej klasy, dowolnej podklasy lub dla wybranych jednostek klasy.
pokażMnie | P | Wyświetla wszystkie aktywne przyciski. Jeśli nie ma aktywnych przycisków, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.
pozklik | F | Wektor, którego początek jest lewym górnym rogiem przycisku, a koniec - pozycją ostatniego kliknięcia myszą w obrębie tego przycisku.
pozMyszy | F | Zobacz w Współrzędne obiektów
przesuń | P | Odpowiednik opcji Przesuń z menu kontekstowego. Standardowy kursor myszy jest ukrywany, a zamiast niego na środku przycisku pojawia się symbol ręki. Następnie możliwe jest przesuwanie przycisku myszą, w obrębie jego miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.
schowajMnie P Ukrywa wszystkie aktywne przyciski. Jeśli nie ma aktywnych przycisków, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, stron itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.

? słuchaj "prz1
? pokażMnie
? proszę [prz1 prz2][schowajMnie]
? prz2'pokażMnie
ustalPozMyszy punkt
Skrót:
upm 		P Zobacz w Współrzędne obiektów
włącz | P | Dla przycisku prz1 jest tym samym, co prz1'ustalDostępny "prawda.
wyłącz | P | Dla przycisku prz1 jest tym samym, co prz1'ustalDostępny "fałsz.


Przełącznik: cechy szczególne

Przełączniki to specjalna grupa przycisków. Kiedy klikniemy przełącznik, zostanie wywołane i obsłużone zdarzenie gdyWciśnięty, lecz przełącznik nadal pozostanie wciśnięty. Po ponownym kliknięciu przełącznika, zostanie wywołane i obsłużone zdarzenie gdyZwolniony, a sam przełącznik wróci do swego pierwotnego położenia.

Przykładowo, pierwsze kliknięcie (wciśnięcie przełącznika) może wprawiać żółwia w ruch, a drugie (wyciśnięcie, zwolnienie przełącznika) może zatrzymać żółwia:

? prz1'ustalZdarzenie "gdyWciśnięty [(co 50 [np 1] "ProcesRuchuŻółwia)]
? prz1'ustalZdarzenie "gdyZwolniony [anuluj "ProcesRuchuŻółwia]

Często przełączniki łączymy w grupy. W danym momencie, w każdej grupie przełączników nie może być wciśnięty więcej niż jeden przełącznik. Przykładowo, niżej widzimy grupę przełączników służących do określania sposobu wyrównywania tekstu w akapicie. Jest całkiem naturalne, że w tej grupie wciśnięty jest zawsze jeden przełącznik, gdyż tekst może być albo wyrównany do lewej, albo wyśrodkowany, albo wyrównany do prawej, albo wyjustowany.

Grupy przełączników są numerowane kolejnymi liczbami naturalnymi: 1, 2, 3… itd. w dialogu Zmień mnie. Przełącznik, dla którego pozostawiono numer grupy równy 0, jest przełącznikiem nie należącym do żadnej grupy (tak jest domyślnie).

Załóżmy, że w grupie są dwa przełączniki i pierwszy z nich jest wciśnięty. Jeśli teraz klikniemy na drugi, to zostanie on wciśnięty, zaś pierwszy będzie zwolniony. Dokładniej, najpierw zajdzie zdarzenie gdyZwolniony dla pierwszego przełącznika, a następnie gdyWciśnięty dla drugiego.

W zależności od wartości ustawienia możnaZwolnićWszystkie możliwa jest, lub nie, sytuacja w której żaden przełącznik w grupie nie jest wciśnięty. Jeśli ustawienie to ma wartość prawda (lub gdy zaznaczyliśmy można zwolnić wszystkie w dialogu Zmień mnie dla dowolnego przełącznika należącego do tej grupy), to po kliknięciu we wciśnięty przełącznik, zostanie on zwolniony (zajdzie zdarzenie gdyZwolniony) i żaden z przełączników w grupie nie będzie już wciśnięty. Jeśli wartością omawianego ustawienia jest fałsz, to zawsze jakiś przełącznik w grupie będzie wciśnięty. Należy pamiętać, że gdy zmieniamy wartość ustawienia możnaZwolnićWszystkie dla jednego z przełączników grupy, to automatycznie ta sama wartość jest przypisywana wszystkim przełącznikom z tej grupy.


Przełącznik: dodatkowe ustawienia

Tu wymienione są ustawienia charakterystyczne dla przełączników (dodatkowe, poza tymi, które obowiązują dla wszystkich przycisków). Przycisk staje się przełącznikiem po wpisaniu do jego ustawienia przełącznik wartości prawda.

Ustawienie Wartość Opis
grupa liczba Przełączniki można łączyć w grupy. Przełącznik nie należący do żadnej grupy ma wartość tego ustawienia równą 0. Każda inna liczba naturalna określa numer grupy. Spośród przełączników mających tę samą wartość ustawienia grupa (mówimy: należących do tej samej grupy), w danym momencie co najwyżej jeden może być wciśnięty. Jeśli został wciśnięty jakiś przełącznik z grupy, to wszystkie pozostałe przełączniki w obrębie grupy na pewno są zwolnione. Jeśli jest wciśnięty jakiś przełącznik, to wciśnięcie innego z tej samej grupy, zwolni ten pierwszy. Z grupami związane jest także ustawienie możnaZwolnićWszystkie.

Domyślną wartością jest 0.
możnaZwolnićWszystkie logiczna Rozpatrywanie tego ustawienia ma sens tylko dla grup przełączników składających się z co najmniej dwóch przełączników. Przypisanie wartości temu ustawieniu dla pewnego przełącznika z grupy, automatycznie powoduje wpisanie tej samej wartości dla wszystkich przełączników z tej samej grupy.

Jeśli ma wartość prawda, to kliknięcie wciśniętego przełącznika spowoduje jego zwolnienie - w ten sposób otrzymamy sytuację, w której żaden z przełączników w grupie nie będzie wciśnięty.

Jeśli ma wartość fałsz, to w grupie przełączników, po pierwszym wciśnięciu któregokolwiek, już zawsze jakiś będzie wciśnięty – nie można zwolnić wciśniętego przełącznika poprzez kliknięcie go.

Domyślną wartością jest prawda.
przełącznik logiczna Dla przełączników musi mieć wartość prawda. Tylko wówczas ustawienia możnaZwolnićWszystkie i grupa mogą być zmieniane, a zdarzenie gdyZwolniony zachodzi po kliknięciu wciśniętego przycisku.

Zmianę wartości tego ustawienia można dokonać również w dialogu Zmień mnie przycisku. Po zaznaczeniu opcji Przełącznik w oknie dialogowym pokażą się trzy nowe elementy: Grupa:, Można zwolnić wszystkie i gdyZwolniony:.

Domyślną wartością dla przycisków jest fałsz.


Przełącznik: działania i zdarzenia

Akcje związane z przełącznikiem definiujemy jako obsługę zdarzeń gdyWciśnięty i gdyZwolniony.

Kiedy klikniemy na przełącznik (który do tej pory był zwolniony), wciśnie się on, zostanie wywołane zdarzenie gdyWciśnięty i uruchomiony niezależny równoległy proces zdarzenia. Podczas działania owego procesu tymczasowo adresatem jest przełącznik, a aktywnymi obiektami są wszystkie aktywne obiekty aktywnej strony. Oznacza to, że gdy np. reakcją ma być [przesuń], to polecenie przesunięcia będzie wykonane przez wszystkie aktywne żółwie. Gdyby jednak ustawienie aktywneKto miało wartość fałsz, to reakcja przełącznika rozpoczęłaby się z pustą listą aktywnych obiektów i wówczas przesuwanym byłby kliknięty przełącznik.

Kiedy klikniemy na wciśnięty przełącznik, to o ile jego ustawienie możnaZwolnićWszystkie ma wartość prawda, będzie on zwolniony (wyciśnięty), zostanie wywołane zdarzenie gdyZwolniony i uruchomiony niezależny równoległy proces zdarzenia, podobnie jak w przypadku wciskania przełącznika.

Jeśli przełącznik, dla którego ustawienie możnaZwolnićWszystkie ma wartość prawda, zostanie ponownie kliknięty, zanim skończy się jego reakcja na poprzednie kliknięcie, to proces obsługi poprzedniego kliknięcia zostanie przerwany, a przełącznik będzie zwolniony (wyciśnięty). Naciśnięcie Zastopuj wszystkie uruchomione procesy w Narzędziach również powoduje przerwanie procesu zdarzenia gdyWciśnięty lub gdyZwolniony.

Zdarzenia rozpoznawane przez przełączniki to gdyŁadujesz, gdyMyszNajedzie, gdyMyszZjedzie, gdyTworzysz, gdyWciśnięty i gdyZwolniony.


SpecPrzycisk: ogólny opis

SpecPrzyciski są widocznymi elementami, podobnymi do przycisków. Każdy SpecPrzycisk ma jedno lub więcej przypisanych mu poleceń - one go określają, one stanowią jego narzędzie.

Przykładowo, możemy zdefiniować SpecPrzycisk dla rysowania losowych kropek. Załóżmy, że żółw ż1 jest ukryty (niewidoczny) i ma podniesiony pisak. Reakcją - narzędziem SpecPrzycisku (czyli tym, co stanie się, gdy zajdzie zdarzenie gdyNarzędzie) niech będzie [proszę "ż1 [ustalPoz pozMyszy ustalKolPis jld ustalGrubość jld pkt]]. Wówczas, kiedy naciśniemy SpecPrzycisk, pozostanie on wciśnięty. Jeśli następnie klikniemy na stronie, zajdzie zdarzenie gdyNarzędzie i będzie wykonana powyższa lista instrukcji - w pozycji kursora myszy pojawi się kropka o losowej wielkości i kolorze. Możemy wielokrotnie klikać na stronie i za każdym razem pojawi się nowa kropka. I tak aż do momentu ponownego kliknięcia w SpecPrzycisk - wtedy zostanie on zwolniony (wyciśnięty), a narzędzie przestanie działać.

W celu utworzenia nowego SpecPrzycisku należy użyć polecenia nowy:

  • ? nowy "SpecPrzycisk [] i w dialogu Zmień mnie (z menu kontekstowego) zmienić dla utworzonego przycisku co najmniej napis, rozmiar i reakcję na zdarzenie gdyNarzędzie, albo
  • ? nowy "SpecPrzycisk
       [napis Kropki
        rozmiar [65 30]
        gdyNarzędzie [proszę "ż1 [ustalPoz pozMyszy ustalKolPis jld
                      ustalGrubość jld pkt]]]

lub nowyObiekt:

  • ? nowyObiekt "SpecPrzycisk i w dialogu Zmień mnie (z menu kontekstowego) zmienić dla utworzonego przycisku napis, rozmiar i reakcję na zdarzenie gdyNarzędzie, albo
  • ? (nowyObiekt "SpecPrzycisk "napis "Kropki "rozmiar [65 30] "zdarzenie'gdyNarzędzie
            [proszę "ż1 [ustalPoz pozMyszy ustalKolPis jld ustalGrubość jld pkt]])

W rzeczywistości SpecPrzyciski rozpoznają dwa zdarzenia: gdyWciśnięty i gdyNarzędzie. Gdy klikamy na SpecPrzycisk, wywoływane jest także zdarzenie gdyWciśnięty. Wykorzystanie tego zdarzenia daje możliwość programowania efektów ubocznych, poza głównym działaniem przycisku zadawanym określeniem reakcji na zdarzenie gdyNarzędzie.

Po wciśnięciu SpecPrzycisku (czyli po włączeniu narzędzia), każde kliknięcie strony (lub obiektów żyjących na niej) wywołuje zdarzenie gdyNarzędzie.

Jeśli ustawienie jednokrotny ma dla SpecPrzycisku wartość fałsz (tak jest domyślnie), to wciśnięty SpecPrzycisk pozostaje w tym stanie aż do ponownego kliknięcia go. W przeciwnym przypadku, po jednokrotnym kliknięciu na stronie lub planszy, zachodzi zdarzenie gdyNarzędzie i SpecPrzycisk zostaje zwolniony.

Uwagi:

  • SpecPrzycisk może być utworzony na każdej stronie, planszy lub pasku narzędzi. Większość przycisków znajdujących się w Narzędziach i Przyborniku to właśnie SpecPrzyciski, dla części z nich (np. Nowy żółw) ustawienie jednokrotny ma wartość prawda.
  • W danej chwili w całym środowisku (wśród wszystkich pasków narzędzi, stron i plansz) może być wciśnięty tylko jeden SpecPrzycisk. Jeśli jest wciśnięty pewien SpecPrzycisk i wciśniemy inny, to ten poprzedni będzie zwolniony.
  • Jeśli chcemy, aby narzędzia SpecPrzycisków nie działały dla wybranego obiektu, to wystarczy dla tego obiektu określić wartość zmiennej wspólnej czynneNarzędzia jako fałsz


SpecPrzycisk: ustawienia

dostępny; ustalDostępny | pozabs; ustalPozabs
jednokrotny; ustalJednokrotny | rada; ustalRadę
napis; ustalNapis | rozmiar; ustalRozmiar
nazwa | styl; ustalStyl
obraz; ustalObraz | tylkoObraz; ustalTylkoObraz
płaski; ustalPłaski | wciśnięty; ustalWciśnięty
poz; ustalPoz; napoz | widoczny; ustalWidoczny

Podczas tworzenia nowego SpecPrzycisku może być używana lista ustawień: nowy "Suwak [ … ]. Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla każdego z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla wielkości SpecPrzycisku są to: bezparametrowa funkcja rozmiar i polecenie ustalRozmiar z jednym parametrem - listą określającą szerokość i wysokość przycisku. Zatem można polecić wykonać np.:

? prz1'ustalRozmiar [50 30]
? proszę "prz1 [ustalWidoczny nie widoczny]

Wyjątkiem jest ustawienie nazwa - ma wartość nadawaną podczas tworzenia SpecPrzycisku. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie Wartość Opis
dostępny logiczna Określa, czy SpecPrzycisk jest dostępny, tj. czy reaguje na kliknięcia myszą.

Domyślną wartością jest prawda.
jednokrotny logiczna Jeśli wartością jest prawda, to po kliknięciu SpecPrzycisku (włączeniu narzędzia) i kliknięciu na stronie (jednokrotnym użyciu narzędzia) - SpecPrzycisk jest automatycznie zwalniany. Jeśli ponownie chcemy użyć tego samego narzędzia - musimy ponownie kliknąć SpecPrzycisk.

Jeśli wartością jest fałsz, to po kliknięciu SpecPrzycisku, możemy klikając wiele razy w obrębie strony - wielokrotnie użyć narzędzia. Dopiero ponowne kliknięcie wciśniętego SpecPrzycisku (lub wciśnięcie innego SpecPrzycisku) - zwolni (wyłączy) go.

Domyślną wartością jest fałsz.
napis tekst Określa napis znajdujący się na SpecPrzycisku. Jest on wyśrodkowany w obrębie przycisku, lub - gdy określony został obraz - jest połączony z nim w sposób zależny od ustawienia styl.

Jeśli dla SpecPrzycisku jednocześnie:

  • tylkoObraz ma wartość fałsz (tak jest domyślnie),
  • nie jest określony obraz,
  • nie jest określony napis,

to domyślną wartością ustawienia napis jest nazwa SpecPrzycisku. W przeciwnym przypadku domyślną wartością jest puste słowo.
nazwa słowo Może być użyte tylko podczas tworzenia SpecPrzycisku.

Wartość określa nazwę tworzonego SpecPrzycisku.

Jeśli nie zostanie użyte, to tworzony SpecPrzycisk otrzyma unikalną nazwę, składającą się z wartości prefiksNazwy (zwykle słowa prz) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.

Jeśli chcemy odwołać się do określonego obiektu, to zwykle używamy jego nazwy. Innym sposobem jest użycie obiektów-aliasów.
obraz postać Określa wizerunek SpecPrzycisku. Dana jest postacią składającą się z od 1 do 3 faz używanych dla wyświetlenia trzech różnych stanów przycisku:
  • pierwsza faza jest używana, gdy SpecPrzycisk nie jest wciśnięty i kursor myszy znajduje się poza nim, a także wtedy gdy przycisk nie jest dostępny,
  • druga faza jest używana, gdy mysz znajduje się nad SpecPrzyciskiem, ale go nie naciska,
  • trzecia faza jest używana, gdy SpecPrzycisk jest wciśnięty.

Jeśli dana postać ma tylko jedną fazę, to przycisk będzie wyglądał tak samo we wszystkich trzech wymienionych wyżej stanach.

Jeśli dana postać ma dwie fazy, to pierwsza z nich będzie użyta w pierwszym z trzech wymienionych wyżej stanów, a druga faza - w pozostałych (drugim i trzecim).

Podczas określania wartości ustawienia obraz dla SpecPrzycisku (zarówno za pomocą listy ustawień w poleceniu nowy, jak i później w poleceniu ustalObraz) możemy używać następujących danych:

  • [] - aby powiedzieć, że przycisk nie ma na sobie żadnego wizerunku (to jest wartość domyślna).
  • nazwy pliku o dowolnym akceptowanym formacie graficznym - uwaga: podczas zapisu projektu będzie zapisana tylko nazwa pliku, a nie jego zawartość.
  • postaci z jedną, dwiema lub trzema fazami.
  • kodu rysunku , który za pomocą poleceń języka opisze wygląd przycisku, identyczny dla wszystkich trzech stanów.
  • listy kodów rysunku [kod-rysunku kod-rysunku … ], z jednym, dwoma lub trzema kodami rysunku dla określenia poszczególnych stanów przycisku, np.

? prz1'ustalObraz [[ustalKolPis "szary4 kropka 30]
            [ustalKolPis "ciemnoniebieski kropka 30]
                  [ustalKolPis "czerwony kropka 30]]
płaski
i
tylkoObraz 		logiczna

logiczna 		Kombinacja tych dwóch ustawień określa wygląd przycisku:
  • płaski ma wartość fałsz i tylkoObraz ma wartość fałsz:
    określa widok przycisku jako charakterystyczny dla systemu Windows: z obwódką, ikoną (jeśli zostanie dodatkowo określona) i napisem (jeśli będzie dodatkowo określony),
  • płaski ma wartość prawda i tylkoObraz ma wartość fałsz:
    przycisk bez obwódki (chyba, że mysz najedzie lub kliknie na przycisk). Jeśli określimy obraz mający przezroczyste fragmenty, to będą one przezroczyste nawet na przycisku.
  • płaski ma wartość prawda i tylkoObraz ma wartość prawda:
    kompletny wizerunek przycisku jest określony przez ustawienie obraz. Żadne elementy obwódki nie są dodawane przez system Windows. Rozmiar przycisku jest określony przez największą klatkę postaci reprezentowanej przez wartość ustawienia obraz i nie da się go zmienić (inaczej niż w dwóch poprzednich przypadkach).
  • płaski ma wartość fałsz i tylkoObraz ma wartość prawda:
    ta kombinacja nie jest możliwa. Wartość ustawienia płaski będzie pominięta.
poz punkt Określa współrzędne kartezjańskie lewego górnego rogu SpecPrzycisku w obrębie jego miejsca. Zakłada przy tym, że punkt [0 0] umieszczony jest - w zależności od miejsca osadzenia SpecPrzycisku - w początku strony lub planszy bądź w lewym górnym rogu paska narzędzi.

Kiedy zmieniamy poz, to automatycznie zmienia się również wartość ustawienia pozabs.

Domyślną wartością tego ustawienia (używaną podczas tworzenia nowego SpecPrzycisku poleceniem nowy lub nowyObiekt) jest początek miejsca SpecPrzycisku.
pozabs punkt Określa pozycję lewego górnego rogu SpecPrzycisku w bezwzględnych współrzędnych jego miejsca (czyli strony, planszy lub paska narzędzi; początek miejsca znajduje się w jego lewym górnym rogu).

Kiedy zmieniamy pozabs, to automatycznie zmienia się również wartość ustawienia poz.

Domyślną wartością tego ustawienia (używaną podczas tworzenia nowego SpecPrzycisku poleceniem nowy lub nowyObiekt) jest początek miejsca SpecPrzycisku, tj. strony, planszy lub paska narzędzi.
rada tekst Rada wyświetla się w małym żółtym prostokącie, gdy mysz znajdzie się nad SpecPrzyciskiem.

Domyślną wartością jest puste słowo.
rozmiar [ n n ] Wartość jest dwuelementową listą liczb naturalnych, określającą szerokość i wysokość SpecPrzycisku. Jeśli dane nie są liczbami całkowitymi, to są zaokrąglane do wartości całkowitych.

Domyślną wartością jest [27 28].
styl 0, 1, 2 lub 3
  • 0 oznacza, że napis pojawi się po prawej stronie obrazu.
  • 1 oznacza, że napis pojawi się po lewej stronie obrazu.
  • 2 oznacza, że napis pojawi się pod obrazem.
  • 3 oznacza, że napis pojawi się nad obrazem.

Domyślną wartością jest 0.
wciśnięty logiczna Określa, czy SpecPrzycisk jest wciśnięty.

Jeśli dla pewnego SpecPrzycisku wartością tego ustawienia jest fałsz i polecimy wykonać ustalWciśnięty "prawda, to przycisk zostanie wciśnięty, jego narzędzie włączone, a ponadto zostanie wywołane zdarzenie gdyWciśnięty. Jeśli natomiast SpecPrzycisk jest wciśnięty i polecimy mu wykonać ustalWciśnięty "fałsz, to zostanie on zwolniony.

Domyślną wartością jest fałsz.
widoczny logiczna Określa, czy SpecPrzycisk jest wyświetlany. Jeśli ma wartość fałsz, to przycisk będzie niewidoczny (ukryty), aż do wydania dla niego polecenia pokażMnie lub ustalWidoczny "prawda, bądź stosownej zmiany w dialogu Zmień mnie.

Domyślną wartością jest prawda.


SpecPrzycisk: zmienne wspólne

Klasa SpecPrzycisk ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez wszystkie SpecPrzyciski.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa | Opis
menuKontekstowe Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy na SpecPrzycisk. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać:

nazwyZdarzeń | Wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego SpecPrzycisku, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowego (tworzonego) SpecPrzycisku, zwykle prz1, prz2, prz3 … itd. Jeśli chcemy, aby SpecPrzyciski miały inne nazwy, to możemy je zmienić w dialogu Zmień mnie każdego z istniejących SpecPrzycisków, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę SpecPrzycisków ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Domyślną wartością jest prz.

Przykład:

? nowaKlasa "SpecPrzycisk "MójSpecPrzycisk
    [wspólne'prefiksNazwy narz płaski prawda rozmiar [50 30]]
? nowy "MójSpecPrzycisk [poz [120 –70]]
? nowy "MójSpecPrzycisk [poz [170 –70]]

utworzy przyciski o nazwach narz1 i narz2.


SpecPrzycisk: działania i zdarzenia

Akcje związane ze SpecPrzyciskiem definiujemy w obsłudze zdarzeń gdyNarzędzie i (rzadziej) gdyWciśnięty.

Kiedy klikniemy na SpecPrzycisk prz1, to:

  • jeśli pewien inny SpecPrzycisk jest wciśnięty (można to sprawdzić bezparametrową funkcją aktywnySpecPrzycisk?), to będzie on zwolniony,
  • tymczasowo adresatem stanie się prz1, tymczasowo lista aktywnych obiektów (wartość kto) stanie się listą pustą, przycisk prz1 będzie wciśnięty i zostanie zainicjowany niezależny równoległy proces zdarzenia gdyWciśnięty. SpecPrzycisk prz1 pozostanie wciśnięty aż do momentu ponownego nań kliknięcia, bądź kliknięcia w inny SpecPrzycisk, bądź rozpoczęcia pisania w wierszu poleceń, bądź naciśnięcia klawisza Escape (z zastrzeżeniem przypadku, gdy ustawienie jednokrotny SpecPrzycisku prz1 ma wartość prawda - o tym niżej).

Dopóki prz1 będzie wciśnięty można, w celu użycia włączonego narzędzia, wielokrotnie klikać na stronę, planszę, żółwia, suwak, pole tekstowe … itd. Za każdym razem rozpoznane zostanie zdarzenie gdyNarzędzie, a tym samym wywołana procedura jego obsługi, przy czym na ten czas adresatem stanie się kliknięty obiekt (strona, plansza, żółw… itd.), a lista aktywnych obiektów będzie pusta.

Jeśli ustawienie jednokrotny SpecPrzycisku prz1 ma wartość prawda, to przycisk ten będzie zwolniony, a jego narzędzie wyłączone automatycznie po pierwszym rozpoznaniu zdarzenia gdyNarzędzie. W przeciwnym przypadku po rozpoznaniu zdarzenia gdyNarzędzie przycisk pozostanie wciśnięty, umożliwiając w ten sposób następne użycie narzędzia (za pomocą kolejnych kliknięć).

Akcja SpecPrzycisku może zostać zdefiniowana w jeden z następujących sposobów:

  • w poleceniu nowy "SpecPrzycisk [ … ] ustawieniem zdarzenie'gdyNarzędzie i/lub zdarzenie'gdyWciśnięty (podobnie dla polecenia nowyObiekt),
  • w dialogu Zmień mnie SpecPrzycisku,
  • w poleceniu skierowanym do wybranego SpecPrzycisku ustalZdarzenie "gdyNarzędzie [ … ] i/lub ustalZdarzenie "gdyWciśnięty [ … ].

Pełna lista zdarzeń rozpoznawanych przez SpecPrzyciski jest następująca:

[gdyKlik gdyŁadujesz gdyMyszNajedzie gdyMyszZjedzie gdyNarzędzie gdyTworzysz gdyWciśnięty gdyZwolniony]


SpecPrzycisk: procedury

autoAkcja
pokażMnie
pozklik
przesuń
schowajMnie
włącz
wyłącz

Poza procedurami związanymi z ustawieniami i zmiennymi obiektu, dodatkowo mamy do dyspozycji wymienione tu procedury, które także odnoszą się do SpecPrzycisków. Jeśli uczynimy aktywnym jeden lub więcej SpecPrzycisków (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez każdy aktywny SpecPrzycisk.

Procedura | Typ | Opis
autoAkcja P Określa domyślną akcję dla klasy SpecPrzycisk. Jest zdefiniowana następująco:

oto autoAkcja
 ustalWciśnięty "prawda
już

Oznacza to, że jeśli użyjemy nazwy SpecPrzycisku jako polecenia, np. prz1, to spowoduje to wciśnięcie SpecPrzycisku. Zatem polecenie prz1 jest skróconą wersją polecenia prz1'ustalWciśnięty "prawda.
W razie potrzeby możemy przedefiniować tę funkcję dla całej klasy, dowolnej podklasy lub dla wybranych jednostek klasy.
pokażMnie | P | Wyświetla wszystkie aktywne SpecPrzyciski. Jeśli nie ma aktywnych SpecPrzycisków, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, pól tekstowych itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.
pozklik | F | Wektor, którego początek jest lewym górnym rogiem SpecPrzycisku, a koniec - pozycją ostatniego kliknięcia myszą w obrębie tego SpecPrzycisku.
przesuń | P | Odpowiednik opcji Przesuń z menu kontekstowego. Standardowy kursor myszy jest ukrywany, a zamiast niego na środku SpecPrzycisku pojawia się symbol ręki. Następnie możliwe jest przesuwanie SpecPrzycisku myszą, w obrębie jego miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.
schowajMnie P Ukrywa wszystkie aktywne SpecPrzyciski. Jeśli nie ma aktywnych SpecPrzycisków, to polecenie jest wysyłane do wszystkich aktywnych obiektów (żółwi, stron itd.). Jeśli żaden obiekt nie jest aktywny, to nic się nie wykona.

? proszę [prz1 prz2 prz3][schowajMnie]
? prz2'pokażMnie
włącz | P | Dla SpecPrzycisku prz1 jest tym samym, co prz1'ustalDostępny "prawda.
wyłącz | P | Dla SpecPrzycisku prz1 jest tym samym, co prz1'ustalDostępny "fałsz.


WWW: ogólny opis

Przeglądarka WWW jest oknem, które możemy utworzyć na każdej stronie lub planszy własnego projektu. Wewnątrz tego okna uruchamiany jest Internet Explorer i wyświetlona może być zawartość spod dowolnego adresu sieciowego.

Nowa jednostka tej klasy może być utworzona w jeden z następujących sposobów:

  • za pomocą kliknięcia przycisku Nowy gadżet w Narzędziach. Należy wybrać opcję Przeglądarka WWW, a następnie - ciągnąc myszą - określić prostokąt (w granicach strony lub planszy), po czym w ujrzanym oknie Adres WWW należy podać, co ma się pojawić w oknie przeglądarki,

  • poprzez użycie polecenia nowy "WWW [… ustawienia …]. Jeśli chcemy utworzyć okno przeglądarki na planszy, np. p1, musimy podać jej nazwę, np. p1'nowy "WWW [ … ustawienia … ].
  • poprzez użycie polecenia (nowyObiekt "WWW ustawienie wartość … ).

Następnie, kiedy przeglądarka rozpoczyna ładowanie swej zawartości spod podanego przez nas adresu, wywoływane jest zdarzenie gdyStart. Po ukończeniu ładowania zawartości wywoływane jest zdarzenie gdyKoniec.

Wewnątrz okna przeglądarki (z wyjątkiem ramki i paska tytułu, o ile są widoczne) nie są przez środowisko rozpoznawane żadne zdarzenia związane z myszą. Wszystkie zdarzenia związane z myszą są przekazywane i obsługiwane bezpośrednio przez Internet Explorer.


WWW: ustawienia

adres; ustalAdres | rozmiar; ustalRozmiar
dostępny; ustalDostępny | skróty; ustalSkróty
maksymalne; ustalMaksymalne | styl; ustalStyl
nazwa | tytuł; ustalTytuł
poz; ustalPoz; napoz | widoczny; ustalWidoczny
pozabs; ustalPozabs | widocznyTytuł; ustalWidocznyTytuł
rada; ustalRadę | zamrożony; ustalZamrożony

Podczas tworzenia nowej jednostki klasy WWW (nowego okna przeglądarki) może być używana lista ustawień: nowy "WWW [ … ] lub (nowyObiekt "WWW … ). Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla każdego z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla informacji o tym, czy okno przeglądarki jest widoczne, czy schowane, są to: bezparametrowa funkcja widoczny i polecenie ustalWidoczny z jednym parametrem - wartością logiczną. Zatem można polecić wykonać np.:

? www1'ustalWidoczny nie www1'widoczny

Wyjątkiem jest ustawienie nazwa - ma wartość nadawaną podczas tworzenia okna przeglądarki. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Jeśli nie jest widoczny pasek tytułu okna, ani nie widać ramki okna przeglądarki, to nie ma możliwości wywołania menu kontekstowego środowiska dla okna przeglądarki za pomocą kliknięcia prawym przyciskiem myszy. Próby klikania prawym przyciskiem myszy wewnątrz okna przeglądarki kończą się wyświetleniem menu kontekstowego Internet Explorera. Można jednakże zmieniać ustawienia w dialogu Zmień mnie, którego wywołanie osiągniemy poleceniem:

? www1'zmieńMnie

Ustawienie | Wartość | Opis
adres | adres WWW | Adres, spod którego dane są ściągane i wyświetlane w przeglądarce. Jeśli dana polecenia ustalAdres jest pustym słowem, to okno przeglądarki będzie puste.
dostępny logiczna Jeśli ma wartość fałsz, to okno przeglądarki zachowuje się tak, jakby nie było widoczne: zdarzenia związane z myszą dotyczą obiektów znajdujących się pod oknem przeglądarki; nie są zatem możliwe np. przesuwanie zawartości okna suwakami czy skoki hipertekstowe.

Domyślną wartością jest prawda.
maksymalne logiczna Określa, czy okno przeglądarki wypełnia cały obszar swojego miejsca.

Domyślną wartością jest fałsz.
nazwa słowo Może być użyte tylko podczas tworzenia okna przeglądarki.

Wartość określa nazwę tworzonego okna (jednostki klasy WWW).

Jeśli nie zostanie użyte, to tworzony obiekt otrzyma unikalną nazwę, składającą się z wartości zmiennej prefiksNazwy (domyślnie trzech liter w) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.

Użycie słowa będącego nazwą obiektu jest jedyną metodą odwołania się do niego. Nie ma możliwości używania obiektów-aliasów.
poz punkt Określa współrzędne kartezjańskie lewego górnego rogu okna przeglądarki w jego miejscu, tj. na stronie lub planszy.

Kiedy zmieniamy poz, to automatycznie zmienia się również wartość ustawienia pozabs.

Domyślnie (podczas tworzenia nowego okna przeglądarki poleceniem nowy lub nowyObiekt) punkt ten znajduje się w początku okna przeglądarki czyli [0 0].
pozabs punkt Określa pozycję lewego górnego rogu okna przeglądarki w bezwzględnych współrzędnych jej miejsca, tj. strony lub planszy (których początek znajduje się w ich lewym górnym rogu)

Kiedy zmieniamy pozabs, to automatycznie zmienia się również wartość ustawienia poz.

Domyślną wartością tego ustawienia (używaną podczas tworzenia nowego okna przeglądarki poleceniem nowy lub nowyObiekt) jest punkt będący w początku (zwykle środku) miejsca okna przeglądarki
rada | tekst | Jest to puste słowo lub jakikolwiek tekst. Rada wyświetla się w małym żółtym prostokącie, gdy mysz znajdzie się nad wnętrzem okna przeglądarki, o ile jest ono puste.
rozmiar | [ n n ] | Wartość jest dwuelementową listą liczb naturalnych, określającą szerokość i wysokość okna przeglądarki. Jeśli dane nie są liczbami całkowitymi, to są zaokrąglane do wartości całkowitych.
skróty menu-skrótów Określa skróty klawiszowe dla okna przeglądarki.

Domyślną wartością jest [] - brak skrótów.
styl 0, 1 lub 2 Określa styl okna przeglądarki:
  • 0 oznacza, że okno przeglądarki nie ma ramki,
  • 1 oznacza, że okno przeglądarki ma wąską ramkę, ale nie można zmieniać rozmiaru okna myszą,
  • 2 oznacza, że okno przeglądarki ma szeroka ramkę, a jego rozmiar może być zmieniany myszą.

Domyślną wartością jest 0.
tytuł tekst Określa tekst, który znajduje się w pasku tytułu okna przeglądarki. To, czy pasek tytułu wyświetla się, zależy od ustawienia widocznyTytuł.

Domyślną wartością jest puste słowo.
widoczny logiczna Określa, czy okno przeglądarki jest wyświetlane. Jeśli ma wartość fałsz, to okno przeglądarki będzie niewidoczne (ukryte), aż do wydania dla niego polecenia pokażMnie lub ustalWidoczny "prawda, bądź też stosownej zmiany w dialogu Zmień mnie.

Domyślną wartością jest prawda.
widocznyTytuł logiczna Określa, czy w oknie przeglądarki widoczny jest pasek tytułu. Zawartość paska tytułu określamy w ustawieniu tytuł.

Domyślną wartością jest prawda.
zamrożony logiczna Określa, czy obiekt jest zamrożony.

Domyślną wartością jest fałsz.


WWW: zmienne wspólne

Klasa WWW ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez wszystkie okna przeglądarek.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa | Opis
menuKontekstowe | Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy na ramce lub pasku tytułu okna przeglądarki. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać. Zauważmy, że w menu kontekstowym wielokrotnie wyświetla się nazwa obiektu.
nazwyZdarzeń | Wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego okna przeglądarki, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy | To słowo jest używane przy automatycznym generowaniu nazwy dla nowego (tworzonego) okna przeglądarki, zwykle www1, www2, www3 … itd. Jeśli chcemy, aby okna przeglądarek miały inne nazwy, to możemy je zmienić w dialogu Zmień mnie każdego z istniejących okien, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę okien przeglądarek ze zmienioną wartością zmiennej wspólnej prefiksNazwy. Domyślną wartością jest www.


WWW: zdarzenia

Okna przeglądarki rozpoznają kilka zdarzeń, wśród nich szczególnie często zdarzenia gdyStart i gdyKoniec. Zdarzenie gdyStart zachodzi, gdy rozpoczyna się proces wyświetlania strony. Zdarzenie gdyKoniec zachodzi, gdy ten proces zakończy się.

Oto pełna lista standardowych zdarzeń rozpoznawanych przez klasę WWW:

[gdyKoniec gdyŁadujesz gdyMyszNajedzie gdyMyszZjedzie gdyStart gdyTworzysz]


WWW: procedury

dalej
maksymalizuj
nagłówek
pokażMnie
przesuń
przywróćWielkośćOkna; pwo
schowajMnie
start
włącz
wstecz
wyłącz

Poza procedurami związanymi z ustawieniami i zmiennymi obiektu, dodatkowo mamy do dyspozycji wymienione tu procedury, które także odnoszą się do obiektów klasy WWW. Jeśli okno przeglądarki uczynimy aktywnym (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez aktywną przeglądarkę.

Do każdego okna przeglądarki możemy też odwołać się bezpośrednio (bez potrzeby wcześniejszego uaktywniania za pomocą słuchaj lub proszę), np. www1'schowajMnie.

Procedura | Typ | Opis
dalej | P | Wyświetla w oknie przeglądarki stronę, która była wyświetlona przed wydaniem polecenia wstecz - bez względu na to, czy było ono wpisane w wierszu poleceń, czy wybrane z menu kontekstowego przeglądarki obsługiwanego przez Internet Explorer.
maksymalizuj | P | Powiększa okno przeglądarki, wypełniając nim cały obszar jej miejsca, tj. strony lub planszy. Działa tak samo, jak ustalMaksymalne "prawda.
nagłówek F Podaje tytuł aktualnie wyświetlanej strony (wzięty ze znacznika <TITLE>, o ile istnieje). Jest jednym długim słowem:
? pokaż www1'nagłówek
To jest moja pierwsza strona internetowa…
? pokaż słowo? www1'nagłówek
prawda
pokażMnie | P | Wyświetla okna aktywnych przeglądarek. Działa tak samo, jak ustalWidoczny "prawda.
przesuń | P | Odpowiednik opcji Przesuń z menu kontekstowego. Standardowy kursor myszy jest ukrywany, a zamiast niego na środku okna przeglądarki pojawia się symbol ręki. Następnie możliwe jest przesuwanie okna myszą, w obrębie jego miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.
przywróćWielkośćOkna
Skrót:
pwo 		P Jeśli okno przeglądarki jest zmaksymalizowane, to przywraca mu poprzednią pozycję i rozmiar. Działa tak samo, jak ustalMaksymalne "fałsz.
schowajMnie | P | Ukrywa okno przeglądarki. Działa tak samo, jak ustalWidoczny "fałsz.
start | P | Wyświetla w oknie przeglądarki stronę startową Internet Explorera.
włącz | P | Dla danego okna przeglądarki jest tym samym, co ustalDostępny "prawda.
wstecz | P | Wyświetla poprzednio wyświetlaną stronę.
wyłącz | P | Wyłącza okno przeglądarki - staje się ono nieczułe na klikanie hiperłączy, próby przewijania zawartości suwakami, próby zmiany rozmiaru itd. Dla danego okna przeglądarki jest tym samym, co ustalDostępny "fałsz.


Odtwarzacz: ogólny opis

Jest to klasa umożliwiająca odtwarzanie dźwięków i filmów wideo z plików multimedialnych o formacie znanym odtwarzaczowi Windows.

W celu utworzenia nowego odtwarzacza należy użyć jednego z następujących sposobów:

  • kliknąć przycisk Multimedia w Narzędziach, z rozwiniętej listy wybrać Wideoklip, a następnie kliknąć wybraną stronę lub planszę (w ten sposób określimy miejsce odtwarzacza, pozycja kliknięcia stanie się lewym górnym rogiem okna odtwarzacza). W ostatnim kroku należy wybrać plik do odtworzenia (ze standardowego okna dialogu otwierania plików, które pojawi się automatycznie i wyświetli pliki w wybranym przez nas formacie).

  • skorzystać z polecenia nowy "Odtwarzacz [… ustawienia …]. Jeśli chcemy utworzyć odtwarzacz na planszy, np. p1, to musimy uczynić ją adresatem polecenia, np. p1'nowy "Odtwarzacz [ … ustawienia … ].
  • skorzystać z polecenia (nowyObiekt "Odtwarzacz ustawienie wartość … ).

Każdy odtwarzacz ma także pasek tytułu (być może z pustą zawartością), który domyślnie jest ukryty. Jeśli chcemy wyświetlić pasek tytułu, to powinniśmy użyć dialogu Zmień mnie i w zakładce Wygląd zaznaczyć opcję Pokaż tytuł. Ponadto każdy odtwarzacz ma następujące elementy: suwak pozycji odtwarzania Pasek przeszukiwania (ang. Seek bar), przyciski: rozpoczęcia odtwarzania Odtwórz (ang. Play), przerwy w odtwarzaniu Wstrzymaj (ang. Pause), zatrzymania odtwarzania Zatrzymaj (ang. Stop), wyłączenia dźwięku Wycisz (ang. Mute) i regulator głośności Regulacja głośności (ang. Volume Control).

Uwaga: jeśli klikniemy przycisk Multimedia w Narzędziach i z rozwiniętej listy wybierzemy Dźwięk WAV lub Muzyka MID, a następnie klikniemy na stronie lub planszy, to też pojawi się nowy obiekt umożliwiający odtwarzanie dźwięków. Jednakże nie będzie to obiekt klasy Odtwarzacz, tylko Przycisk z przypisaną mu stosowna akcją.


Odtwarzacz: ustawienia

dostępny; ustalDostępny | rozmiar; ustalRozmiar
maksymalne; ustalMaksymalne | skróty; ustalSkróty
nazwa | stanGrania; ustalStanGrania
nazwaPliku; ustalNazwaPliku | styl; ustalStyl
poz; ustalPoz; napoz | tytuł; ustalTytuł
pozabs; ustalPozabs | widocznePrzyciski; ustalWidocznePrzyciski
pozGrania; ustalPozGrania | widoczny; ustalWidoczny
rada; ustalRadę | zamrożony; ustalZamrożony

Podczas tworzenia nowego odtwarzacza może być używana lista ustawień: nowy "Odtwarzacz […]. Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla każdego z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład dla nazwy odtwarzanego pliku są to: bezparametrowa funkcja nazwaPliku i polecenie ustalNazwaPliku z jednym parametrem - nazwą pliku do odtworzenia. Zatem można polecić wykonać np.:

? odtw1'ustalNazwaPliku "|c:\lengo.mid|

Wyjątkiem jest ustawienie nazwa - ma wartość nadawaną podczas tworzenia odtwarzacza. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie | Wartość | Opis
dostępny logiczna Jeśli ma wartość fałsz, to odtwarzacz nie reaguje na zdarzenia związane z myszą, w szczególności nie działają przyciski odtwarzacza.

Domyślną wartością jest prawda.
maksymalne logiczna Jeśli ma wartość prawda, to odtwarzacz wypełnia cały obszar swego miejsca.

Domyślną wartością jest fałsz.
nazwa słowo Może być użyte tylko podczas tworzenia odtwarzacza.

Wartość określa nazwę tworzonego okna odtwarzacza.

Jeśli nie zostanie użyte, to tworzony odtwarzacz otrzyma unikalną nazwę, składającą się z wartości zmiennej prefiksNazwy (domyślnie słowa odtw) i liczby.

Nazwa obiektu zawsze wyświetla się w pierwszej pozycji menu kontekstowego - Zmień mnie.

Podanie nazwy jest jedynym sposobem odwołania się do odtwarzacza.
nazwaPliku | nazwa-pliku | Określa nazwę pliku multimedialnego o formacie znanym odtwarzaczowi Windows, który jest wyświetlany w oknie odtwarzacza, np. |d:\Moje\Media\Welcome.mpg|.
poz | punkt | Określa współrzędne kartezjańskie lewego górnego rogu okna odtwarzacza w jego miejscu, tj. na stronie lub planszy.
pozabs | punkt | Określa bezwzględne współrzędne lewego górnego rogu okna odtwarzacza w jego miejscu, tj. na stronie lub planszy.
pozGrania | liczba | Numer kolejnego wyświetlanego kadru (klatki) filmu.
rada tekst Puste słowo lub dowolny tekst. Rada jest wyświetlana w małym żółtym prostokącie, gdy standardowy kursor myszy wskazuje okno odtwarzacza.

? odtw1'ustalRadę [Moja ulubiona melodia]
rozmiar [ n n ] Wartość jest dwuelementową listą liczb dodatnich, określającą szerokość i wysokość okna odtwarzacza, razem z ramką, paskiem tytułu i przyciskami (o ile są widoczne).

Warto pamiętać, że po otwarciu pliku multimedialnego zachowywane są proporcje wymiarów (poziomego i pionowego).

skróty menu-skrótów Określa skróty klawiszowe dla okna odtwarzacza.

Domyślną wartością jest [] - brak skrótów.
stanGrania | słowo | Jest jednym z trzech słów, określającym aktualny stan odtwarzania: stop, przerwa lub gra.
styl 0, 1 lub 2 Określa styl okna odtwarzacza:
  • 0 oznacza, że okno odtwarzacza nie ma ramki,
  • 1 oznacza, że okno odtwarzacza ma wąską ramkę, ale nie można zmieniać rozmiaru okna myszą,
  • 2 oznacza, że okno odtwarzacza ma szeroka ramkę, a jego rozmiar może być zmieniany myszą.

Uwaga: ustawienie działa, o ile nie jest wyświetlony pasek tytułu.

Domyślną wartością jest 0.
tytuł tekst Określa tekst, jaki znajduje się w pasku tytułu okna odtwarzacza. To, czy pasek tytułu wyświetla się, zależy od ustawienia opcji Pokaż tytuł w zakładce Wygląd menu kontekstowego Zmień mnie (dla danego odtwarzacza).

Domyślną wartością jest puste słowo.
widocznePrzyciski logiczna Jeśli ma wartość fałsz, to w dolnej części okna odtwarzacza nie są widoczne przyciski i suwaki sterujące odtwarzaniem. Wówczas można sterować odtwarzaniem za pomocą poleceń języka (przewiń, stop, przerwa itd.), bądź korzystając z menu kontekstowego.

Domyślną wartością jest prawda.
widoczny logiczna Określa, czy okno odtwarzacza jest wyświetlane (widoczne).

Domyślną wartością jest prawda.
zamrożony

logiczna Określa, czy okno odtwarzacza jest zamrożone.

Domyślną wartością jest fałsz.


Odtwarzacz: zmienne wspólne

Klasa Odtwarzacz ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez każde okno odtwarzacza.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa | Opis
menuKontekstowe Wartością jest opis menu, które wyświetla się po kliknięciu prawym przyciskiem myszy w obrębie okna odtwarzacza. Poniżej możemy obejrzeć przykład pokazujący, jak może ono wyglądać. Zauważmy, że w menu kontekstowym wielokrotnie wyświetla się nazwa obiektu.

nazwyZdarzeń | Wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego okna odtwarzacza, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla nowego (tworzonego) okna odtwarzacza, zwykle odtw1, odtw2, odtw3 … itd. Jeśli chcemy, aby odtwarzacze miały inne nazwy, to możemy je zmienić w dialogu Zmień mnie każdego z istniejących odtwarzaczy, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę odtwarzaczy ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Przykład:

? nowaKlasa "Odtwarzacz "MójOdtwarzacz
    [wspólne'prefiksNazwy Wideo skróty [a [graj] b [stop]]]
? nowy "MójOdtwarzacz []

utworzy odtwarzacz o nazwie Wideo1.

Domyślną wartością jest odtw.


Odtwarzacz: zdarzenia

Odtwarzacz rozpoznaje wiele zdarzeń, wśród nich dwa specyficzne: gdyZmianaStanuGrania i gdyZmianaPozGrania.

Oto pełna lista standardowych zdarzeń rozpoznawanych przez klasę Odtwarzacz:

[gdyCiągniesz gdyDwuKlik gdyKlik gdyLewyWciśnięty gdyLewyZwolniony gdyŁadujesz gdyMyszJedzie gdyMyszNajedzie gdyMyszZjedzie gdyPrawyWciśnięty gdyPrawyZwolniony gdyŚrodkowyWciśnięty gdyŚrodkowyZwolniony gdyTworzysz gdyZmianaPozGrania gdyZmianaStanuGrania]

Zdarzenie | Opis
gdyZmianaStanuGrania | Zachodzi, gdy odtwarzacz zmienia swój stan (tj. jeśli nowy stan jest inny niż dotychczasowy). Rozróżniamy trzy stany odtwarzacza: gra, przerwa i stop. O aktualnym stanie możemy dowiedzieć się także sprawdzając wartość ustawienia stanGrania.
gdyZmianaPozGrania | Zachodzi, gdy odtwarzacz zmienia swą pozycję w odtwarzanym pliku multimedialnym. Dzieje się tak przy użyciu jednego z następujących poleceń: krok, krokWstecz, przewiń i ustalPozGrania (w tym ostatnim przypadku tylko wtedy, gdy nowa pozycja jest inna niż dotychczasowa). Zdarzenie nie zachodzi podczas zwykłego odtwarzania (w stanie gra).


Odtwarzacz: procedury

autoAkcja
graj
krok
krokWstecz
naKoniec
pokażMnie
pozklik
przerwa
przesuń
przewiń
schowajMnie
stop
trwanie
włącz
wyłącz

Poza procedurami związanymi z ustawieniami i zmiennymi obiektu, dodatkowo mamy do dyspozycji wymienione tu procedury, które także odnoszą się do obiektów klasy Odtwarzacz. Jeśli odtwarzacz uczynimy aktywnym (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie schowajMnie, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez aktywny odtwarzacz.

Do każdego odtwarzacza możemy też odwołać się bezpośrednio (bez potrzeby wcześniejszego uaktywniania za pomocą słuchaj lub proszę), np. odtw1'schowajMnie.

Procedura | Typ | Opis
autoAkcja P Określa domyślną akcję dla klasy Odtwarzacz. Jest zdefiniowana następująco:

oto autoAkcja
 graj
już

Oznacza to, że jeśli użyjemy nazwy odtwarzacza jako polecenia, np. odtw1, to spowoduje to rozpoczęcie odtwarzania.

W razie potrzeby możemy przedefiniować tę funkcję dla całej klasy, dowolnej podklasy lub dla wybranych jednostek klasy.
graj | P | Odtwarza plik otwarty w oknie odtwarzacza, od pozycji pozGrania. Zmienia stanGrania na gra.
krok | P | Zmienia pozGrania otwartego pliku multimedialnego poprzez przesunięcie o jeden kadr w przód.
krokWstecz | P | Zmienia pozGrania otwartego pliku multimedialnego poprzez cofnięcie o jeden kadr.
naKoniec | P | Zmienia pozGrania otwartego pliku multimedialnego poprzez ustawienie na ostatni kadr filmu.
pokażMnie | P | Wyświetla okno odtwarzacza. Jest tym samym, co ustalWidoczny "prawda.
pozklik | F | Wektor, którego początek jest lewym górnym rogiem okna odtwarzacza, a koniec – pozycją ostatniego kliknięcia myszą w obrębie tego okna.
przerwa | P | Wstrzymuje odtwarzanie pliku otwartego w oknie odtwarzacza, bez zmiany pozGrania. Zmienia stanGrania na przerwa.
przesuń | F | Odpowiednik opcji Przesuń z menu kontekstowego. Standardowy kursor myszy jest ukrywany, a zamiast niego na środku okna odtwarzacza pojawia się symbol ręki. Następnie możliwe jest przesuwanie przycisku myszą, w obrębie jego miejsca, bez naciskania przycisków myszy. Przesuwanie kończy się po kliknięciu myszą.
przewiń | P | Zeruje pozGrania otwartego pliku multimedialnego, przewija film do początkowego kadru.
schowajMnie | P | Ukrywa okno odtwarzacza. Jest tym samym, co ustalWidoczny "fałsz.
stop | P | Zatrzymuje odtwarzanie pliku otwartego w oknie odtwarzacza, zeruje pozGrania (przewija na początek). Zmienia stanGrania na stop.
trwanie | F | Podaje informację o liczbie kadrów w pliku multimedialnym otwartym w oknie odtwarzacza.
włącz | P | Powoduje, że odtwarzacz zaczyna reagować na zdarzenia związane z myszą, w szczególności działają przyciski odtwarzacza. Jest tym samym, co ustalDostępny "prawda.
wyłącz | P | Powoduje, że odtwarzacz przestaje reagować na zdarzenia związane z myszą, w szczególności nie działają przyciski odtwarzacza. Jest tym samym, co ustalDostępny "fałsz.


Sieć: ogólny opis

Jednostki tej klasy nie są widoczne. Pozwalają na komunikację w czasie rzeczywistym pomiędzy użytkownikami Logomocji-Imagine podłączonymi do sieci. Ta komunikacja sieciowa pozwala na wysyłanie i odbieranie tekstów, danych, poleceń i obiektów Imagine.

W celu skomunikowania się, musimy utworzyć aktywny obiekt sieciowy w środowisku Imagine. Będzie on pełnił rolę serwera. Ten, kto pozna jego nazwę lub adres IP, będzie mógł podłączyć do niego utworzone u siebie obiekty sieciowe. Możliwe są równoległe połączenia jednego użytkownika z wieloma innymi jednocześnie. Zawsze jeden z użytkowników pełni rolę serwera.

  • Możliwe jest utworzenie wielu połączeń sieciowych (obiektów sieciowych sieć1, sieć2, sieć3 …) z różnymi serwerami.
  • Kiedy wysyłamy wiadomość (tekst, polecenie, paczkę danych lub obiekt), określamy jej adresata. Może być nim jeden lub wielu uczestników ustanowionego połączenia. W środowisku Imagine adresata, dla obiektu sieciowego, który odbiera wiadomość, zachodzi zdarzenie gdyOdbierzesz lub gdyOdbierzeszObiekt.
  • Możemy tworzyć obiekty sieciowe pod warunkiem podłączenia do sieci (posiadania we własnym komputerze prawidłowo zainstalowanej, nie odłączonej karty sieciowej).

W celu utworzenia i uaktywnienia obiektu sieciowego wpisujemy polecenia:

? nowy "Sieć [ … ustawienia … ]
? sieć1'połącz

Nazwą obiektu będzie sieć1.

Istnieje możliwość stworzenia na przykład takich projektów sieciowych, w których dwóch użytkowników gra przez sieć lub prowadzi konwersację bądź pracuje nad jednym projektem itd.


Sieć: ustawienia

dostępność; ustalDostępność
nazwa
port; ustalPort
pseudonim; pseudo; nick; ustalPseudonim; ustalPseudo; ustalNick
serwer; ustalSerwer
skróty; ustalSkróty
styl; ustalStyl

Podczas tworzenia nowego obiektu sieciowego może być używana lista ustawień: nowy "Sieć [ … ]. Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla każdego z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład - dla określania uprawnień wykonywania na naszym komputerze poleceń wydanych przez użytkownika zdalnego komputera są to: bezparametrowa funkcja dostępność i polecenie ustalDostępność z jednym parametrem logicznym. Zatem można polecić wykonać np.:

? sieć1'ustalDostępność "prawda

Wyjątkiem jest ustawienie nazwa - ma wartość nadawaną podczas tworzenia obiektu. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie Wartość Opis
dostępność logiczna Jeśli ma wartość prawda, to połączony z nami użytkownik zdalnego komputera będzie mógł przesłać nam (używając polecenia nadajIZrób) listę poleceń, a będzie ona automatycznie wykonana w naszym środowisku (przez nasz komputer).

Warto być ostrożnym przy nadawaniu temu ustawieniu wartości prawda, gdyż, jeśli to zrobimy, pozwolimy innym użytkownikom kasować nasze obiekty, procedury itd.

Domyślną wartością jest fałsz.
nazwa słowo Może być użyte tylko podczas tworzenia jednostki klasy Sieć.

Wartość określa nazwę tworzonego obiektu sieciowego.

Jeśli nie zostanie użyte, to tworzony obiekt otrzyma unikalną nazwę, składającą się z wartości zmiennej prefiksNazwy (domyślnie słowa sieć) i liczby.

port liczba Numer portu. To ustawienie może być zmieniane tylko przez zaawansowanych użytkowników.

Domyślną wartością jest 51.
pseudonim
Skróty:
pseudo
nick 		słowo Każdy z użytkowników uczestniczących w połączeniu sieciowym musi mieć swoją unikalną nazwę. To słowo - wartość ustawienia pseudonim - służy do identyfikacji użytkownika w czasie, gdy inni użytkownicy wysyłają mu wiadomości, polecenia czy obiekty.

Domyślną wartością jest nikt (przy braku połączenia), klient (dla klientów) lub serwer.
serwer słowo Wartością jest adres serwera - symboliczny, np. scop.dimm.fmcm.unita.uk, lub adres IP, np. 127.194.79.18, lub słowo localHost. Pamiętajmy, że:
  • wszyscy uczestnicy danego połączenia muszą określić ten sam serwer,
  • tylko użytkownicy będący klientami określają serwer; serwer ignoruje swoją wartość ustawienia serwer,
  • jeśli połączenie ma miejsce w sieci lokalnej, to po jego dokonaniu nazwa serwera może być skrócona do nazwy odpowiedniego komputera,

Jeśli wartość ustawienia serwer jest równa localHost, to oznacza to, że klient i serwer są w naszym komputerze. To zaś oznacza, że mamy dwukrotnie uruchomione środowisko Logomocji-Imagine (raz w roli serwera, raz klienta), działają one równolegle i są połączone.

Domyślną wartością jest puste słowo.
skróty menu-skrótów Określa skróty klawiszowe dla obiektu sieciowego.

Domyślną wartością jest [] - brak skrótów.
styl nikt, serwer lub klient W połączeniu sieciowym dokładnie jeden uczestnik musi mieć styl o wartości serwer - to on aktywuje połączenie, jako pierwszy wydając polecenie sieć1'połącz (zakładamy, że obiekt sieciowy ma nazwę sieć1). Wydanie tego polecenia rozpoczyna komunikację sieciową i pozwala innym uczestnikom podłączyć się do tego komputera.

Pozostali uczestnicy również wydają polecenie połącz swoim obiektom sieciowym (zwykle sieć1'połącz) i wówczas ich ustawienia styl przyjmują automatycznie wartość klient.

Jeśli wartością ustawienia jest nikt, to oznacza to, że dany użytkownik nie jest połączony z innymi (nie jest ani serwerem, ani klientem).

Należy pamiętać, że dany użytkownik może być serwerem tylko w jednym połączeniu (a klientem - w wielu).

Domyślną wartością jest nikt.


Sieć: zmienne wspólne

Klasa Sieć ma zmienne wspólne, które są dostępne dla całej tej klasy. Oznacza to, że są one dzielone i mogą być używane przez każdy obiekt tej klasy.

Zauważmy, że nie ma tu zmiennej menuKontekstowe. Nic dziwnego - przecież obiekty klasy Sieć nie są wyświetlane.

Pamiętajmy, że dla każdej wspólnej lub prywatnej zmiennej zmienna, istnieje funkcja zmienna podająca jej wartość i polecenie ustalzmienna zmieniające jej wartość.

Nazwa Opis
nazwyZdarzeń Wartością jest lista zdarzeń oferowanych w dialogu Zmień mnie każdego obiektu sieciowego, po wybraniu zakładki Zdarzenia i kliknięciu przycisku Dodaj.

Dialog Zmień mnie, np. dla obiektu sieć1 klasy Sieć, można wywołać poleceniem sieć1'zmieńMnie.
prefiksNazwy To słowo jest używane przy automatycznym generowaniu nazwy dla tworzonego obiektu klasy Sieć (połączenia), zwykle sieć1, sieć2, sieć3 … itd. Jeśli chcemy, aby obiekty miały inne nazwy, to możemy je zmienić w dialogu Zmień mnie każdego z istniejących obiektów, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Przykład:

? nowaKlasa "Sieć "MojaSieć
  [wspólne'prefiksNazwy Czat pseudonim Staś dostępność prawda]
? nowy "MojaSieć []

utworzy obiekt sieciowy o nazwie Czat1.

Domyślną wartością jest sieć.


Sieć: zdarzenia

Obiekty klasy Sieć rozpoznają pięć standardowych zdarzeń, w tym trzy specyficzne: gdyOdbierzesz, gdyOdbierzeszObiekt i gdyZmienionyStan.

Oto pełna lista zdarzeń rozpoznawanych przez klasę Sieć:

[gdyŁadujesz gdyOdbierzesz gdyOdbierzeszObiekt gdyTworzysz gdyZmienionyStan].

Zdarzenie | Opis
gdyOdbierzesz | Zachodzi po odebraniu wiadomości od innego uczestnika połączenia. Można wówczas użyć funkcji przekaz w celu odczytania i ewentualnego przetworzenia otrzymanej wiadomości.
gdyOdbierzeszObiekt | Zachodzi po odebraniu obiektu od innego uczestnika połączenia. Można wówczas użyć polecenia odbierzObiekt dla zaakceptowania (tj. utworzenia) obiektu w bieżącym adresacie.
gdyZmienionyStan | Zachodzi, gdy zmienia się stan połączenia (podłączamy się, odłączamy, pojawia się błąd połączenia itd.).Można wówczas użyć funkcji stan w celu rozpoznania nowego stanu i podjęcia nań ewentualnej reakcji.


Sieć: procedury

nadaj; wyślij
nadajIZrób; wyślijIZrób
nadajObiekt; wyślijObiekt
nadawca
odbierzObiekt
połącz
połączony?
przekaz; wiadomość
rozłącz
stan
użytkownicy

Wymienione tu procedury należą do klasy Sieć. Jeśli obiekt sieciowy uczynimy aktywnym (za pomocą słuchaj lub - tymczasowo - za pomocą proszę) i wydamy na przykład polecenie rozłącz, to polecenie to nie będzie wykonane przez domyślnego adresata, ale będzie wykonane przez każdy aktywny obiekt sieciowy.

Do każdego obiektu sieciowego możemy też odwołać się bezpośrednio (bez potrzeby wcześniejszego uaktywniania za pomocą słuchaj lub proszę), np. sieć1'rozłącz.

Procedura | Typ | Opis
nadaj komu coś
Również:
wyślij 		P Po ustanowieniu połączenia możemy wysyłać dowolne dane.

Pierwszy parametr - komu - określa odbiorcę, którym może być:

  • uczestnik połączenia - wówczas jest to jego pseudonim,
  • lista wybranych uczestników połączenia - wówczas jest to lista ich pseudonimów.
  • pusta lista - wtedy odbiorcami są wszyscy uczestnicy połączenia, poza nadawcą.

Drugi parametr - coś - jest wysyłaną daną (listą, słowem, postacią itd.).

Kiedy dane zostaną wysłane do odbiorców, zajdzie u nich zdarzenie gdyOdbierzesz. Więcej - w opisie funkcji przekaz.

? sieć1'nadaj "Staś [Twoja kolej]
nadajIZrób komu lista-instrukcji
Również:
wyślijIZrób 		P Na początku to samo, co nadaj komu lista-instrukcji. Ponadto, jeśli ustawienie dostępność ma u odbiorcy wartość prawda, to instrukcje zawarte w drugim parametrze będą automatycznie wykonane w środowisku odbiorcy.
nadajObiekt komu obiekt
Również:
wyślijObiekt 		P Podobnie do nadaj komu coś. Jednakże w tym przypadku wysyłane nie są dane, tylko wysłany zostaje cały obiekt. Jeśli wysyłany obiekt zawiera inne obiekty (np. plansza - żółwie, suwaki, pola tekstowe itp.), to wysyłane są one wszystkie (cała struktura).
nadawca | F | Kiedy nasz obiekt sieciowy odbierze wiadomość (i zajdzie zdarzenie gdyOdbierzesz), wartość tej funkcji jest nazwą nadawcy.
odbierzObiekt lista-ustawień P Załóżmy, że inny uczestnik połączenia wysłał nam pewien obiekt używając polecenia nadajObiekt. Wówczas, po otrzymaniu przesyłki w naszym obiekcie sieciowym zajdzie zdarzenie gdyOdbierzeszObiekt. Możemy wtedy użyć polecenia odbierzObiekt. Spowoduje ono zaakceptowanie przesyłki i utworzenie otrzymanego obiektu w środowisku naszego Imagine.

Jeśli parametr lista-ustawień będzie listą pustą, to zostanie w naszym środowisku Imagine utworzona dokładna kopia wysłanego nam obiektu.

Gdy jednak lista-ustawień nie będzie pusta, to zmodyfikuje ona ustawienia utworzonej w naszym komputerze kopii otrzymanego obiektu, np.:

? sieć1'odbierzObiekt [poz [20 100] pisak pod]

W szczególności można w ten sposób określić miejsce, w którym nowy obiekt będzie utworzony, np.

? sieć1'odbierzObiekt [mojeMiejsce p6]
połącz P Jeśli pełnimy rolę serwera, to polecenie to aktywuje nasz obiekt sieciowy. Bez tego nikt nie mógłby się z nami połączyć.

Jeśli jesteśmy klientem, to użycie tego polecenia (dla aktywnego obiektu sieciowego - bieżącego adresata) nawiązuje połączenie z serwerem określonym w ustawieniu serwer. Skutek próby nawiązania połączenia odczytamy funkcją stan. Zostanie wywołane zdarzenie gdyZmienionyStan. To, czy połączenie zostało nawiązane (możemy wtedy nadawać i odbierać dane) możemy sprawdzić funkcją połączony?, np.:

? sieć1'połącz
? pokaż sieć1'połączony?
prawda
połączony? F Ma wartość prawda, jeśli obiekt sieciowy jest:
  • serwerem,

albo

  • klientem aktualnie podłączonym do serwera (czyli do komputera, którego adres jest wartością ustawienia serwer).

W przeciwnym przypadku ma wartość fałsz.
przekaz
Również:
wiadomość 		F Gdy zajdzie zdarzenie gdyOdbierzesz (nasz obiekt sieciowy otrzyma dane), ta funkcja podaje zawartość przesyłki. Może być dowolną daną (postacią, listą, słowem, tekstem itd.).
rozłącz | P | Połączenie obiektu sieciowego zostanie zamknięte (przerwane). Nie będzie już możliwe wysyłanie, ani odbieranie danych. Ustawienie styl nie będzie równe ani serwer ani klient. Jeśli powiemy sieć1'ustalStyl "nikt, to skutek będzie taki sam, jak sieć1'rozłącz.
stan | F | Gdy zajdzie zdarzenie gdyZmienionyStan, ta funkcja podaje jaki jest nowy stan obiektu sieciowego.
użytkownicy F Aktualna lista pseudonimów wszystkich uczestników połączenia sieciowego.

Przykład:

? pokaż sieć1'użytkownicy
[Marta Sueli Iliana Erich]
? pokaż sieć5'użytkownicy
[Richard Celia Ross Dave Tiago]


Joystick: ogólny opis

Po uruchomieniu Logomocji-Imagine, możemy używać joysticków podłączonych do naszego komputera. W prosty sposób możemy tworzyć jednostki klasy Joystick - zwykle po jednej na każdy podłączony joystick - pozwalające korzystać z tych urządzeń w środowisku Imagine.

Po zainstalowaniu joysticka, system Windows przypisuje mu numer, zwykle kolejną liczbę naturalną 1, 2, 3 itd. Funkcja aktywneJoysticki podaje listę aktywnych joysticków (aktualnie podłączonych do komputera i rozpoznanych przez Windows). Kiedy tworzymy obiekt klasy Joystick, ważne jest aby znać numer joysticka, któremu obiekt ma odpowiadać, np.:

? nowy "Joystick [numer 3]

Obiekt klasy Joystick zostanie utworzony i większość jego ustawień będzie automatycznie przejęta z Windows.

Wywołując Logomocję-Imagine w poleceniu Windows możemy użyć opcji /J:n, gdzie n oznacza maksymalną liczbę joysticków obsługiwanych w środowisku Imagine.


Joystick: ustawienia

kob
liczbaOsi
liczbaPrzycisków
martwaStrefaX; …; ustalMartwąStrefęX; …
nazwa
numer
przycisk1; przycisk2…
skróty; ustalSkróty
sterowanyObiekt; ustalSterowanyObiekt
X; Y; Z; R; U; V
zakresX; …; ustalZakresX; …

Podczas tworzenia nowego obiektu joysticka może być używana lista ustawień: nowy "Joystick [ … ]. Także później można korzystać z ustawień, w celu sprawdzenia lub zmiany ich wartości. Dla większości z ustawień dostępna jest para operacji pierwotnych - funkcja podająca wartość ustawienia i polecenie zmieniające jego wartość. Na przykład - dla ustawienia martwaStrefaX są to: bezparametrowa funkcja martwaStrefaX i polecenie ustalMartwąStrefęX z jednym parametrem - liczbą. Zatem można polecić wykonać np.:

? j1'ustalMartwąStrefęX 2000
? pokaż j1'sterowanyObiekt
ż1

Zauważmy, że wiele ustawień można tylko odczytać. Nie można ich zmienić, bo zależą od danych technicznych podłączonych joysticków. Można odczytać ich wartości za pomocą odpowiednich funkcji.

Ustawienie nazwa ma wartość nadawaną podczas tworzenia obiektu. Jeśli później chcemy zmienić nazwę, to musimy użyć dialogu Zmień mnie z menu kontekstowego, bądź użyć polecenia ustalStan.

Ustawienie Wartość Opis
kob kąt Określa kąt widzenia. Jest to mały przycisk na wierzchu joysticka, który podczas gry możemy popychać w lewo lub prawo. Wartością ustawienia jest:
  • -1, gdy jest on w wyjściowym położeniu,
  • kąt o jaki został popchnięty (w przeciwnym przypadku); uwaga: niektóre joysticki rozpoznają ten kąt jedynie skokowo, np. 45, 90, 135, 180… itd.

Wartość tego ustawienia możemy jedynie odczytać.
liczbaOsi liczba Liczba osi joysticka (jest liczbą naturalną, zwykle z zakresu od 2 do 6).

Zależy od typu joysticka. Wartość tego ustawienia możemy jedynie odczytać.
liczbaPrzycisków liczba Liczba przycisków joysticka.

Zależy od typu joysticka. Wartość tego ustawienia możemy jedynie odczytać.
martwaStrefaX,
martwaStrefaY,
martwaStrefaZ,
martwaStrefaR,
martwaStrefaU,
martwaStrefaV
         liczba Dla każdej z osi joysticka.

Określa, w jakich granicach (zakresu odpowiedniej osi) joystick należy uznać za niewychylony, nawet gdy nie znajduje się w swej zerowej pozycji. Ustawienie określa szerokość tego obszaru. Obszar ten znajduje się zawsze w środku zakresu, np.:

? j1'ustalZakresX [-200 200]
? j1'ustalMartwąStrefęX 130

Dla j1, w przypadku wychylenia na osi x (nieważne w którą stronę) o nie więcej niż 65 – X poda wartość wychylenia równą 0.

Domyślną wartością tego ustawienia jest 10% odpowiedniego zakresu. Co więcej, w przypadku zmiany wartości ustawienia zakres, odpowiednia martwaStrefa zmienia swą wartość na 10% szerokości nowego zakresu.
nazwa słowo Może być użyte tylko podczas tworzenia nowego obiektu joysticka.

Jeśli nie zostanie użyte, to tworzony obiekt otrzyma unikalną nazwę, utworzoną w oparciu o wartość zmiennej wspólnej prefiksNazwy dla tej klasy.
numer liczba Istotne przy tworzeniu nowego obiektu klasy joystick. Później nie może być zmieniane. Określa numer joysticka przydzielony mu przez system Windows przy instalacji.

Lista numerów wszystkich podłączonych joysticków stanowi wartość funkcji aktywneJoysticki.

przycisk1,
przycisk2, …
przycisk32 		logiczna Dla każdego przycisku.

Określa, czy przycisk jest wciśnięty.

Wartość tego ustawienia możemy jedynie odczytać.
skróty menu-skrótów Określa skróty klawiszowe dla obiektu joysticka.

Domyślną wartością jest [], co oznacza brak skrótów.
sterowanyObiekt obiekt Pełna nazwa obiektu (np.: żółw baza'oknoGłówne's1'ż1, suwak baza'oknoGłówne's1'suw11 itd.), który jest kontrolowany przez obiekt joysticka. Ten obiekt jest informowany o zmianie stanu joysticka. Oznacza to, że jeśli zdefiniujemy dla tego obiektu zdarzenia gdyWciśnięty1PJ lub gdyZwolniony1PJ lub gdyRuchJoysticka itd., to w zależności od stanu joysticka będą one dla tego obiektu zachodzić. W procedurach obsługi tych zdarzeń możemy używać zmiennej lokalnej :joystick – jej wartość jest nazwą joysticka, który spowodował zdarzenie.

Domyślną wartością jest [], co oznacza, że żaden obiekt nie jest sterowany joystickiem.
X, Y, Z, R, U, V liczba Dla każdej z osi joysticka.

Określa wychylenie joysticka w odpowiedniej osi. Wartość zerowa odpowiada środkowemu położeniu (wewnątrz zakresu) bądź położeniu w martwej strefie.

Wartość tego ustawienia możemy jedynie odczytać.
zakresX,
zakresY,
zakresZ,
zakresR,
zakresU,
zakresV 		[ liczba1
liczba2 ] 		Dla każdej z osi joysticka.

Określa przedział wartości, które będzie mogło przyjmować wychylenie joysticka w odpowiedniej osi: X, Y, Z, R, U, V.

Początkowa (domyślna) wartość jest ustalana przez sterownik joysticka, np. [0 65535] – w tym przypadku środkowe położenie odpowiada liczbie 32767.5.

Za każdym razem, gdy zmieniamy wartość tego ustawienia, automatycznie odpowiednia martwaStrefa przyjmuje wartość równą 10% szerokości nowego zakresu, np.:

? pokaż j1'zakresX
[0 65535]
? pokaż j1'martwaStrefaX
6553.5
? j1'ustalZakresX [-2000 2000]
? pokaż j1'martwaStrefaX
400
? j1'ustalMartwąStrefęX 500


Joystick: zmienne wspólne

Jest tylko jedna zmienna wspólna zdefiniowana dla całej klasy Joystick. Zarówno prefiksNazwy jak i ustalPrefiksNazwy mogą być użyte przez każdy obiekt tej klasy.

Nazwa Opis
prefiksNazwy
 To słowo jest używane przy automatycznym generowaniu nazwy dla tworzonego obiektu klasy Joystick, zwykle j1, j2, j3 … itd. Jeśli chcemy, aby obiekty miały inne nazwy, to możemy je zmienić w dialogu Zmień mnie każdego z istniejących obiektów, albo użyć pierwotnego polecenia ustalStan, albo zdefiniować specjalną podklasę ze zmienioną wartością zmiennej wspólnej prefiksNazwy.

Domyślną wartością jest j.


Joystick: zdarzenia

Każdy z joysticków może mieć do 32 przycisków. Tylko pierwsze cztery z nich są uwzględnione w standardowych zdarzeniach, o nazwach gdyWciśnięty1PJ, gdyZwolniony1PJ itd. dla wszystkich czterech. Zdarzenie gdyWciśnięty1PJ zachodzi, gdy wciśnięty jest pierwszy przycisk joysticka, zdarzenie gdyZwolniony1PJ zachodzi, gdy pierwszy przycisk joysticka jest zwolniony (nie jest wciśnięty), podobnie dla drugiego, trzeciego i czwartego przycisku.

Dodatkowo mamy zdarzenie gdyRuchJoysticka. Zdarzenie to zachodzi, gdy zmieniona zostanie wartość X, Y lub Z dla danego joysticka.

W procedurach obsługi zdarzeń możemy używać zmiennej :joystick zawierającej nazwę joysticka, który wywołał zdarzenie. W szczególności możemy na przykład użyć konstrukcji typu proszę :joystick [X] w celu odczytania X-owego wychylenia joysticka.


Joystick: procedury

aktywneJoysticki; aktJ
lj
odbicie; bum
osie
uruchomEfekt
ustalSiłę
XY
zatrzymajEfekt

Dwie z omawianych procedur należą do klasy Baza - są to aktywneJoysticki i lj. Pozostałe procedury są procedurami klasy Joystick i mogą być używane o ile zostaną zaadresowane do jednego z joysticków, np.:

? j1'odbicie 90

Procedura | Typ | Opis
aktywneJoysticki
Skrót:
aktJ 		F To jest funkcja klasy Baza.

Jej wartością jest lista numerów wszystkich joysticków podłączonych do komputera i rozpoznanych przez system operacyjny.

Owe numery są przypisane joystickom przez Windows. Są to liczby całkowite. Nie można ich przedefiniować. Przykład:

? pokaż aktywneJoysticki
[1 3 4]
W celu sprawdzenia, jaki numer joysticka odpowiada danemu obiektowi joysticka, użyjemy funkcji numer.
lj F To jest funkcja klasy Baza.

Jej wartością jest liczba joysticków podłączonych do komputera.

Przykład:

? pokaż aktywneJoysticki
[1 3 4]
? pokaż lj
3
odbicie kąt
Również:
bum 		F Jedynie dla joysticków z efektem siłowym.

Na 200 milisekund zostanie włączony pełny efekt siłowy, w kierunku określonym przez parametr kąt.

Warto wiedzieć, że jeden efekt, zmiana zmień siłę i jedno odbicie mogą wystąpić równolegle.
osie F Wartością jest lista 6 wartości logicznych odpowiadających 6 osiom joysticka. Wartości prawda odpowiadają tym osiom, w których joystick działa. Dla pozostałych osi otrzymujemy wartość fałsz. Przykład:

? pokaż j3'osie
[prawda prawda fałsz prawda fałsz fałsz]

- oznacza to, że joystick rozpoznaje ruch na osiach X, Y i U.
uruchomEfekt efekt
(uruchomEfekt efekt
siła)
(uruchomEfekt efekt
siła kąt )
(uruchomEfekt efekt
siła kąt czas) 		P Jedynie dla joysticków z efektem siłowym.

Będzie uruchomiony efekt siłowy, stosownie do dostarczonych parametrów:

efekt jest listą [ef ef … ] a każde ef jest jedną z list:

  • [Power czasSiły czasNarastania poziomPoczątkowy czasWygaszania poziomKońcowy siła kąt] albo
  • [Periodic częstotliwość czasSiły czasNarastania poziomPoczątkowy czasWygaszania poziomKońcowy siła kąt].

Siła, poziomPoczątkowy i poziomKońcowy są liczbami z zakresu od 0 do 10000, częstotliwość jest mierzona w hercach, wszystkie czasy są mierzone w milisekundach (ale 0 oznacza “nieskończenie długo”). Wszystkie kąty mówią: "w tym kierunku".

Jeśli polecenie ma więcej niż jeden parametr, to wartości kolejnych parametrów przysłonią te opisane wcześniej.

Warto wiedzieć, że jeden efekt, zmiana zmieńSiłę i jedno odbicie mogą wystąpić równolegle.
ustalSiłę siła kąt P Jedynie dla joysticków z efektem siłowym.

Siła jest liczbą z zakresu od 0 do 10000.

Kieruje określoną siłę w zadanym kątem kierunku, aż do momentu wydania polecenia ustalSiłę 0 0.

Warto wiedzieć, że jeden efekt, zmiana zmieńSiłę i jedno odbicie mogą wystąpić równolegle.
XY | F | Dwuelementowa lista liczbowa, określająca wychylenie joysticka w osiach X i Y. Daje tę samą wartość, co lista X Y.
zatrzymajEfekt P Jedynie dla joysticków z efektem siłowym.

Przerywa (zatrzymuje) efekt rozpoczęty poleceniem uruchomEfekt. Ewentualne działania rozpoczęte poleceniami ustalSiłę i odbicie są kontynuowane.

Przykład:

Aby móc rysować za pomocą joysticka postępujemy np. następująco: tworzymy obiekt joysticka:

? nowy "Joystick [numer 1
    zakresX (lista 0 pierw s1'rozmiar)
    zakresY (lista 0 ost s1'rozmiar)
    sterowanyObiekt ż1]

Joystick będzie kontrolował żółwia ż1. Określamy zdarzenie dla ż1:

? ż1'ustalZdarzenie "gdyRuchJoysticka [ustalPozabs proszę :joystick [XY]]


Słownik podstawowych terminów i pojęć

Niniejszy słownik zawiera podstawowe terminy i pojęcia oraz ich definicje. Tych terminów będziemy używali dla określenia danych procedur pierwotnych oraz właściwości obiektów i związków pomiędzy nimi.

Zobacz także:

O klasach i obiektach
Dziedziczenie
Zarządzanie obiektami
Klasy obiektów
Systemy współrzędnych
Postacie
Multimedia i sterowanie głosem

A

Adres WWW
Adresat
Akceptowane pliki graficzne
Akceptowane pliki multimedialne
Akceptowane pliki odtwarzacza Windows
Aktywna strona
Aktywne obiekty
Aktywny kolor postaci
Aktywny żółw

C

Cokolwiek
Czcionka

D

Dana proceduralna
Dana procedury
Działanie
Dziedziczenie

E

Ekran graficzny
Ekran tekstowy

F

Faza
Filtr
Font
Funkcja użytkownika

G

Głosy
Grubość pisaka

J

Jednostka

K

Kąt
Kierunek
Klasa obiektów
Klatka
Kod procedury
Kod rysunku
Kod wielokąta
Kolor
Kolor malowania
Kolor RGB
Kolor tła
Kolory Logo

L

Liczba
Lista
Lista poleceń
Lista punktów
Losowa grubość pisaka
Losowe współrzędne
Losowy punkt
Losowy kąt
Losowy kolor
Losowy stan wyjściowy
Losowy wzór malowania
Losowy wzór pisaka

M

Macierzysty folder (macierzysta ścieżka)
Macierzysty kierunek
Menu

N

Najmłodszy żółw
Najstarszy żółw
Nazwa pliku
Notacja z apostrofem

O

Obiekt
Obraz tła
Obszar rysowania

P

Pełny komunikat o błędzie
Pierwszy aktywny żółw
Plik IMP
Plik LGF
Plik LGW Logo Komeniusz
Plik RTF
Początek strony i planszy
Podstawowy żółw
Pokaz
Polecenia i funkcje
Polecenie
Polecenie wywołania Logomocji - Imagine
Postać
Potomek obiektu
Pozycja żółwia
Procedura
Procedura użytkownika
Procedury ze zmienną liczbą danych
Proces
Prostokąt
Przodek obiektu
Punkt
Pusta lista
Pusta postać
Puste słowo

R

Rodzic obiektu

S

Skróty
Słowo
Specjalna pisownia słów
Spowolnienie
Stan wyjściowy
Standardowe ustawienia
Styl zakresu

Ś

Ścieżka
Ścieżka ładowania

T

Tekst
Tryb malowania
Typ pliku

U

Ustawienia

W

Wartość logiczna
Wektor
Wielokrotne dziedziczenie
Wiersz poleceń
Wizerunek żółwia
Właściwość
Wspólny przodek wszystkich aktywnych obiektów
Współrzędne bezwzględne
Współrzędne prostokąta
Współrzędne kartezjańskie
Wybór
Wycinek
Wygładzenie
Wyrażenie
Wzorzec
Wzór malowania
Wzór pisaka

Z

Zaczepienie
Zakres
Zdanie
Zdarzenie
Zdarzenie użytkownika
Zgodne obiekty
Zmienna
Zmienna globalna
Zmienna lokalna
Zmienna prywatna
Zmienna wspólna (obiektu A)
Znak
Znak specjalny
Znak zachęty CL
Znak zachęty wiersza poleceń
Znaki wyjątku \ i ||

Ż


Adres WWW

Nazywany też adresem URL (Uniform Resource Locator). Zwykle składa się z czterech części:

  • nazwy protokołu, najczęściej http (HyperText Transfer Protocol) lub słowa file,
  • adresu strony,
  • adresu serwera,
  • identyfikatora rodzaju instytucji.

Jeśli pierwszą częścią adresu jest file://, to reszta określa lokalną nazwę pliku razem z pełną ścieżką dostępu. Jeśli żaden protokuł, ani http://, ani file:// nie jest określony, domyślnie przyjmuje się, że jest to http://.

Pamiętaj, że w Imagine adres WWW musi być ujęty w parę pionowych nawiasów ||, na przykład: |http://www.logo.com/| lub |file://d:\Imagine\Teksty\index.html|


Adresat

Obiekt, który odbiera polecenie i je wykonuje.


Akceptowalne pliki multimedialne

Akceptowane pliki multimedialne

Dowolny format pliku rozpoznawany przez interfejs MCI Windows, to jest: WAV, MID, RMI, AVI i MPG. Ten zestaw można rozszerzyć przez zainstalowanie dodatkowych sterowników jak: MOV lub MP3.


Akceptowane pliki graficzne

Dowolny rozpoznawany przez Logomocję format graficzny:

LGF (plik postaci),
LGW (plik obrazów Logo Komeniusza),
BMP (bitmapa),
JPG (plik JPEG),
DIB (bitmapa autonomiczna),
GIF (plik GIF),
ANI(animowany kursor),
CUR (kursor),
ICO (ikona),
EMF i WMF (metaplik Windows),
TGA (Targa).


Akceptowane pliki odtwarzacza Windows

Dowolny format pliku multimedialnego rozpoznawany przez odtwarzacz Windows (Audio, Midi, MP3, MPEG, Quick Time, RealMedia, Video i pliki Windows Media).


Aktywna strona

Strona aktualnie widoczna w oknie głównym. W każdej chwili tylko jedna strona jest aktywna. Jeśli Twój projekt składa się tylko z jednej strony, nie można jej usunąć. By wyświetlić inną stronę możemy:

  • kliknąć przycisk s1, s2 itd. na pasku narzędzi,
  • użyć polecenia pokażStronę z daną nazwą odpowiedniej strony,
  • użyć polecenia ustalAktywnąStronę z daną nazwą odpowiedniej strony,
  • wpisać nazwę odpowiedniej strony w wierszu poleceń.

Widoczna strona staje się automatycznie aktywną stroną. Nazwę aktywnej strony daje funkcja aktywnaStrona:

? pokaż aktywnaStrona
s12


Aktywny kolor postaci

Wartość ustawienia kolPos, która dla każdego żółwia może być inna.

Może to być dowolny kolor lub lista pusta [] (to oznacza, że żaden kolor nie został zadeklarowany jako aktywny kolor postaci żółwia). Jeśli żółw ma określony aktywny kolor postaci (tzn. wartością funkcji kolPos nie jest pusta lista), to wszystkie punkty aktualnej postaci żółwia mające ten kolor są zastępowane przez punkt w kolorze pisaka. Przykład:

? nowaKlasa "Żółw "kolorowySamochód
[postać (ładPos "żółtySamochód) pisak pod kolPos żółty]
? powtórz 20 [p1'nowy "żółtySamochód [poz jld kolPis jld]]


Aktywny żółw

Każdy proces i każda strona zachowuje informacje o swoich aktywnych żółwiach. Aktywny żółw procesu – to taki żółw, którego nazwa znajduje się na liście kto tego procesu. Aktywny żółw strony – to taki żółw, którego nazwa znajduje się na liście ktoNaStronie.

Jeśli chcemy, by żółw lub żółwie na stronie były aktywne, używamy polecenia słuchaj lub ustalKtoNaStronie w procesie realizacji wiersza poleceń. Jeśli chcemy, żeby był to aktywny żółw (lub żółwie) procesu, używamy polecenia słuchaj:

? s1'ustalKtoNaStronie "ż2

Na skutek polecenia proszę, żółwie stają się chwilowo aktywne.


Cokolwiek

Dowolna dana typu słowo, lista lub postać. Nic innego nie może być poprawną daną procedury.


Dana proceduralna

Jest to:

  • nazwa procedury pierwotnej lub użytkownika.
  • kod procedury określający parametry i treść procedury, na przykład [[a b] [np :a pw :b]] definiuje procedurę z 2 parametrami,
  • szablon, tzn. lista postaci [wyrażenie] lub [polecenie]. Szablon może się odwoływać do danych, w tym celu używamy symbolu :%. Na przykład: [:% + 5], [lista "aaa :%], [pisz pierw :%] są poprawnymi szablonami. Jeśli szablon ma korzystać z większej liczby danych, odwołujemy się do nich symbolicznie za pomocą :%1, :%2, ... itd. Na przykład: [lista :%2 :%1], [jeżeli :%1 > :%2 [:%3][:%4]] to poprawne szablony odwołujące się do 2 oraz 4 danych.

Dane proceduralne mogą być danymi poleceń zrób, filtr, generuj oraz wykwp.


Dana procedury

Dana dowolnego typu dopuszczalnego w Logo, jak np.:

  • liczby 55, -55, 0, 67.7777434.
  • postacie jak poniższa postać złożona z jednej fazy i jednej klatki

  • słowa Janek, prawda, |Witaj w Logo|, ż3'stanWyjściowy.
  • listy [Jak się masz], [], [A B [C D [E] F] .

Uwaga: W poleceniu pisz różnica 222 11, daną dla pisz nie jest wyrażenie różnica 222 11, ale liczba 211. Najpierw oblicza się wartość takiego wyrażenia i to wynik obliczenia jest daną procedury. Oto inne przykłady wyrażeń i ich wartości:

  • suma 66 21 wartość 87
  • długość "Jan wartość 3
  • pisak wartość pod lub opu, ... zobacz pisak


Działanie

Lista poleceń.


Ekran graficzny

Centralna część okna głównego (pod paskami narzędzi - jeśli są widoczne). Na ekranie graficznym widoczna jest aktywna strona. Jeśli strona ma rozmiar mniejszy niż dostępny obszar na ekranie graficznym, to wokół strony jest szary margines.


Ekran tekstowy

Część okna, gdzie wpisujemy polecenia i otrzymujemy tekstowe komunikaty Logo. Ekran tekstowy jest podzielony na Historię (czyli pełny zapis Twoich poleceń i reakcji Logo) oraz wiersz poleceń. Na ekranie tekstowym pojawiają się efekty poleceń pisz, pokaż oraz wpisz. Tutaj są również wypisywane komunikaty o błędach (o ile nie wybrałeś opcji Opcje / Błędy w okienku). Z tego miejsca Logo odczytuje dane listy i słowa (o ile nie skierowałeś inaczej standardowego strumienia danych).


Faza

Element postaci. Każda postać jest pustą lub niepustą sekwencją faz.

Zwykle taka sekwencja jest wizerunkiem żółwia, a fazy odzwierciedlają kierunek żółwia. Liczba faz nie jest ograniczona. Na przykład, standardowa postać żółwia składa się z 24 różnych faz ilustrujących 24 różne kierunki:

W tym przypadku każda faza jest pojedynczym obrazem, ale ogólnie może być sekwencją obrazów nazywanych klatkami - składającymi się na animację ruchu w określonym kierunku.


Filtr

Zwyczajowo - słowo - nazwa wieloznaczna - oznaczające grupę plików, na przykład *.IMP, nowe??.*, logo*.LGF etc. Jednak ponieważ niektóre znaki mają specjalne znaczenie w Logomocji, musimy je pisać w wyjątkowy sposób: "|*.IMP|, "|nowe??.*|, oraz "|logo*.LGF|.

Określając filtr ze ścieżką można użyć znaków % - który oznacza macierzysty folder, oraz $ - który oznacza aktualną ścieżkę ładowania - ładście.


Font

Czcionka (Font)

Czcionka - zbiór znaków graficznych, liter alfabetu, cyfr i innych symboli, mających podobny jednolicie zaprojektowany krój - zwykle dostępny w kilku wielkościach i stylach. Fonty dzielimy na bitowe oraz wektorowe - jak na przykład fonty True Type - TT. Polecenia piszTekst i wpiszTekst mogą pisać teksty na ekranie w kierunku innym niż poziomy tylko czcionkami (fontami) wektorowymi.

Font (dla wszystkich aktywnych żółwi oraz pola tekstowego), określamy za pomocą listy mającej postać: [[nazwaCzcionki] [rozmiar pogrubienie styl tło podstawowaLinia zbiórZnaków]], gdzie:

  • rozmiar czcionki jest określony w punktach, np. 8 lub 9 lub 12 lub 28... itd.,
  • pogrubienie ma wartość: 400 - normalne lub 700 - zwiększone,
  • styl ma wartość: 0 - normalny, 1 - kursywa, 2 - podkreślenie, 3 - podkreślona kursywa, 4 - tekst przekreślony 5 - przekreślona kursywa,
  • gdy tło ma wartość 1, teksty na ekranie graficznym będą wypisywane na tle prostokąta w aktualnym kolorze tła, gdy ma wartość 0 - na przezroczystym tle.
  • podstawowaLinia określa dokładnie pozycję wypisywanego tekstu, dla wartości 0, aktualna pozycja żółwia będzie stanowiła górny lewy róg prostokątnego obszaru, w którym będzie wydrukowany tekst, dla wartości 1 - pozycja żółwia wyznacza linię tekstu, co usprawnia wypisywanie długich tekstów różnymi wielkościami czcionek.
  • zbiórZnaków jest określony przez liczbę całkowitą z zakresu od 0 do 255 włącznie.

? ustalFont [|Benguiat Bk BT| [20 0 0 0 1 0]]
? piszTekst "Hello,
? ukp "czerwony3
? ustalCzcionkę [|Benguiat Bk BT| [60 0 0 0 1 0]]
? wpiszTekst "World

Wygodnym sposobem ustalenia czcionki jest użycie wyboru Czcionki, można na przykład napisać ż1'ustalFont i nacisnąć F9.


Funkcja użytkownika

Funkcja zdefiniowana przez Ciebie lub jakiegokolwiek innego użytkownika Logo. Pamiętaj, że definiując funkcję musisz użyć polecenia wynik ( w skrócie wy). Logo po napotkaniu polecenia wynik, kończy wykonywanie procedury (podobnie jak po stop) i przekazuje daną tego polecenia jako wynik funkcji:

oto min :a :b
 jeśli :a < :b [wy :a]
 wy :b
już


Głosy

Lista postaci [fraza reakcja fraza reakcja …] gdzie:

  • fraza jest słowem lub listą słów (na przykład prawo lub [na prawo]).
  • reakcja - to pusta lista [] lub lista poleceń.


Grubość pisaka

Dodatnia liczba całkowita. Linie o grubości większej niż 5 mają zaokrąglone końce.


Jednostka

Konkretny obiekt, na przykład konkretny żółw, przycisk, pole tekstowe, albo żaba - żółw szczególnej kategorii, mający postać żaby i umiejący skakać i kumkać.

Jednostki tworzymy za pomocą poleceń nowy i nowyObiekt w oknie głównym, na stronie, na planszy lub pasku narzędzi. Jednostki można użyć jako prototypu do utworzenia innych podobnych jednostek.


Kąt

Dowolna liczba całkowita niemniejsza niż 0 i mniejsza niż 360 określająca kierunek żółwia w stopniach. Kierunek na północ (do góry) wyznacza liczba 0, kierunek na wschód - liczba 90, itd.


Kierunek

Wyróżniamy dwa rodzaje kierunków:

  • macierzysty kierunek,
  • aktualny kierunek.

Chociaż aktualny kierunek żółwia można zmienić w każdej chwili poleceniem prawo, lewo albo skieruj, żółw zawsze pamięta swój macierzysty kierunek jako składową jego stanu wyjściowego i wraca do niego po każdym poleceniu czyść oraz wróć.


Klasa obiektów

Struktura danych reprezentująca zbiór obiektów - jednostek - mających podobny wygląd i działanie. Klasy jednostek - na przykład Żaby - można tworzyć, jako szczególną odmianę żółwi mających określoną postać i dodatkowe (lub szczególne) procedury działania.

Klasy tworzymy poleceniem nowaKlasa jako pochodne określonej klasy rodzica. Każda zdefiniowana przez użytkownika klasa otrzymuje od rodzica ustalony zbiór standardowych ustawień.

? nowaKlasa "Żółw "Żaba [postać (ładpos "żaby.lgw) pisak pod]

Nowe jednostki danej klasy tworzymy poleceniem, nowy lub nowyObiekt.


Klatka

Każda faza postaci może być pojedynczym obrazem albo sekwencją obrazów nazywanych klatkami. Jeśli faza składa się z wielu klatek i przedstawia wizerunek żółwia, klatki zmieniają się automatycznie w sposób cykliczny dając wrażenie ruchu. Szybkością tej automatycznej animacji można sterować za pomocą spowolnienia.


Kod procedury

Poprawnie zbudowana lista definiująca procedurę użytkownika - ale bez nazwy. Jej pierwszy element jest listą nazw parametrów - bez dwukropka : poprzedzającego nazwy. Jeśli procedura nie ma parametrów, jest to lista pusta. Jej kolejne elementy są listami reprezentującymi kolejne wiersze definicji procedury. Końcowego już nie umieszczamy w kodzie procedury.

Kod procedury:

  • Jest wynikiem funkcji tekst.
  • Może być daną polecenia określ definiującego procedurę Logo.
  • Może być daną procedur wykonaj, filtr, wykwp oraz generuj.

Jeżeli kod definiuje procedurę o zmiennej liczbie danych, jej pierwszy element ma postać [nazwa [liczba]], gdzie nazwa jest (jedyną) daną procedury, a liczba określa standardową liczbę danych. W przypadku innej liczby danych trzeba zastosować notację nawiasową.


Kod rysunku

Albo kod wielokąta albo lista ograniczonego zakresu poleceń definiująca rysunek żółwia. Kod rysunku można przyporządkować żółwiowi jako jego postać za pomocą polecenia ustalPostać. Można go użyć jako danej poleceń: rysuj, wielokąt, rysujGładko, wklejObraz, ustalObraz (na przycisku), suń i stemplujObraz oraz funkcji: naPunkty i naWektory.

W kodzie rysunku mogą wystąpić polecenia:

  • zmieniające ustawienia pisaka i malowania ustalKolPis, ustalGrubość, ustalKolZam, ustalWzórPis i ustalWzórZam,
  • zmieniające tryb pisaka pod i opu,
  • ruchu naprzód i wstecz,
  • obrotu prawo i lewo,
  • sterujące powtórz,
  • rysowania punktów, kropek, elips i okręgów okrąg liczba, koło liczba, elipsa [liczba1 liczba2] oraz elipsa [liczba1 liczba2 a1 a2], owal [liczba1 liczba2] oraz owal [liczba1 liczba2 a1 a2], pkt, kropka liczba.
  • zmieniające pozycję napoz punkt (w układzie kartezjańskim) - w tym przypadku zakładamy, że pozycja żółwia w chwili rozpoczęcia interpretacji kodu rysunku jest tymczasowym początkiem układu odniesienia [0 0].
  • zmieniające kierunek ustalKierunek lub skieruj - w tym przypadku zakładamy, że kierunek żółwia w chwili rozpoczęcia interpretacji kodu rysunku jest kierunkiem 0.
  • zmieniające czcionkę ustalFont font i drukujące tekst wpiszTekst tekst.
  • rysujące zamalowany wielokąt wielokąt kodRysunku (gdy wielokąt nie jest zamknięty, automatycznie dodawany jest zamykający odcinek).
  • rysujące wygładzoną krzywą, patrz wygładzenie, rysujGładko kodRysunku.
  • kreślące łamaną łączącą dane punkty kreśl listaPunktów.

W kodzie rysunku mogą występować zarówno pełne, jak skrócone nazwy poleceń np lub naprzód, pw lub prawo itd.

Dwie ważne uwagi:

Jeśli jakikolwiek element kodu rysunku jest poprzedzony dwukropkiem : (zmienna) albo jest w nawiasach (…) (wyrażenie), Logo najpierw oblicza jego wartość. Dopiero po tych obliczeniach kod rysunku staje się daną procedur rysuj, wielokąt, rysujGładko, wklejObraz, ustalObraz - na przycisku, ustalObrazTła na stronie lub planszy, suń, stemplujObraz, ustalWskaźnikMyszy, naPunkty i naWektory.

Ale w przypadku polecenia ustalPostać, jeśli dany kod rysunku zawiera element poprzedzony dwukropkiem : lub w nawiasach (…), trzeba jawnie zaznaczyć za pomocą wykrzyknika ! poprzedzającego kod rysunku, że należy najpierw wykonać odpowiednie obliczenia, np.:
? ustalPostać ![ustalKolZam "czerwony wielokąt [powtórz 4 [np :a pw 90]]]

Kody rysunków mogą być danymi procedur rysuj, wielokąt, rysujGładko, wklejObraz, ustalObraz, ustalObrazTła, suń, ustalWskaźnikKursora, naPunkty, naWektory, ustalPostać oraz stemplujObraz (zobacz także wygładzenie).

Przykłady kodów rysunków:

[powtórz 6 [np 30 lw 60]]
[powtórz 6 [np 30 kropka 15 lw 60]]
[ustalGrubość 16 ukp 1 np 40]
[ustalGrubość 16 ukp 1 np 40 pod pw 90 np 20 pw 90 opu np 40]
[ukp "czerwony5 owal [100 130]
   pod ukp "niebieski2 np 20 kropka 40]
[ukp "czarny okrąg 100
   pod np 50 ukp "czerwony kropka 15
   np 24 ustalFont [|Arial| [10 700 0 0 0 0]] wpisz [okrąg m2]]
[wielokąt [powtórz 5 [np 150 pw 144]]]
[rysujGładko [wielokąt [powtórz 5 [np 150 pw 144]]]]

Pamiętaj, że każdy kod wielokąta jest także kodem rysunku, co umożliwia pewne uproszczenia, na przykład zamiast ustalPostać [wielokąt [powtórz 5 [np 150 pw 144]] można napisać ustalpostać [wielokąt [5 [150 144]].


Kod wielokąta

Lista parzystej liczby elementów [s1 s2 s3 s4 ... s2n-1 s2n], gdzie każda kolejna para to:

  • liczba, liczba,
  • liczba, kod wielokąta.

Przykłady kodów wielokąta:

[100 90]
[100 90 100 90 100 90 100 90]
[4 [100 90]]
[4 [100 -90 4 [20 90] 0 180]]

Pamiętaj, że każdy kod wielokąta jest również kodem rysunku, a tym samym może być daną procedur ustalPostać, rysuj, wielokąt, rysujGładko itd.


Kolor

Może to być:

  • liczba całkowita od 0 do 15 włącznie oznaczająca jeden z 16 kolorów podstawowej palety, w pierwszym wierszu na rysunku.
  • nazwa koloru, na przykład czerwony, czerwony11, ciemnoniebieski2 itd.
  • kod RGB, na przykład [128 128 0].
  • słowo jld oznaczające losowy kolor.

Lista 18 słów używanych jako nazwy kolorów jest wynikiem funkcji bez parametrów kolory. Wynikiem funkcji naRGB dla danej nazwy koloru jest jego kod RGB.


Kolor malowania

Wartość ustawienia kolZam żółwia. Może to być dowolny kolor. Decyduje on o tym, jakim kolorem żółw wypełnia określony obszar wykonując polecenia zamaluj, koło, owal lub wielokąt.

Jeśli nie ustaliłeś koloru malowania dla danego żółwia, będzie to jego aktualny kolor pisaka. Polecenie ukm (lub ustalKolZam) umożliwia malowanie wnętrza obszaru na inny kolor niż brzeg. Jednak każde użycie polecenia ukp (lub ustalKolPis), powoduje jednoczesną zmianę koloru malowania identyczną jak koloru pisaka. Dlatego najpierw zmieniaj kolor pisaka, a potem kolor malowania.


Kolor RGB

Lista [R G B] trzech list całkowitych z zakresu od 0 do 255 włącznie, oznaczająca kolor z palety True Colour. Sposób wyświetlania koloru [R G B] zależy od karty graficznej Twojego komputera i ustawień Windows.


Kolor tła

Kolor będący aktualną wartością ustawienia kolTła strony lub planszy. Można go zmienić poleceniem ustalKolTła. Domyślnie kolor tła strony jest biały. Domyślny kolor tła planszy jest określony przez dwie zmienne wspólne klasy Plansza: kolTła1 oraz kolTła2 (biały i pomarańczowy11 - pozwalają wzrokowo odróżnić planszę umieszczoną na innej planszy). Nie mylić z ustawieniem obrazTła.


Kolory Logo

18 kolorów (lista ich nazw jest wynikiem funkcji kolory). Do nazwy można dodać przyrostek - liczbę całkowitą od 1 do 12, która określa jasność koloru, na przykład ciemnoniebieski1 jest najciemniejszym odcieniem ciemnoniebieskiego koloru, a ciemnoniebieski12 - najjaśniejszym. Pamiętaj, że:

  • biały jest równoważny z szary12.
  • czarny jest równoważny z szary11.
  • jasnoszary jest równoważny z szary9.
  • Każdy inny kolor bez przyrostka jest równoważny z kolor6.

Wszystkie te kolory (wraz z suwakiem ustawiania jasności) można znaleźć w przyborniku.

? pokaż kolory
[biały czarny karminowy różowy fioletowy ciemnoniebieski niebieski jasnoniebieski błękitny ciemnozielony zielony oliwkowy żółty pomarańczowy brązowy jasnoczerwony czerwony szary]

Sprawdź jaka jest relacja 16 kolorów standardowej palety Windows do 18 kolorów Logomocji:


Liczba

Jest to:

  • Niepusta sekwencja cyfr, która może się zaczynać od znaku plus + lub minus - oraz zawierać kropkę dziesiętną oddzielającą część całkowitą od ułamkowej.

    Liczby można również zapisywać w notacji naukowej, przy czym zakres wykładnika jest ograniczony do ±4932. Oto przykłady użycia poprawnej notacji liczb:

    ? pokaż 100000/0.00007
    1.42857E9
    ? pokaż -9999999 * 5.5E555
    -5.5E562

  • Słowo jld reprezentujące liczbę losową z zakresu zależnego od kontekstu. Na przykład, gdy napiszemy naprzód jld, słowo jld oznacza losową liczbę z zakresu od 1 do 100, natomiast w wyrażeniu znak jld - liczbę od 0 do 255, włącznie.


Lista

Złożona struktura danych utworzona ze słów, postaci i innych list. Ściślej:

  • pusta lista [] jest listą.
  • [s1 s2 ... sN] jest listą, jeśli każdy element jest słowem, postacią lub listą.

s1, s2… nazywamy elementami listy, a liczba N to długość listy.


Lista poleceń, lista-P

Lista [polecenie1 polecenie2 …], ale w szczególności liczba poleceń może być równa 0 (Lista pusta jest też listą poleceń).


Lista punktów

Lista punktów [p1 p2 p3 … ] płaszczyzny. Logo traktuje listy punktów jako jednostki danych, może do list punktów dodawać punkty płaszczyzny (wektory), może je mnożyć przez liczbę itd. Jeśli [p1 p2 p3 …] jest listą punktów, v jest dwuwymiarowym wektorem, a x liczbą, można wykonać następujące działania (sprawdź sam, jaki mają sens):

[p1 p2 p3 …] + :v

[p1 p2 p3 …] - :v

[p1 p2 p3 …] * :v

[p1 p2 p3 …] / :v

[p1 p2 p3 …] * :x

[p1 p2 p3 …] / :x

:x / [p1 p2 p3 …] lub obróć :x [p1 p2 p3 …] wynikiem jest lista punktów obróconych zgodnie z kierunkiem ruchu wskazówek zegara o :x stopni, sprawdź poniższe przykłady.

? kreśl (naPunkty [powtórz 4 [np 60 pw 90]]) + [20 10]
? kreśl (naPunkty [powtórz 4 [np 60 pw 90]]) * -0.7
? kreśl (naPunkty [powtórz 4 [np 60 pw 90]]) - [20 10]
? kreśl (naPunkty [powtórz 4 [np 60 pw 90]]) * [2 -1]
? kreśl obróć 45 naPunkty [powtórz 4 [np 60 pw 90]]

Elementem listy punktów może być w szczególności lista pusta, na przykład:

? pokaż naPunkty [powtórz 3 [opu np 3 pod np 3]]
[[0 0] [0 3] [] [0 6] [0 9] [] [0 12] [0 15]]

Jeśli taka lista jest daną polecenia kreśl, pusty element [… p1 [] p2 …] powoduje przeskok od punktu p1 do p2 bez rysowania odcinka.


Losowa grubość pisaka

Słowo jld użyte jako dana polecenia ustalGrubość. Może mieć wartość całkowitą wybraną losowo z zakresu od 1 do 20 włącznie. Jeśli ten zakres losowości Ci nie odpowiada, możesz ustalić inny.


Losowe współrzędne

Słowo jld użyte jako dana polecenia ustalXY, ustalPozX lub ustalPozY. Na przykład:

  • ustalXY 0 jld przemieszcza każdego aktywnego żółwia do punktu o współrzędnej X równej 0 oraz współrzędnej Y wybranej losowo (w taki sposób, by znajdował się nie bliżej niż 10 pikseli od krawędzi jego miejsca.
  • ustalXY jld jld przemieszcza żółwia do punktu o losowych współrzędnych X i Y (ale nie bliżej niż 10 pikseli do krawędzi jego miejsca).
  • ustalPozY jld zmienia losowo współrzędną Y żółwia (w taki sposób, by znajdował się nie bliżej niż 10 pikseli od krawędzi jego miejsca).

Jeśli nie odpowiada Ci reguła: nie mniej niż 10 pikseli od krawędzi miejsca żółwia, możesz ustalić inną wartość niż 10.


Losowy kąt

Jest to słowo jld, użyte w poleceniu:

  • skieruj ( w tym przypadku słowo jld oznacza losowy kąt z zakresu od 0 do 359),
  • prawo lub lewo ( w tym przypadku słowo jld oznacza losowy kąt z zakresu od 0 do 90).

Jeśli nie odpowiadają Ci te, przyjęte domyślnie zakresy losowości, możesz je zmienić.


Losowy kolor

Jest to:

  • Słowo jld oznaczające dowolny kolor, wybrany z zakresu około 200 ustalonych kolorów.
  • lista [jld jld jld] reprezentująca kolor RGB lub podobna lista, której pewne elementy można ustalić, np. [120 jld 70].

Losowy kolor może być daną poleceń ustalKolPis, ustalKolZam, ustalKolTła oraz ustalKolorLinii.


Losowy punkt

Wyrażenie postaci:

  • jld zinterpretowane jako punkt [X Y], lub
  • [X jld] lub [jld Y] gdzie X oraz Y to liczby, lub
  • [jld jld] oznaczające losowo wybrany punkt [X Y].

Losowo wybrany punkt może być daną polecenia napoz lub ustalPozAbs. Polecenie naPos [jld jld], przemieszcza każdego aktywnego żółwia na losowo wybraną pozycję w jego miejscu (ale nie bliżej niż 10 pikseli od krawędzi tego miejsca). Polecenie napoz [jld 30], przemieszcza każdego aktywnego żółwia do punktu o losowej współrzędnej X oraz współrzędnej Y równej 30.

Jeśli nie odpowiada Ci reguła: nie mniej niż 10 pikseli od krawędzi miejsca żółwia, możesz ustalić inną wartość niż 10.


Losowy stan wyjściowy

Losowa dana polecenia ustalStanWyjściowy. Może to być:

  • słowo jld określające losowo utworzoną listę, której pierwszy element określa losową macierzystą pozycję żółwia, a drugi - macierzysty kierunek.
  • [jld jld] lub wariant, w którym jeden z dwóch elementów jest ustalony np. [jld 90], [[100 0] jld]
  • [[jld jld] jld] lub wariant, w którym pewne elementy są ustalone
    np. [[0 jld] 90] lub [[jld -100] jld] itp.


Losowy wzór malowania

Słowo jld użyte jak dana polecenia ustalWzórMal. Określa wzór malowania losowo wybrany z zakresu od 0 do 6 włącznie (z wykluczeniem pustego wzoru 7).


Losowy wzór pisaka

Słowo jld użyte jako dana polecenia ustalWzórPisaka. Określa wzór pisaka losowo wybrany z zakresu od 0 do 5 włącznie (z wykluczeniem pustej linii 6).


Macierzysty folder (macierzysta ścieżka)

Folder, z którego uruchomiono Logo. Można się do niego odwoływać za pomocą specjalnego znaku procentu %. Na przykład można napisać:

? ładProjekt "%\\Pokazy\\Kostka.IMP , by wskazać plik w podfolderze Pokazy macierzystego folderu Logo, lub
? ładPos "%\\obrazy\\rowerek.LGF by redagować postać itd.

Pamiętaj o dodatkowym ukośniku, który pełni rolę znaku wyjątku, ale pierwszą parę ukośników można opuścić:

? ładProjekt "%Pokazy\\Kostka.IMP.


Macierzysty kierunek

Kierunek ustalony dla każdego żółwia jako kąt w momencie jego tworzenia (lub później za pomocą polecenia ustalStanWyjściowy). Chociaż aktualny kierunek można zmieniać poleceniami prawo, lewo lub skieruj, żółw pamięta swój macierzysty kierunek jako element stanuWyjściowego i wraca do macierzystej pozycji i macierzystego kierunku po każdym poleceniu czyść oraz wróć.


Menu

Lista [element1 element2 element3 … ], gdzie każdy element definiuje polecenie albo odpowiednie podmenu i ma następującą postać:

  • [nazwa działanie], jeśli jest to wiersz definiujący polecenie, nazwa jest słowem lub listą pokazywaną w menu, a działanie jest słowem (nazwą polecenia) lub listą (poleceń) do wykonania po wybraniu tego elementu menu. Jeśli brak działania, przyjmuje się, że określa je nazwa,
  • [nazwa [] podmenu], jeśli jest to wiersz definiujący podmenu, nazwa jest pokazywana w menu, drugim elementem musi być pusta lista, podmenu to opis menu (zbudowany według tych samych zasad),
  • [] używamy jako separatora pomiędzy dwoma elementami menu.
? s1'ustalZdarzenie "gdyLewyWciśnięty
   [zrób specMenu [[Jazda! [ż1'np 30]] [[Zwrot w prawo!][ż1'pw 90]] [] [Czyść cs]]
                  Baza'pozMyszy]

Jeśli chcemy podkreślić literę w tekście widocznym w menu, poprzedzamy ją znakiem &.


Najmłodszy żółw

Żółw bezpośrednio po utworzeniu, na skutek poleceń nowy lub nowyObiekt, jest automatycznie najmłodszym żółwiem, tzn. ostatnim na liście wszystkie jego miejsca.

Kolejność żółwi na liście wszystkie można zmienić poleceniem kolż. Odgrywa ona istotną rolę, gdy wizerunki żółwi nachodzą na siebie na ekranie - im młodszy żółw tym mniej innych żółwi może go zasłonić. Najmłodszy żółw jest zawsze na wierzchu. Najstarszy żółw (pierwszy na liście wszystkie), jest zawsze zasłaniany przez inne żółwie.


Najstarszy żółw

Pierwszy element listy wszystkie nazywamy najstarszym żółwiem na stronie lub planszy. Ostatni element nazywamy najmłodszym żółwiem.

Kolejność żółwi na liście wszystkie można zmienić poleceniem kolż. Ma ona istotne znaczenie, gdy wizerunki żółwi na ekranie nachodzą na siebie - im młodszy żółw, tym mniej innych żółwi może go zasłonić. Najmłodszy żółw jest zawsze na wierzchu, najstarszy - zawsze na spodzie, zasłonięty przez inne żółwie funkcjonujące w tym samym miejscu.


Nazwa pliku

Standardowa dla Windows nazwa pliku, na przykład "projekt1.IMP lub "|mój obraz 23.LGF|.


Notacja z apostrofem

Zamiast proszę "ż2 [napoz [100 50]] można napisać ż2'napoz [100 50]. Jednak nie ma notacji z apostrofem równoważnej z proszę [ż2 ż3 ż4] [napoz [100 50]], ani z proszę :ktoś [napoz [100 50]].


Obiekt

Złożony typ danych o określonym:

  • działaniu - zdefiniowanym w postaci procedur i zdarzeń, oraz
  • stanie - reprezentowanym przez zmienne obiektu.

Obiekty w sensie ogólnym to określone klasy jednostek. Obiekty konkretne to pojedyncze jednostki klas. W Logo jest pewna liczba (wbudowanych) klas pierwotnych, ale można też tworzyć nowe klasy i jednostki, które dziedziczą właściwości klas pierwotnych i zdefiniowanych przez użytkownika.

Zobacz:


Obraz tła

Wartość ustawienia obrazTła strony lub planszy. Jest to postać {image1/1} mająca jedną fazę i jedną klatkę - rysunek wypełniający obszar strony lub planszy, który ulega zmianie po każdym narysowaniu linii przez poruszającego się żółwia, każdym poleceniu wklejObraz, stempluj, stemplujObraz, wpiszTekst oraz ustalObrazTła.


Obszar rysowania

Miejsce, gdzie można tworzyć żółwie, tzn. strona lub plansza. Ale to miejsce można dla każdego żółwia ograniczyć poleceniem ustalZakres do mniejszego prostokąta na stronie lub planszy - na którym wolno będzie żółwiowi rysować, pisać teksty, stemplować swoją postać itd.


Pełny komunikat o błędzie

Wynik funkcji błąd, w przypadku wystąpienia błędu w procesie. Zawiera:

  • numer błędu,
  • komunikat,
  • nazwę procedury użytkownika, w której wystąpił błąd (lub [], jeśli błąd wystąpił w wierszu poleceń),
  • numer wiersza, w którym wystąpił błąd (lub 0, jeśli błąd wystąpił w wierszu poleceń),
  • nazwa procedury użytej w poleceniu Logo, która spowodowała błąd,
  • wartość, która wywołała błąd.

? złap "błąd [pisz [a] + [b]] pokaż błąd
[10 + nie chce [a] jako danej.
Struktura danej listy nieodpowiednia dla + [] 0 + [a]]
? złap "błąd [specBłąd "|#h to niedopuszczalna wartość| 33] pokaż błąd
[100 33 to niedopuszczalna wartość [] 0 specBłąd 33]

Komunikat zdefiniowany przez użytkownika (utworzony za pomocą specBłąd) zawsze podaje numer 100.


Pierwszy aktywny żółw

Gdy tworzy się nowy żółw na skutek polecenia nowy lub nowyObiekt (albo kliknięcia przycisku Nowy żółw na pasku narzędzi) staje się on automatycznie najmłodszym żółwiem na stronie lub planszy będącej adresatem polecenia, to znaczy ostatnim elementem listy wszystkie. Kolejność żółwi na liście wszystkie można zmienić poleceniem kolż. Ma ona istotne znaczenie, gdy żółwie na ekranie nakładają się - im młodszy żółw, tym mniej innych żółwi go zasłoni. Najmłodszy żółw jest zawsze na wierzchu.

Pierwszy aktywny żółw - to znaczy pierwszy żółw na liście kto (strony lub planszy).


Plik IMP

Plik z zapisem projektu Logomocji. Oprócz tekstowego opisu wszystkich zapisywanych obiektów może także zawierać (skompresowane) postacie i/lub inną grafikę.


plik LGF

Plik, zwykle utworzony w Edytorze postaci z rozszerzeniem LGF zawierający jedną lub kilka (skompresowanych) postaci.


Plik LGW Logo Komeniusza

Standardowy typ plików Logo Komeniusz (poprzednika Logomocji) i jego Edytora Obrazów do zapisywania postaci. Pliki LGW są nadal akceptowane (odczytywane) przez Logomocję, ale postacie - bardziej rozwinięta forma obrazów Logo Komeniusz - są zapisywane w plikach LGF.


Plik RTF

Plik tekstowy w formacie rtf (Rich Text Format - stosowany także przez edytor MS Word) zawierający szczegółowe informacje dotyczące formatowania tekstu.


Początek strony i planszy

Punkt [0 0] (znajdujący się na lub poza stroną albo planszą), który jest punktem odniesienia (początkiem) kartezjańskiego układu współrzędnych na stronie lub planszy. Standardowo jest to środek strony lub planszy, ale można zmienić jego pozycję poleceniem ustalPoczątek.

Pozycję początku strony lub planszy określamy zawsze we współrzędnych bezwzględnych względem lewego górnego rogu strony lub planszy. Po zmianie rozmiarów strony lub planszy (ręcznie przez Shift + przeciąganie prawym przyciskiem myszy, lub za pomocą dialogu Zmień mnie), absolutne współrzędne początku nie ulegają zmianie. W konsekwencji początek strony może nie leżeć w jej optycznym środku.

By przywrócić standardowe położenie początku strony lub planszy o nazwie p, wystarczy napisać:

? p'ustalPoczątek p'rozmiar / 2


Podstawowy żółw

Logo, po uruchomieniu tworzy w oknie głównym jedyną stronę s1. Na środku strony umieszczany jest automatycznie podstawowy żółw ż1, który jest aktywny.


Pokaz

Dowolny projekt zapisany jako plik IMP w folderze Pokazy lub jego podfolderze. Jeżeli w projekcie została utworzona zmienna prywatna ikona w oknie głównym, jej wartość typu postać będzie reprezentowała ten projekt w dialogu Pokazy. W przeciwnym przypadku zostanie użyta standardowa ikona. By otworzyć pokaz, klikamy przycisk Otwórz pokaz na pasku narzędzi, lub wybieramy polecenie Plik / Otwórz pokaz….


Polecenie

Ma jedną z dwóch postaci:

  • nazwa polecenia wyrażenie1 ... wyrażenieN
  • (nazwa polecenia wyrażenie1 ... wyrażenieN)

Może to być polecenie pierwotne lub użytkownika. Każde wyrażenie jest najpierw obliczane, a następnie jego wynik jest daną polecenia. W nazwie polecenia można wskazać jego adresata, na przykład ż5'napoz [20 100]. Standardowa liczba wyrażeń (danych) zależy od polecenia.


Polecenia i funkcje

Procedury Logo dzielą się na polecenia i funkcje.

Polecenia mają określony skutek, na przykład: wydrukowanie tekstu na ekranie, przemieszczenie żółwia, zmiana ustawień, zakończenie pracy w Logo itd.. Dlatego w opisie polecenia trzeba określić jego skutek.

Funkcje mają określony wynik - wartość. Dlatego w opisie funkcji, trzeba określić, jaka będzie jej wartość dla określonych danych. Wynik funkcji może być daną innych procedur.


Polecenie wywołania Logomocji-Imagine

Polecenie uruchamiające aplikację, mające postać napisu określającego plik EXE (wraz z opcjonalnymi parametrami). Logomocję-Imagine uruchamia polecenie zawierające nazwę Imagine.EXE wraz z kompletną ścieżką (określającą macierzysty folder) i opcjonalnie następującymi parametrami:

  • /ns - system rozpoznawania mowy niedostępny dla Logomocji i nie jest możliwa komunikacja głosowa,
  • /J:n - określa maksymalną liczbę joysticków, jakie można dołączyć,
  • /l - jeśli jest ten parametr, to po uruchomieniu projektu, polecenie starter (w przypadku, gdy jest zdefiniowane), nie będzie automatycznie realizowane.


Postać

Typ danych Logomocji. Jest to (być może pusta) sekwencja faz, a każda faza może się składać z wielu klatek. Postacie są zapisywane w plikach LGF (starsze wersje mogą być zapisane w plikach LGW Logo Komeniusza). Zwykle są używane jako wizerunki żółwi.

Oto standardowa (domyślna) postać żółwia:

Ale żółwie mogą mieć inną postać:

Postacie mogą też być wartościami zmiennych i danymi procedur takich jak ustalPostać, ustalWskaźnikMyszy, stemplujObraz itd.


Potomek obiektu

Jeżeli obiekt jest klasą, do zbioru jej potomków zaliczamy:

  • ją samą,
  • wszystkie podklasy utworzone na jej podstawie,
  • wszystkie jednostki tej klasy należące do niej bezpośrednio bądź pośrednio jako potomkowie jej potomków.

Jeżeli obiekt jest jednostką, do zbioru jego potomków zaliczamy:

  • sam obiekt.
  • wszystkie jednostki pochodne od tego obiektu bezpośrednio lub od jego potomków.


Pozycja żółwia

Istnieją dwa rodzaje pozycji:

  • macierzysta pozycja, oraz
  • aktualna pozycja.

Macierzysta pozycja to szczególny dla każdego żółwia punkt jego miejsca, ustalony w chwili tworzenia żółwia (lub później za pomocą polecenia ustalStanWyjściowy zmieniającego ustawienie stanWyjściowy). Aktualna pozycja to punkt na stronie lub planszy, w którym właśnie znajduje się żółw (a dokładnie - zaczepienie jego postaci).

Żółw zmienia aktualną pozycję na skutek poleceń naprzód, wstecz, napoz itd., ale pamięta swoją macierzystą pozycję (jako element ustawienia stanWyjściowy) i wraca do niej po każdym poleceniu czyść oraz wróć.


Procedura

Podstawowy element z jakich budujemy programy w Logo. Każda procedura dotyczy jakiegoś zadania. Na przykład, czyść - wyczyszczenia całej aktywnej strony lub planszy.

Zobacz:


Procedura użytkownika

Każda procedura (zarówno pierwotna jak i użytkownika) należy do jakiegoś obiektu. Własną procedurę możesz zdefiniować:

  • w dialogu Zmień mnie obiektu (klasy albo jednostki);
  • za pomocą polecenia redaguj (w skrócie red) w wierszu poleceń; jeśli nie określisz adresata, otworzy się dialog Zmień mnie okna głównego i nowa procedura będzie należała do tego obiektu, ale możesz określić adresata, na przykład: Żółw'redaguj "kwadrat lub ż1'red "kwadrat itp.
  • za pomocą polecenia określ w wierszu poleceń;
  • używając formy oto w pliku tekstowym (na przykład typu IMT lub txt) załadowanym następnie do pamięci w czasie pracy w Logo za pomocą polecenia ładuj. Przed słowem oto można podać nazwę obiektu, dla którego definiujemy procedurę np. Przycisk'oto mojaprocedura … itd.

Każda definicja procedury (jak tego oczekuje dialog Zmień mnie) składa się z:

  • nagłówka - wiersza zaczynającego się od słowa oto, po którym jest nazwa procedury, oraz - jeśli potrzeba - parametry,
  • treści procedury - kolejnych wierszy określających sposób wykonania zadania (jeśli procedura jest poleceniem), lub otrzymania wyniku (jeśli to funkcja).
  • ostatniego wiersza zawierającego jedno słowo już zamykające definicję.

Parametry to nazwy zmiennych lokalnych procedury, które zostaną utworzone w momencie jej wywołania i automatycznie skasowane w momencie jej zakończenia.


Procedury ze zmienną liczbą danych

Każda procedura pierwotna ma ustaloną standardową liczbę danych, jednak niektóre z nich, jak np. pisz, akceptują również niestandardową liczbę danych. W przypadku, gdy chcemy, by procedura przyjęła niestandardową liczbę danych, musimy zastosować notację nawiasową:

? (pisz "A "B "C)
A B C

Większość procedur użytkownika przyjmuje tylko standardową liczbę danych (określoną jednoznacznie przez liczbę parametrów w nagłówku definicji procedury). Jednak, można też definiować własne procedury ze zmienną liczbą danych. Nagłówek takiej procedury musi się składać ze:

  • słowa oto po którym jest nazwa procedury.
  • jednej nazwy dla danych,
  • Listy z jedną liczbą [N] - gdzie N określa standardową liczbę danych procedury.

Na przykład:

oto dublet :coś [1]
 wy zd : coś : coś
już

Jeśli używasz tej funkcji z jedną daną, nie musisz stosować notacji nawiasowej. Jeśli liczba danych jest inna, trzeba użyć nawiasów:

? pisz dublet "hallo
hallo hallo
? pisz (dublet "hallo "tam)
hallo tam hallo tam

Jedyny parametr (zmienna robocza) takiej procedury zawsze otrzymuje na wejściu listę wszystkich danych. Na przykład, jeśli napiszemy:

? pisz (dublet "Kto "ty "jesteś)

to treść definicji procedury dublet zostanie wykonana dla wartości początkowej :coś, którą będzie lista [Kto ty jesteś].


Proces

Niezależny wątek obliczeń, skończony lub nie, który ma własne aktywne obiekty, adresata, lokalne zmienne itd.

Zobacz:

Procesy


Prostokąt

Lista określająca pozycję prostokąta na stronie lub planszy i jego rozmiar. Ma jedną z czterech następujących form: [ ][X Y][X Y szer wys][[X Y][M N]], gdzie[X Y] to współrzędne lewego górnego rogu prostokąta, szer i wys liczby całkowite określające szerokość i wysokość prostokąta (które w szczególnym przypadku mogą być ujemne). Pusta lista [], oznacza prostokąt całej strony lub planszy. Jeśli określimy tylko lewy górny róg [X Y], to prawym dolnym rogiem prostokąta będzie odpowiedni (prawy dolny) róg strony lub planszy. Lista dwóch punktów [[X Y][M N]], określa lewy górny - [X Y] i prawy dolny - [M N] róg prostokąta.


Przodek obiektu

Jeśli Janek jest jednostką klasy Żółw, to Żółw jest rodzicem obiektu Janek. Ale klasa Żółw ma również rodzica – jest nim Baza. Żółw i Baza - to przodkowie Janka.

Jeśli utworzysz podklasę klasy Żółw, na przykład o nazwie Żaba, a następnie jednostkę klasy Żaba o nazwie Julian, to przodkami Juliana będą Żaba, Żółw oraz Baza. Tak więc każdy obiekt może mieć wielu przodków:

  • Każdemu obiektowi można przypisać różne wzorce. Je również traktujemy jak chwilowych przodków.
  • Rodzic obiektu i jego rodzic... itd. są przodkami tego obiektu.
  • Każdy obiekt ma swoje miejsce, gdzie został utworzony i funkcjonuje. Jest to również przodek obiektu.


Punkt

Lista [X Y], gdzie X i Y to liczby. Każdy punkt można interpretować również jako wektor.


Pusta lista

Lista zawierająca zero elementów. Można ją utworzyć za pomocą pary nawiasów kwadratowych []. Puste listy są rozpoznawane przez funkcję puste?.


Pusta postać

Postać, która ma 0 faz. Taka postać jest wynikiem funkcji puspos:

? przyp "dziwnaPostać puspos
? pokaż :dziwnaPostać
{postać 0}

Puste postacie są rozpoznawane przez funkcję puste?.


Puste słowo

Słowo długości 0, tzn. słowo bez znaków. Puste słowa są rozpoznawane przez funkcję puste?.


Rodzic obiektu

Każdy obiekt Ob (z wyjątkiem klasy Baza - na szczycie hierarchii obiektów) ma rodzica. Może nim być klasa, z której Ob się wywodzi, po utworzeniu go poleceniem nowy, nowaKlasa lub nowyObiekt, albo jednostka (prototyp obiektu), z której Ob się wywodzi, po utworzeniu go poleceniem nowy, lub nowyObiekt. W każdym przypadku obiekt Ob ma dostęp do wszystkich procedur, zdarzeń i zmiennych swojego rodzica.

Zobacz:

Klasy i jednostki


Skróty

Lista - rodzaj menu - określająca reakcję na określone klawisze, która ma następującą postać:

[nazwaKlawisza … nazwaKlawisza lista-poleceń
 nazwaKlawisza … nazwaKlawisza lista-poleceń
 …
  [domyślne działania-dla-INACZEJ]]

; Ostatni element można pominąć.

NazwaKlawisza to:

  • dowolny znak - oznaczający klawisz z tym znakiem (wielkie i małe litery są rozróżnialne),
  • kombinacja klawiszy: ctrl.A, … ctrl.Z, shift.ctrl.A, … shift.ctrl.Z, alt.ctrl.A, … alt.ctrl.Z, shift.alt.ctrl.A, … shift.alt.ctrl.Z,
  • home, up, pageUp, left, right, end, down, pageDown, space, insert, delete, enter, backSpace, tab, esc, F1, … F12, (każde z tych słów można poprzedzić jednym lub wieloma ctrl., shift., alt., na przykład ctrl.F12 lub ctrl.shift.enter),
  • każdą nazwęKlawisza można poprzedzić przedrostkiem puść., co oznacza, że odpowiednia akcja nastąpi w momencie puszczenia klawisza (to działa tylko wtedy, gdy wiersz poleceń jest wyłączony).

Każda jednostka może mieć własne skróty. Po naciśnięciu klawisza (lub ich kombinacji), wszystkie obiekty na aktywnej stronie i obiekty funkcjonujące poza jakąkolwiek stroną (jak główny pasek narzędzi, przybornik lub inne paski narzędzi w oknie głównym etc.) zareagują zgodnie z ich menu skrótów - jeśli takie mają. Również wiersz poleceń zareaguje na wciśnięcie klawisza we właściwy sobie sposób, jeśli nie został wyłączony przez ustawienie wierszPoleceń fałsz. W wierszu poleceń dowolnego menu skrótów można użyć funkcji ostKlawisz by ustalić, jaki klawisz był naciśnięty ostatni.

Gdy ustawienie wierszPoleceń w oknie głównym ma wartość fałsz, wszystkie skróty wszystkich obiektów będą tymczasowo wyłączone - aż do momentu przywrócenia wartości prawda.


Słowo

Atomowa struktura danych Logo. Jest to sekwencja znaków (może być pusta), która nie może zawierać znaków specjalnych, takich jak: średnik, operator +, <, \ itd., o ile nie występuje w nawiasach w postaci dwóch pionowych kresek jak: |J. R.| lub |Jak się masz?|. Zapis w takich nawiasach nazywamy specjalną notacją słów. Słowo nie mające żadnego znaku nazywamy słowem pustym.

Słów używamy jako nazw żółwi, zmiennych, procedur i innych obiektów, oraz jako elementarnych “cegiełek” do budowania złożonych struktur - list.


Specjalna pisownia słów

Dowolna sekwencja znaków pomiędzy dwiema pionowymi kreskami jest traktowana jako jedno słowo, na przykład |A B|, |Jak się masz?| lub |[a b c]|.


Spowolnienie

Wielkość określająca szybkość zmiany klatek automatycznej animacji, ustalona osobno dla każdej klatki każdej fazy postaci. Wartość spowolnienia określamy w tikach, 1000 tików to 1 sekunda. Można ją odczytać oraz zmienić za pomocą procedur spowolnienie oraz ustalSpowolnienie, a także w Edytorze postaci.


Stan wyjściowy

Wartość ustawienia StanWyjściowy określonego żółwia. Jest to lista postaci [[X Y] k], gdzie [X Y] to macierzysta pozycja żółwia, a k to jego macierzysty kierunek. Można je zmienić poleceniem ustalStanWyjściowy lub ustalając nowe wartości na zakładce Pozycja w dialogu Zmień mnie. Chociaż żółw może zmieniać aktualną pozycję i kierunek, zawsze wraca do macierzystej pozycji i kierunku po każdym poleceniu czyść oraz wróć.


Standardowe ustawienia

Każda klasa pierwotna ma predefiniowane standardowe ustawienia, tzn. wartości zmiennych całkowicie określające stan każdej jednostki. Na przykład stan żółwia określają wartości: poz, kolPis, grubość, zakres, stylZakresu itd. Pamiętaj, że:

  • Z każdym standardowym ustawieniem są związane dwie procedury. Na przykład, z ustawieniem grubość (pisaka żółwia), jest związane polecenie ustalGrubość (w skrócie ugp) umożliwiające zmianę grubości pisaka oraz funkcja grubość dająca aktualną wartość ustawienia. Ta para procedur zapewnia środki odczytywania i modyfikowania aktualnych wartości ustawienia.
  • Gdy tworzymy klasę poleceniem nowaKlasa, jej jednostki będą miały identyczne standardowe ustawienia jak klasa rodzica.


Styl zakresu

Określa zachowanie żółwia na krawędziach jego zakresu. Zwykle jest najdogodniej, gdy jest to styl sklej, czasem dogodniejszy jest styl okno, odbij, albo płot. Gdy jest ustalony styl zakresu:

  • sklej - żółw przekraczając krawędź swojego zakresu (np. po poleceniu naprzód) pojawia się z przeciwnej strony, tak jakby przeciwne krawędzie (górna z dolną i prawa z lewą) były sklejone,
  • okno - żółw może wyjść poza granice swojego zakresu bez żadnych ograniczeń, ale nie może poza nimi zostawiać żadnych śladów (rysować i pisać), tak jakby jego zakres był oknem, przez które widać tylko fragment jego nieograniczonego miejsca,
  • odbij - żółw zawsze odbija się od krawędzi swojego zakresu i kontynuuje ruch,
  • płot - żółw nie może przekroczyć krawędzi swojego zakresu, tak jakby to był płot.


Ścieżka

Napis określający położenie pliku w strukturze folderów. Na przykład, położenie pliku o nazwie pies.LGF znajdującego się w folderze Logo na dysku D, określa ścieżka D:\Logo\pies.LGF. Jednak, ponieważ symbol \ jest znakiem specjalnym w Logo piszemy D:\\Logo\\pies.LGF lub |D:\Logo\pies.LGF|. Określając ścieżkę można używać znaku %, który oznacza macierzysty folder, oraz $ - oznaczającego aktualną ścieżkę ładowania.


Ścieżka ładowania

Pełna ścieżka wskazująca folder, z którego ostatnio załadowano projekt poleceniem ładuj lub Plik/Otwórz projekt.... Można użyć specjalnego znaku odniesienia do tego folderu $ - na przykład wtedy, gdy chcemy załadować dodatkowe pliki do pliku inicjującego projekt.

Załóżmy, że ostatnio otworzyłeś projekt z folderu D:\Logo\Projekty, a teraz chcesz wytapetować stronę s1 grafiką koty.bmp z folderu Obrazy. Możesz to zrobić tak:

? pokaż (ładście)
D:\Logo\Projekty\
? s1'wklejObraz "$..\\Obrazy\\koty.bmp [styl tapeta]


Tekst

Słowo lub zdanie. Na przykład: PIOTR, Julia albo [Romeo i Julia] to poprawne teksty. Teksty mogą być danymi wielu procedur, np. ustalFont, wpisz, ustalRadę itd.


Tryb malowania

Istnieją dwie metody zamalowywania obszarów na polecenie zamaluj:

  • Zamalowywanie obszaru (wokół aktywnego żółwia) aż do granic wyznaczonych przez dowolny inny kolor. (Zamalowywany obszar składa się z punktów wokół żółwia mających identyczny kolor jak punkt, w którym znajduje się żółw). Nie może być żadnych dziur w obramowaniu obszaru, bo inaczej kolor malowania rozleje się na cały ekran. Ta metoda jest stosowana domyślnie, ale można to zmienić nadając zmiennej wspólnej klasy Baza o nazwie trybMal wartość 1. By wrócić do standardowej metody malowania trzeba nadać tej zmiennej wartość 0.
  • Zamalowywanie obszaru ograniczonego przez aktualny kolor pisaka aktywnego żółwia. W tym przypadku zamalowywany obszar może zawierać punkty różnych kolorów - cały będzie zamalowany jednolicie. Ale brzeg w kolorze pisaka musi być zamknięty, bo inaczej zostanie zamalowany cały ekran. Tę metodę można wybrać ustalając wartość 1 zmiennej trybMal klasy Baza.

Metoda malowania stosowana domyślnie jest identyczna jak w edytorze grafiki Paint.


Typ pliku

Dana dla dialogZapisz, dialogOtwórz, dialogZapiszWWW itd., określająca typ pliku: w dialogu Otwórz… lub daną pola Zapisz jako typ: w dialogu Zapisz…. Jest to słowo postaci
|typ@typ@…@typ|, gdzie każdy typ zaczyna się od słowa albo frazy (np. Projekt Logo) zakończonej @, po czym następują (oddzielone średnikami) filtry postaci *.IMP. Przykłady:

|Projekty Logo@*.IMP|

|Projekty Logo@*.IMP@Pliki tekstowe Logo@*.L;*.IMT;*.TXT|


Ustawienia

Lista postaci [ustawienie wartość ustawienie wartość... ], na przykład:

[postać Żaba pisak pod poz [20 55]] lub
[rozmiar [120 250] rada [To jest moje pole tekstowe]]

Ustawienia są użyteczne do tworzenia nowych klas oraz tworzenia nowych jednostek, a także jako dane procedur ustalStan, wklejObraz, ustalAtrPos, niech, suń i innych.

Pamiętaj, że każdy element określający wartość zaczynający się od dwukropka, np. :nowaPoz, musi być ujęty w nawiasy ( ... ), jego wartość będzie najpierw obliczona i wynik obliczeń będzie wartością odpowiedniego ustawienia. W ten sposób w ustawieniach można używać zmiennych i wyrażeń:

[poz :nowaPoz rozmiar (lista pierw ż2'poz ost ż3'poz)]

Dla zaawansowanych użytkowników: W podobny sposób można nie tylko określać ustawienia, ale również definiować procedury, zdarzenia, a także zmienne prywatne oraz zmienne wspólne obiektów:

  • Jeśli ustawienie ma postać określ'nazwa po czym następuje kod procedury (tę opcję można stosować tylko w poleceniach nowy, nowaKlasa i ustalStan), nowy lub modyfikowany obiekt będzie miał procedurę o danej nazwie i treści określonej przez dany kod.
  • Jeśli ustawienie ma postać zdarzenie'nazwa po czym następuje lista poleceń, nowy lub modyfikowany obiekt będzie miał zdarzenie o danej nazwie i reakcji.
  • Jeśli ustawienie ma postać wspólne'nazwa po czym następuje wartość jld, nowy lub modyfikowany obiekt będzie miał wspólną zmienną o losowej wartości początkowej.
  • Jeśli ustawienie to nazwa i obiekt o danej nazwie nie istnieje, nazwą nowego obiektu będzie wartość tego ustawienia. Jeśli istnieje obiekt o danej nazwie, zostanie usunięty i utworzony od nowa według nowej definicji.
  • Jeśli ustawienie to .nazwa, jego wartość zostanie w specjalny sposób użyta jak nazwa nowego obiektu. To znaczy, jeśli nie istnieje obiekt o takiej nazwie, zostanie użyta wartość. Jeśli obiekt o danej nazwie istnieje, to wartość po słowie .nazwa zostanie odpowiednio zmodyfikowana przez dodanie numerycznego przyrostka i będzie unikatowa:
    ? pokaż wszystkie
    [królik1 królik2 królik3]
    ? nowy "królik [.nazwa królik poz [150 0]]
    ? pokaż ostNazwa
    królik4
    ? nowy "królik [.nazwa królik2 poz [250 0]]
    ? pokaż ostNazwa
    królik5
  • Jeśli ustawienia są użyte wewnątrz instrukcji powtórz, dla, dopóki lub dlaKażdego, to wyrażenie w nawiasach ( … ) może korzystać z funkcji npw:
    ? powtórz 10 [nowy "Żółw [poz (zd 50 20 * npw)]]
    ? dla "i [1 400 10] [nowy "Żółw [pozy -40 pozx :i]]
    ? nowaKlasa "Suwak "mójSuwak [przezroczystość prawda maks 256 pionowo prawda]
    ? powtórz 8 [nowy "mójSuwak [poz (zd npw * 20 60)]]
  • Jeśli parametrem jest słowo (inne niż wymienione wyżej i inne od standardowych ustawień), za którym występuje jakaś wartość, to nowy lub modyfikowany obiekt będzie posiadał nową zmienną prywatną o tej nazwie i danej wartości początkowej.


Wartość logiczna

To jest:

  • prawda lub fałsz, lub
  • liczba,
  • słowo jld, reprezentujące z równymi szansami wartość prawda lub fałsz.

W przypadku liczby:

  • 0 i wszystkie liczby ujemne reprezentują fałsz.
  • 1 i wszystkie liczby większe niż 1 reprezentują wartość prawda.
  • dowolna liczba p od 0 do 1 reprezentuje wartość prawda z prawdopodobieństwem p, na przykład:
    jeżeli 0.5 [np 1][ws 1] ma taki skutek, jak rzucenie monety i zależnie od wyniku ruch np 1 albo ws 1.
    Wypróbuj:
    ? powtórz 50000 [jeżeli 0.5 [np 1][ws 1]]


Wektor

Każdy punkt na ekranie graficznym (stronie lub planszy) jest reprezentowany przez listę dwóch liczb [X Y]. Ale, punkt jednocześnie reprezentuje skierowany odcinek - wektor - łączący początek ekranu graficznego z punktem [X Y]. Ten wektor ma długość, kierunek, początek (punkt zaczepienia) i koniec.

Punkty na ekranie graficznym odpowiadają wektorom na płaszczyźnie [X Y]. To podejście można uogólnić na dowolne listy liczb:

  • Dowolna lista trzech liczb [X Y Z] reprezentuje wektor trójwymiarowej przestrzeni - łączący punkt [0 0 0] z punktem [X Y Z].
  • Dowolna lista N liczb reprezentuje wektor N-wymiarowej przestrzeni.

W Logomocji można wektory dodawać, mnożyć przez liczbę itd. Wektory (albo punkty [X Y …]) mogą być danymi różnych funkcji liczbowych.

? przyp "punkt1 [20 -40]
? pokaż -:punkt1
[-20 40]
? pokaż 2 * :punkt1 - [35 25]
[5 -105]


Wielokrotne dziedziczenie

Obiekt dziedziczy zmienne wspólne, procedury i zdarzenia nie tylko od swoich przodków, od swego miejsca, w którym funkcjonuje, ale także od wszystkich wzorców aktualnie z nim związanych. Ta dynamiczna strategia dziedziczenia nazywana jest dziedziczeniem wielokrotnym.


Wiersz poleceń

Wiersz na ekranie tekstowym, w którym na początku jest znak zachęty lub znak zachęty CL lub znak specjalny > sygnalizujący stan definiowania procedury, (zobacz oto). W wierszu poleceń wpisujemy polecenia i dane dla aktywnych procesów.

Po napisaniu polecenia, gdy chcemy by komputer je wykonał, naciskamy Enter. Po naciśnięciu Esc zamiast Enter, treść wiersza poleceń jest kasowana i koniec - nie ma żadnego innego skutku. Można także za pomocą klawiszy ze strzałkami
w górę i w dół przeglądać historię wydanych poleceń.


Wizerunek żółwia

Postać, kod rysunku lub lista kodów rysunku przypisana żółwiowi jako jego graficzna reprezentacja (wizerunek).


Właściwość

Para nazwa i wartość, gdzie nazwa jest dowolnym niepustym słowem a wartością cokolwiek. Za pomocą poleceń przywłaść i dlwł można z wybranym słowem związać pewną liczbą właściwości o różnych nazwach. Na przykład, dla słowa słoń można określić następujące właściwości:

nazwa  wartość     polecenie
waga   3200        przywłaść "słoń "waga 3200
wiek   1_miesiąc   przywłaść "słoń "wiek "1_miesiąc
nazwa  Jumbo       przywłaść "słoń "nazwa "Jumbo

Wszystkie właściwości związane ze słowem tworzą listę właściwości tego słowa. Wszystkie listy właściwości łącznie tworzą tabelę właściwości. Lista właściwości określonego słowa jest wynikiem funkcji lwł. Na przykład, by otrzymać listę właściwości słowa słoń możemy napisać:

? pokaż lwł "słoń
[waga 3200 wiek 1_miesiąc nazwa Jumbo]


Wspólny przodek aktywnych obiektów

Klasa pierwotna, która jest wspólnym przodkiem wszystkich aktywnych obiektów. Musi to być wizualny element: (żółw, pole tekstowe, suwak, przycisk etc.) lub wizualne miejsce (strona, plansza, pasek narzędzi itd.).


Współrzędne bezwzględne

Współrzędne bezwzględne (absolutne)

Współrzędne punktu (w oknie, na pasku narzędzi, stronie, planszy, itd.) względem lewego górnego rogu danego obiektu (okna, itd.). Współrzędna X zwiększa się od lewej do prawej, a współrzędna Y – od góry do dołu. Do zamiany współrzędnych bezwzględnych na kartezjańskie, i odwrotnie, używamy funkcji naKartezjańskie i naAbsolutne.

? pokaż p1'pozMyszy
[-39 135]
? pokaż p1'naAbsolutne p1'pozMyszy
[109 61]
? pokaż s1'naAbsolutne p1'pozMyszy
[359 114]


Współrzędne kartezjańskie

Współrzędne kartezjańskie punktu na stronie lub planszy względem ustalonego (na tej stronie lub planszy) początku domyślnie względem środka strony lub planszy. Początek strony lub planszy można zmienić poleceniem ustalPoczątek. W układzie kartezjańskim współrzędna X rośnie od lewej do prawej, a współrzędna Y od dołu do góry. Do zamiany współrzędnych kartezjańskich na absolutne i odwrotnie używamy funkcji naAbsolutne i naKartezjańskie.


Współrzędne prostokąta

Prostokąt [X Y szer wys] lub [X Y], gdzie [X Y] to bezwzględne współrzędne lewego górnego rogu.


Wybór

Okno lub dialog ułatwiające poprawne określenie danych, zwykle zawiera graficzne i/lub tekstowe pomoce, wskazówki, menu itd.


Wycinek

Jest to:

  • Para liczb całkowitych [X Y], gdzie X - to całkowita liczba dodatnia - określająca, który element słowa, listy lub postaci będzie pierwszym elementem wycinka, a Y określa liczbę elementów wycinka. Jeśli Y jest równe 0, to wycinek jest pustym słowem, listą lub pustą postacią. Przykład:

    ? pokaż element [3 4] [a b c d e f g h]
    [c d e f]

  • Lista takich par [[X1 Y1][X2 Y2] … ], która określa słowo, listę lub postać złożone z sekwencji wycinków [X1 Y1], [X2 Y2], ...
    ? pokaż element [[5 3][1 2][4 2]] "wakacje
    cjewaac

Wycinki mogą być danymi poleceń element, bezelnum oraz funkcji zastąp.


Wygładzenie

Gładka krzywa łącząca dane punkty. Istnieją dwie procedury pierwotne wygładzające łamaną daną w postaci listy punktów: funkcja wygładź i polecenie rysujGładko (w skrócie rysg):

? kreśl [[0 70][70 70][70 0]]
? kreśl wygładź [[0 100][100 100][100 0]]
? rysg [powtórz 3 [np 70 pw 120]]
? powtórz 4 [rysg [ukm "zielony4 wielokąt [powtórz 3 [np 70 pw 120]]] lw 90]


Wyrażenie

Dowolny napis w języku Logo, który ma określoną wartość. Przykłady:

  • 1000000 - ma wartość liczbową 1000000.
  • "Hello - wartością jest słowo Hello.
  • "|ab cd ef| - wartością jest słowo ab cd ef zawierające 2 specjalne znaki.
  • [A B C D E] - wartością jest lista [A B C D E].
  • :Var * 2 - podwojona wartość zmiennej Var.
  • 25 + 79 - wartością jest liczba 104.
  • zd "Hej "wy - wartością jest lista [Hej wy].
  • postać - wartością jest wizerunek pierwszego aktywnego żółwia.
  • ż5'postać - wartością jest postać żółwia ż5.
  • kolPis - wartością jest kolor pisaka pierwszego aktywnego żółwia.


Wzorzec

Dowolny obiekt A czasowo związany z obiektem B przez polecenie przejmijZachowanie. Takie powiązanie pomiędzy A i B ustalamy, gdy chcemy, żeby obiekt B czasowo przejął sposób działania A (to znaczy, by otrzymał dostęp do jego procedur, kopie jego zmiennych prywatnych i reagował identycznie na określone zdarzenia etc.). Obiekt B może być powiązany z wieloma wzorcami i ich przodkami dzięki wielokrotnemu dziedziczeniu.

Zobacz:

Zachowania


Wzór malowania

Liczba całkowita od 0 do 7 włącznie, oznaczająca wzór malowania. Jest to aktualna wartość ustawienia wzórZam określonego żółwia.

Domyślną wartością jest 0. Aktualna wartość wzoru dla określonego żółwia - adresata jest wynikiem funkcji wzórZam (lub wzórMal). Można ją zmienić poleceniem uwm (lub ustalWzórZam lub ustalWzórMal).


Wzór pisaka

Jest 7 dostępnych wzorów pisaka i linii tła, ponumerowanych od 0 do 6. Domyślnym wzorem jest 0. Zmieniamy je poleceniem ustalWzórPis, w skrócie uwp. Wzoru różnego od 0 można skutecznie używać tylko wtedy, gdy pisak ma grubość 1. Wzór 6 - to niewidoczna linia.


Zaczepienie

punkt [X Y] ustalony dla każdej klatki każdej fazy postaci. Jest to punkt odniesienia wszystkich poleceń. Jeśli dana klatka reprezentuje wizerunek żółwia na ekranie graficznym, zaczepienie pokrywa się z aktualną pozycją żółwia.

Pamiętaj że:

  • Każda klatka ma swoje zaczepienie.
  • Lewy górny róg klatki ma współrzędne [0 0]. Współrzędne X rosną w prawo, współrzędne Y rosną w dół.
  • Zaczepienie może znajdować się poza obrazem. Klatka o rozmiarach [50 35] może mieć zaczepienie [110 20] lub [-25 -10] lub [60 -10] itd.


Zakres

Całe miejsce żółwia lub ustalony prostokąt. Zakres jest obszarem, na którym żółw może rysować linie, wielokąty (poleceniem wielokąt), drukować teksty (poleceniem wpiszTekst), malować (poleceniem zamaluj), itd. Zachowanie żółwia na krawędziach jego zakresu określa aktualny styl zakresu. Zakres żółwia może być większy niż strona lub plansza na której funkcjonuje.


Zdanie

Dowolna lista słów [słowo1 słowo2 ... słowoN] (w szczególności może to być pusta lista). Zdania można budować ze słów i innych zdań za pomocą funkcji zdanie.

Zdanie może być daną wielu procedur. Na przykład polecenie lokalna dla danej listy słów tworzy odpowiednie zmienne lokalne.


Zdarzenie

Może być standardowe (zobacz lista standardowych zdarzeń) lub zdefiniowane przez użytkownika. Każde zdarzenie ma określoną nazwę oraz reakcję (treść zdarzenia) i należy do jakiegoś obiektu (klasy lub jednostki). Nazwa określa warunek wystąpienia zdarzenia, na przykład nazwa gdyLewyWciśnięty - oznacza, że został wciśnięty lewy przycisk myszy. Reakcja jest listą poleceń. Jej wykonanie jest podobne do wykonania procedury bez parametrów. Może ona zawierać polecenia niech i lokalna tworzące tymczasowe zmienne lokalne - robocze dla tej listy poleceń.

By zdefiniować zdarzenie dla danego obiektu, możemy użyć jego dialogu Zmień Mnie lub polecenia ustalZdarzenie. Standardowe zdarzenia są realizowane automatycznie - gdy wystąpią odpowiednie warunki. By uruchomić zdarzenie, można użyć polecenia zróbZdarzenie.


Zdarzenie użytkownika

Zdarzenie zdefiniowane (dla aktualnego adresata) za pomocą polecenia ustalZdarzenie. Wywołujemy je poleceniem zróbZdarzenie. Na przykład, dla ż1 można zdefiniować:

?ż1'ustalZdarzenie "gdyCiągniesz [naPoz pozMyszy]
; Definicja standardowego zdarzenia.
?ż1'ustalZdarzenie "mojeZdarzenie [pw 1 np 0.2]
; Definicja własnego zdarzenia.

Następnie możemy uruchomić proces wywołujący mojeZdarzenie dla ż1:

?ż1'bezkońca [jeśli ż1'pozY > 100 [zróbZdarzenie "mojeZdarzenie].


Zgodne obiekty

Obiekty, których wspólnym przodkiem, jest klasa pierwotna Żółw, Plansza, Suwak, Przycisk itd.


Zmienna

Para - nazwa i wartość. Jest to rodzaj pojemnika do przechowywania określonych wartości lub też nazwy, za pomocą której możemy się odwołać do pewnych wartości lub ustawień.


Zmienna globalna

Zmienna utworzona za pomocą poleceń przypisz lub nazwij, która nie jest zmienną lokalną żadnej aktywnej procedury lub procesu, jest zmienną globalną. Używając przypisz lub nazwij w wierszu poleceń tworzymy zmienną globalną, (o ile nie utworzyliśmy zmiennej lokalnej dla procesu realizacji wiersza poleceń za pomocą niech albo lokalna).

Wszystkie zmienne globalne są przechowywane i pokazywane w oknie pamięci, w folderze Zmienne globalne na najwyższym poziomie. Można także podejrzeć, dodać lub usunąć zmienną globalną w dialogu Zmień Baza - by go otworzyć, trzeba napisać polecenie Baza'ZmieńMnie, lub podwójnie kliknąć dowolną zmienną w folderze Zmienne globalne w oknie pamięci.

Zobacz:

Stan obiektu
Zmienne obiektów i autonomiczne
Stosowanie zmiennych
Tworzenie zmiennych i przypisywanie im wartości
Klasyfikowanie zmiennych
Wyznaczanie wartości
Zwiększanie i zmniejszanie wartości zmiennych
Usuwanie zmiennych


Zmienna lokalna

Zmienna jest lokalna w procedurze, gdy spełnia jeden z następujących warunków:

  • jest nazwą parametru procedury,
  • została utworzona w procedurze za pomocą poleceń lokalna lub niech,
  • jest lokalna w procedurze, która wywołała daną procedurę (a tym samym nie jest zakończona).

Zmienna może być lokalna dla procesu realizacji wiersza poleceń lub dla procesu zdarzenia. Można ją utworzyć w wierszu poleceń lub w definicji zdarzenia za pomocą poleceń lokalna oraz niech.

Każda zmienna lokalna istnieje do momentu zakończenia procedury lub procesu, w której/ym została utworzona, lub jej usunięcia. Do wartości zmiennej można się odwołać poprzez nazwę poprzedzoną dwukropkiem (:), np. :szybkość, lub za pomocą funkcji wartość ( w skrócie war), np. wartość "szybkość. Wartości zmiennych lokalnych można zmieniać za pomocą poleceń przypisz oraz nazwij.

Zobacz:

Stany obiektu
Zmienne obiektów i autonomiczne
Stosowanie zmiennych
Tworzenie zmiennych i przypisywanie im wartości
Klasyfikowanie zmiennych
Wyznaczanie wartości
Zwiększanie i zmniejszanie wartości zmiennych
Usuwanie zmiennych


Zmienna prywatna

Zmienna obiektu. Jeśli obiekt ma nazwę Ob, a zmienna – nazwę V, to w chwili tworzenia V Logo automatycznie tworzy parę procedur: funkcję o identycznej nazwie V (której wynikiem jest zawsze aktualna wartość V) oraz polecenia ustalV (zmieniające ją). Pamiętaj, że:

  • Gdy tworzysz obiekt na bazie Ob, automatycznie dziedziczy on swoją własną kopię zmiennej V wraz z jej aktualną wartością.
  • Jeśli dowiążesz obiekt Ob jako wzorzec do innego obiektu, ten obiekt i wszyscy jego potomkowie automatycznie otrzymają własne zmienne V z identyczną wartością początkową, jaką ma zmienna V obiektu Ob.

Zobacz:

Stan obiektu
Zmienne
Stosowanie zmiennych
Tworzenia zmiennych i przypisywanie im wartości
Klasyfikowanie zmiennych
Wyznaczanie wartości
Zwiększanie i zmniejszanie wartości zmiennych
Usuwanie zmiennych


Zmienna wspólna (obiektu A)

Zmienna obiektu wspólna (to znaczy dostępna) dla całej klasy obiektów - potomków A. Może także należeć do jednostki będącej prototypem kolejnych obiektów. Zmienne wspólne obiektu są współdzielone i dostępne dla wszystkich jego potomków.

Zobacz:

Stan obiektu
Zmienne
Stosowanie zmiennych
Tworzenie zmiennych i przypisywanie im wartości
Klasyfikowanie zmiennych
Wyznaczanie wartości
Zwiększanie i zmniejszanie wartości zmiennych
Usuwanie zmiennych


Znak specjalny

Wybrane znaki o specjalnym znaczeniu. Na ogół, nieużywane jako elementy słów. Na przykład:

? pisz "ab-9
- nie chce ab jako danej
Procedura - musi mieć daną liczbę

Błąd wystąpił dlatego, ponieważ Logo traktuje ab-9 jako dwa słowa, ab i 9 rozdzielone znakiem odejmowania (-). Oto lista znaków specjalnych:

  • spacja - oddziela słowa,
  • nawiasy kwadratowe [ i ] - zamykają listę,
  • zwykłe nawiasy ( i ) - określają kolejność działań lub w notacji nawiasowej liczbę danych procedury, np. (słowo "a "b "c).
  • operatory +, -, *, /, <, <=, <>, =, >, >=.
  • cudzysłów " - znak dosłowności.
  • średnik ; - wskazuje komentarz w definicji procedury. Komentarzem musi być cały wiersz, a średnik pierwszym znakiem tego wiersza.
  • pionowa kreska | - służy do specjalnej notacji słów, wszystkie znaki pomiędzy dwiema pionowymi kreskami są interpretowane jako jedno słowo, np. |J. R.| lub |Jak się masz?|,
  • znak akapitu ¶ reprezentujący koniec wiersza (także wtedy, gdy występuje w środku słowa, np. ab¶cd). Ten znak specjalny jest swoistym skrótem dwuznakowego kodu ascii \13\10. Jeśli napiszesz w tekście \13\10, to Logo zamieni ten kod na ¶.
    ? pt1'ustalZawartość "Ale\13\10jesteś\13\10inteligentny.
    ? pokaż pt1'zawartość
    Ale
    jesteś
    inteligentny.
  • odwrotny ukośnik \ - służy jako znak wyjątku wskazujący, że następny znak ma być traktowany literalnie, a nie jako znak specjalny, np. "ab\-9 jest jednym słowem.


Znak zachęty

Dowolny tekst (w szczególności może być pusty) widoczny na ekranie tekstowym w sytuacji, gdy Logo oczekuje na wpisanie polecenia w wierszu poleceń. Domyślnie znak zachęty składa się z pytajnika i spacji ? - jest to wartość ustawienia zachęta obiektu OknoGłówne - można ją zmienić poleceniem ustalZachętę.


Znak zachęty CL

Dowolny tekst widoczny w wierszu poleceń na ekranie tekstowym w sytuacji, gdy procedura czytajSłowo lub czytajListę czeka aż wpiszesz słowo lub listę. Domyślnie znak zachęty CL składa się z dwukropka i spacji - jest to wartość ustawienia zachętaCL w oknie głównym. Można je zmienić poleceniem ustalZachętęCL. Nie pomyl znaku zachęty CL i zwykłego znaku zachęty.


Znak

Symbol z jakich budujemy słowa. Może to być cyfra od 0 do 9, wielka litera od A do Z, mała litera od a do z oraz inne symbole: !, <, ?, & itd. Jednak niektóre z tych symboli mają specjalne znaczenie i trzeba ich używać ostrożnie.

Znak jako dana procedury jest zawsze interpretowany jako słowo jednoliterowe.


Znaki wyjątku \ i ||

Gdy chcemy napisać słowo zawierające znak specjalny, na przykład ogranicznik, jak [ lub spacja lub ", musimy:

  • użyć funkcji znak z odpowiednim kodem ascii, na przykład (słowo "a znak 91 "b), co daje wynik a[b,
  • pary||, określającej zawsze jedno słowo, na przykład |h e l l o| albo |)()()(|,
  • znaku wyjątku \, a po nim kodu ascii odpowiedniego znaku, na przykład "a\32c co daje w wyniku jedno słowo a c,
  • znaku wyjątku \, a po nim odpowiedniego znaku specjalnego, na przykład "a\[b lub "a\)\(c.


Żółw

Najważniejsza klasa obiektów Logo. Żółwie w projektach Logo są głównymi bohaterami różnorodnych akcji (animacji itp.) ale faktycznie są to - wskaźniki graficzne funkcjonujące na stronach i planszach. Wiele procedur pierwotnych dotyczy żółwi - przemieszcza je w miejscu ich działania, i w ten sposób kreśli różne rysunki. Inne procedury zmieniają ustawienia żółwi (pozycję, kolor pisaka, wizerunek itd.). Ten rodzaj działań nazywamy geometrią żółwia. Na każdej stronie i planszy może być jednocześnie wiele żółwi.

Każdy żółw ma nazwę unikatową w jego miejscu działania. Tych nazw możemy używać kierując do żółwi polecenia, na przykład ż3'np 40.

Zobacz:


Żółwie, nazwy żółwi

Może to być:

  • nazwa żółwia, np. Janek lub ż22 lub nawet 400.
  • lista (być może pusta) nazw żółwi, np.
    [ż1 ż2 ż3 ż4] lub
    [Janek Kasia 44] lub
    []

Często jest to dana procedury proszę, słuchaj, kolż itd.


Aktywne obiekty

Po uruchomieniu Imagine tworzona jest jedna strona s1 i jeden żółw ż1. Ten żółw jest aktywny. To oznacza, że jeśli napiszemy w wierszu poleceń polecenie związane z żółwiem (na przykład np, pw lub ustalKierunek itd.), nie zostanie ono przekazane do aktualnego adresata, ale wysłane do aktywnego żółwia.

Jeśli powołamy do życia więcej żółwi, możemy poleceniami słuchaj lub proszę wybrane żółwie uczynić aktywnymi. Jeśli wówczas w wierszu poleceń wydamy polecenie typowe dla żółwia, to zostanie ono wysłane do wszystkich aktywnych żółwi, które je wykonają równolegle. Jeśli polecenie nie dotyczy żółwi, zostanie ono przesłane do aktualnego adresata.

Obiekty inne niż żółwie mogą być także aktywne, na przykład pola tekstowe, suwaki, przyciski, również strony. Nie można jednak mieszać różnych rodzajów na liście aktywnych obiektów: wszystkie muszą pochodzić od tej samej klasy pierwotnej (bezpośrednio albo pośrednio), takiej jak Żółw, Plansza, Pasek narzędzi itd. Oznacza to, że jeśli zdefiniujemy podklasę Żaba klasy Żółw, to aktywnymi obiektami możemy uczynić dowolny podzbiór żółwi i żab (gdyż wszystkie są faktycznie żółwiami). Przykładowo:

? słuchaj [ż1 p1]
słuchaj nie chce [ż1 p1] jako danej
Niezgodność obiektów
? proszę [ż1 p1] [np 100]
proszę nie chce [ż1 p1] jako danej
Niezgodność obiektów
? proszę [p1 p2 p3] [cs]
; Jest akceptowane i wykonywane równolegle przez wszystkie trzy plansze.

Funkcja kto daje listę wszystkich aktywnych obiektów.

Zobacz także:

Więcej o aktywnych obiektach


Tematy pomocy

Przegląd klas pierwotnych

Klasa Baza
Obiekt OknoGłówne
Klasa Strona
Klasa Plansza
Klasa PasekNarzędzi
Klasa Żółw
Klasa PoleTekstowe
Klasa Suwak
Klasa Przycisk
Klasa SpecPrzycisk
Klasa WWW
Klasa Odtwarzacz
Klasa Sieć
Klasa Joystick

Klasa Baza

Baza: ogólny opis
Baza: ustawienia
Baza: zmienne wspólne
Baza: zmienne zakresu losowości
Baza: zmienne globalne
Baza: zdarzenia

Obiekt OknoGłówne

OknoGłówne: ogólny opis
OknoGłówne: ustawienia
OknoGłówne: zmienne wspólne
OknoGłówne: zdarzenia
OknoGłówne: procedury

Klasa Strona

Strona: ogólny opis
Strona: ustawienia
Strona: zmienne wspólne
Strona: zdarzenia
Strona: obiekty
Strona i Plansza: procedury

Klasa Plansza

Plansza: ogólny opis
Plansza: ustawienia
Plansza: zmienne wspólne
Plansza: zdarzenia
Plansza: obiekty
Plansza: procedury

Klasa PasekNarzędzi

PasekNarzędzi: ogólny opis
PasekNarzędzi: ustawienia
PasekNarzędzi: zmienne wspólne
PasekNarzędzi: zmienne prywatne
PasekNarzędzi: zdarzenia
PasekNarzędzi: obiekty
PasekNarzędzi: procedury

Klasa Żółw

Żółw: ogólny opis
Żółw: ustawienia
Żółw: zmienne wspólne
Żółw: zdarzenia
Żółw: procedury

Klasa PoleTekstowe

PoleTekstowe: ogólny opis
PoleTekstowe: ustawienia
PoleTekstowe: zmienne wspólne
PoleTekstowe: zdarzenia
PoleTekstowe: procedury

Klasa Suwak

Suwak: ogólny opis
Suwak: ustawienia
Suwak: zmienne wspólne
Suwak: zdarzenia
Suwak: procedury

Klasa Przycisk

Przycisk: ogólny opis
Przycisk
Przycisk: zmienne wspólne
Przycisk: działania i zdarzenia
Przycisk: procedury
Przełącznik: cechy szczególne

Klasa SpecPrzycisk

SpecPrzycisk: ogólny opis
SpecPrzycisk: ustawienia
SpecPrzycisk: zmienne wspólne
SpecPrzycisk: działania i zdarzenia
SpecPrzycisk: procedury

Klasa WWW

WWW: ogólny opis
WWW: ustawienia
WWW: zmienne wspólne
WWW: zdarzenia
WWW: procedury

Klasa Odtwarzacz

Odtwarzacz: ogólny opis
Odtwarzacz: ustawienia
Odtwarzacz: zmienne wspólne
Odtwarzacz: zdarzenia
Odtwarzacz: procedury

Klasa Sieć

Sieć: ogólny opis
Sieć: ustawienia
Sieć: zmienne wspólne
Sieć: zdarzenia
Sieć: procedury

Klasa Joystick


Zawartość pomocy

Słownik podstawowych terminów i pojęć

Słownik podstawowych terminów i pojęć


Zawartość pomocy

Logomocja-Imagine

Wprowadzenie

Struktura obiektowa

Struktura obiektowa
Klasy i jednostki
Hierarchia klas
Pierwotne typy danych
Klasy wizualnych obiektów
Klasy miejsc obiektów
Niewizualne obiekty
Stany obiektu
Zmienne
Operowanie zmiennymi
Relacje między obiektami
Dziedziczenie
Miejsca obiektów
Tworzenie klas
Tworzenie jednostek
Wysyłanie poleceń obiektom
Aktywne obiekty
Procedury rozsyłane do aktywnych obiektów
Jak określić adresata
Wyliczanie wartości danych wejściowych
Zachowania
Domyślne akcje

Praca z procedurami

Praca z procedurami

Zarządzanie obiektami

Zarządzanie obiektami
Tworzenie i usuwanie obiektów
Ukrywanie obiektów
Zamrażanie i odmrażanie obiektów
Procedury zarządzające obiektami
Zdarzenia
Obiekty-aliasy

Środowisko

Okno główne
Okno pamięci
Dialog Zmień mnie
Prawy przycisk myszy
Pasek narzędzi
Przybornik malarski
Okno przycisków
Okno pokazów
Edytor postaci

Kolejność obiektów na ekranie

Kolejność obiektów na ekranie

Układ współrzędnych

Układ współrzędnych
Układ współrzędnych Bazy
Układ współrzędnych stron i plansz
Układ współrzędnych okna głównego i paska narzędzi
Układ współrzędnych pozostałych obiektów

Żółwie i geometria żółwia

Żółwie i geometria żółwia
Żółwie: podstawowe ruchy
Żółwie: podstawowe obroty
Żółwie: więcej o ruchach
Żółwie: stan pisaka
Żółwie: kolor, grubość i wzór pisaka
Żółwie: malowanie
Żółwie: pisanie tekstów
Żółwie: kreślenie krzywych i łamanych
Żółwie: kierunek i pozycja
Żółwie: postacie
Żółwie: stemplowanie
Żółwie: fazy i animacja
Żółwie: skala i kolor postaci
Żółwie: ukrywanie i pokazywanie
Żółwie: zakres i styl zakresu

Wiele żółwi


Zawartość pomocy

Postacie

O postaciach
Klasyfikowanie i porównywanie postaci
Wybieranie faz
Usuwanie faz
Tworzenie i modyfikowanie postaci
Konwersja na animowane filmy i odwrotnie
Ustalanie spowolnienia
Atrybuty postaci
Otwieranie, zapisywanie i redagowanie plików LGF
Zaczepienia postaci
Inne informacje o postaciach
Fazy
Używanie plików graficznych jako postaci żółwia

Rysowanie bez żółwia

Inne niż żółw narzędzia rysowania
Ustawienie pisaka na stronie/planszy
Nieżółwiowe procedury rysowania

Wybory

Wybory
Jak otworzyć wybór
Menu wyborów
Używanie wyborów w procedurach użytkownika
Specjalne wybory
Procedury pierwotne otwierające wybory
Okno poleceń

Funkcje i predykaty liczbowe

Funkcje i predykaty liczbowe
Podstawowa arytmetyka
Geometria
Liczby losowe
Część całkowita i zaokrąglenie
Użyteczna matematyka
Notacja przedrostkowa
Porównywanie liczb
Porównywanie liczb w notacji przedrostkowej

Funkcje i predykaty wektorowe

Wektory
Arytmetyka wektorów
Inne funkcje wektorowe
Predykaty wektorowe

Funkcje słowne i listowe

Słowa
Klasyfikowanie danych
Wybieranie elementów lub fragmentów słów i list
Usuwanie elementów lub fragmentów słów i list
Konstruowanie i modyfikowanie słów i list
Zaawansowane wybieranie i modyfikowanie elementów
Porównywanie słów i list
Porównywanie słów i list (notacja przedrostkowa)
Przekazywanie informacji o słowach i listach
Kody ASCII

Funkcje logiczne i słowa

Funkcje logiczne i słowa
Wartości logiczne
Funkcje logiczne
Funkcje logiczne o danych liczbowych

Procedury sterujące i warunkowe

Procedury sterujące i warunkowe
Warunki
Konstrukcje sterujące
Stosowanie procedur i danych proceduralnych
Zatrzymywanie i uruchamianie procedur
Inne procedury sterujące

Właściwości i listy właściwości

Właściwości i listy właściwości

Dane i wyniki

Dane i wyniki
Klawiatura
Wejście i wyjście
Dialogi i komunikaty
Używanie myszy

Multimedia i komunikacja głosowa

Multimedia i komunikacja głosowa
Multimedia
Komunikacja głosowa

Różne procedury pierwotne

Różne procedury pierwotne

Projekty, pliki i foldery

Otwieranie i zapisywanie projektów
Dodatkowe ustawienia zapisu projektów
Pliki tekstowe
Zawartość folderu macierzystego
Przeglądanie plików
Praca z folderami i plikami
Zapisywanie projektów dla WWW

Procesy


Dziedziczenie

Kiedy wysyłamy obiektowi polecenie do wykonania pisząc je w wierszu poleceń, próbuje on zrozumieć je i wykonać. Niekiedy wydanie polecenia danemu obiektowi powoduje przesłanie kolejnego polecenia do innego obiektu, aby nasze żądanie zostało wykonane.

Kiedy obiekt otrzymuje polecenie do wykonania czasowo staje się adresatem tego polecenia i próbuje rozpoznać jego składowe. Jeśli polecenie to, na przykład, zróbto średnia ż3'prędkość :wiatr, to obiekt sprawdzi:

  • Czy wie jak wykonać polecenie zróbto (tzn. czy zna to polecenie).
  • Czy zna funkcję średnia (ponieważ średnia nie jest funkcją pierwotną, adresat powinien znać funkcję zdefiniowaną przez użytkownika o tej nazwie lub posiadać zmienną średnia, w tym przypadku funkcja jest tworzona automatycznie).
  • Czy zna obiekt ż3.
  • Jeśli odpowiedź na poprzednie pytania jest twierdząca, to adresat wyśle polecenie prędkość obiektowi ż3.
  • Czy zna wartość zmiennej lokalnej lub globalnej o nazwie wiatr.

Adresat może mieć zdefiniowane polecenie zróbto lub dziedziczyć od jednego ze swoich przodków. To samo dotyczy wszystkich zmiennych obiektu: mogą należeć do adresata lub mogą być dziedziczone od przodków. Nazwy innych obiektów (na przykład ż3 w powyższym przykładzie) mogą być dostępne bezpośrednio lub za pośrednictwem dziedziczenia. To samo dotyczy uruchamianych zdarzeń.

Zauważmy, że dziedziczenie (procedur, zmiennych, zdarzeń oraz nazw) od obiektów następuje razem z połączeniami do ich rodziców, miejsc i wzorców, tzn. dziedziczone jest też wszystko od ich przodków.

Zobacz także:


Znak zachęty

Dowolny tekst (w szczególności może być pusty) widoczny w wierszu poleceń na ekranie tekstowym w sytuacji, gdy Logo oczekuje na wpisanie polecenia. Domyślnie znak zachęty składa się z pytajnika i spacji ? - jest to wartość ustawienia zachęta obiektu OknoGłówne - można ją zmienić poleceniem ustalZachętę.