Programowanie w języku LOGO

Klasy, obiekty, jednostki i zdarzenia

Latające ptaki

a właściwie powinno być „latające żółwie”


Jeśli powyżej nie jest widoczna zawartość projektu, to należy zainstalować wtyczkę. Niestety nie działa ona prawidłowo z wersjami 64-bitowymi przeglądarek internetowych.
Jednak możesz zainstalować na swoim komputerze 32-bitową wersję przeglądarki Opera i za jej pomocą oglądać udostępniane projekty.

Wskazówka: Sprawdź co się stanie, gdy klikniesz lewym lub prawym klawiszem myszki…

Lekcja 1

Tło strony

W programie Logomocja utwórz nowy projekt, a nastepnie zapisz go pod mało oryginalną nazwąPtaki.
Pierwszą czynnością w nowo utworzonym projekcie będzie ustawienie tła strony. W tym celu pobierz tło projektu.
Uwaga: Jeżeli jesteś w szkole w pracowni możesz je znaleźć również w folderze publicznym (dysk J:).
Kliknij na pasku menu Strona/Ładuj tło i podaj ścieżkę do pobranego pliku tła.

Klasy, obiekty, jednostki

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.
W szkole podstawowej odkryłeś, że klasa organizmów żywych dzieli się na podklasy: zwierząt i roślin oraz, ze klasę zwierząt można dalej dzielić na podklasy: zwierząt domowych i dzikich albo według innej zasady - na przyjazne człowiekowi i bezpieczne oraz niebezpieczne. Nauczyłeś się dzielić zwierzęta na: ssaki, ptaki, gady, płazy i owady.
Klasy i klasyfikacje pomagają nam porządkować obraz rzeczywistości, organizować świat wokół nas i skutecznie w nim działać. Tak jest również i w naszym mikroświecie - w Logomocji. Są tam już pewne zastane (mówimy pierwotne) klasy obiektów. Ale możemy tworzyć również własne klasy.
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.
Słowo obiekt może oznaczać zarówno konkretną jednostkę jak i klasę obiektów.

Nową klasę tworzymy poleceniem nowaKlasa z trzema danymi:
nowaKlasa "nazwa_rodzica "nazwa_nowej_klasy lista_ustawień

Chcemy, aby wszystkie żółwie były wiernymi kopiami (klonami) żółwia o nazwiePtaszek- prototypu latającego ptaka. Dzięki utworzeniu nowej klasy obiektów wszystkie nowe będą miały jednakową postać, identyczny zakres i styl zakresu oraz sposób reagowania na kliknięcie. Zdefiniujmy więc nową klasę żółwi o określonych właściwościach poleceniem:

nowaKlasa "Żółw "Ptaszek [postać ptak.LGF kierunek 90 pisak pod]

Ustawienie postać w definicji klasy Ptaszek 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 ptak.LGF. Technicznie, klasa Ptaszek otrzyma trzy zmienne prywatne: postać z wartością Ptak, pisak z wartością pod i kierunek z wartością 90 (na wschód). Później, gdy tworzona jest jednostka klasy Ptaszek, bieżące wartości standardowych ustawień postać, kierunek i pisak zostaną określone na podstawie wartości tych zmiennych.

Zdarzenia na stronie

Chcemy również, aby po kliknięciu na stronę lewym klawiszem myszy utworzony został nowy żółw klasy Ptaszek. Kliknij w tym celu na pasku menu Strona/Edycja i ustaw własciwość zdarzenia gdyKlik:

nowy "Ptaszek [poz ( pozmyszy )]

Procedura startowa

No dobrze, zdefiniowaliśmy już tło i sposób tworzenia nowych żółwi teraz czas żeby nasze żółwie - ptaki zaczęły latać.
Zredaguj w OknieGłównym nową procedurę o nazwieStarter.
Starterw LOGO to szczególna nazwa procedury - będzie się ładowała automatycznie w momencie uruchomienia projektu.
Polecenie pierwotneegpowoduje, żeOkno główne(pod paskami narzędzi) będzie zawierać jedynie ekran graficzny. Ekran tekstowy nie będzie wyświetlany.
co N [lista-Poleceń]uruchamia nowy, niezależny, równoległy proces typu „bezKońca” wykonujący powtarzalnie co N milisekund daną listę poleceń.

Treść procedury:

oto starter
 eg
 co 20 [słuchaj wszystkie np 1]
już

Obiekty i zdarzenia związane z klawiszami myszy

Na koniec dodajmy jeszcze tylko interakcję na lewy i prawy klawisz myszki.
Naciśnięcie lewego klawisza zmienia kierunek lotu ptaka o 1800, a prawego usuwa naszego „ptaszka” z ekranu.
Kliknij w prawym oknie pamięci klasę żółwi Ptaszek dwa razy lewym klawiszem myszy i dodaj dwa zdarzenia takie jak poniżej.


Lekcja 2

Przyciski

Dodajmy do strony dwa przyciski:Start/Stop– nazwa nie wymaga komentarza iCzyść– usuwającego wszystkie obiekty na planszy.

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.

Przyciski stworzysz: naciskając ikonę Nowy przycisk na pasku narzędzi i rysując je na stronie. Dodaj zdarzenia do tych obiektów jak naponiższych rysunkach.
Ustaw szerokość i wysokość przycisków oraz ich pozycję na stronie (pozycja względem środka strony lub pazycja absolutna względem lewego, górnego rogu strony).

Warto dodać jeszcze suwak poziomy, który będzie sterował szybkością lotu ptaków i pole tekstowe, które będzie pokazywać miarę tej szybkości.

Pole tekstowe

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.

Nowy gadżet: Poziomy suwak

Suwaki są widocznymi narzędziami używanymi do 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 oraz inne ustawienia.
Suwaki rozpoznają różne zdarzenia, szczególnie często gdyZmieniasz i gdyPoZmianie.

Zdarzeniu gdyZmieniasz nadaj wartość:

pt1'ustalzawartość suw1

Określ również minimalną: 1 i maksymalną: 30 wartość na suwaku.

Zmodyfikuj procedurę Starter tak, by była to procedura parametryczna

oto starter :speed
 eg
 co :speed [słuchaj wszystkie np 1]
już

Na koniec popraw jeszcze właściwość gdyWciśnięty przycisku prz1 uruchamiajęcego procedurę Starter tak, aby uruchamiała się z z paremetrem :speed, którego wartość będzie wartością, jaka została ustawiona w obiekcie Suw1.


Lekcja 3

Uatrakcyjnijmy nasz projekt poprzez losowo pojawiające się żólwie – tym razem nie ptaki a motyle. Dodatkowo ich pozycja, kierunek będzie zupełnie przypadkowy. Nowy motyl będzie się pojawiał dokładnie co 2 sekundy.

W tym celu zdefiniujmy nową klasę żółwi Motyl, której przedstawiciele będą się pojawiać na stronie poleceniem:

nowaKlasa "Żółw "Motyl [postać motyl kierunek jld poz [jld jld] pisak pod]

Zwróć uwagę na funkcję: jld
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. Zakres losowości, którą wyraża jld zawsze zależy od kontekstu – polecenia, w którym zostało użyte.

Do klasyMotyldodaj zdarzeniegdyPrawyWciśniętyi ustaw jego wartość:

usuńObiekt mojaNazwa

Wstaw, po poleceniu eg, jako drugi wiersz procedury Starter następującą linię:

co 2000 [nowy "Motyl []]

Dla przycisku prz2 zmodyfikuj właściwość zdarzenia gdyWciśnięty na następującą wartość:

usuńobiekt wszystkieZ "ptaszek usuńobiekt wszystkieZ "Motyl


Zachęcam do eksperymentów związanych z tworzeniem własnych żółwi w programieEdytor postaci. Żółwie mozna zapisywać w folderze Moje dokumenty.
Należy wtedy zmienić ścieżkę np. do postaci zmodyfikowanego pliku ptak.LGFw klasie żółwi Ptaszek jak widać poniżej.
W szkolej pracowni będzie to ścieżka |H:\Moje dokumenty|. Zwróc uwagę na pionową kreskę, która występuje w ścieżce dostępu do pliku. Kod ASCII ALT+0124.

Valid XHTML 1.0 StrictPoprawny CSS!
Copyright (c) 2009-2019. Szkoła Podstawowa nr 3 im. Mikołaja Kopernika. All rights reserved.