Idę młody, genialny, niosę BUT W BUTONIERCE,
Tym co za mną nie zdążą echopowiem: - Adieu! -
Bruno Jasieński

Grafika żółwia cz. 2 (Klasa żółwia)

Napisane: 19.02.2009 | Działy: PHP | 2 Comments
Tagi:

Dawno, dawno temu zacząłem pisać o implementacji grafiki żółwia w PHP. Ostatnio przeglądając słowa kluczowe w statystykach odwiedzin zauważyłem, że wiele osób szuka informacji o LOGO. Dlatego postanowiłem odświeżyć temat i wykopałem starą klasę żółwia.

Pierwszą część serii znajdziecie tutaj: Grafika żółwia cz. 1 (Wstęp do LOGO i GD) Opisywałem tam ogólnie o co chodzi w grafice żółwia oraz przedstawiłem krótki opis rysowania za pomocą biblioteki GD. Przejdźmy do konkretów, czyli czas na klasę żółwia.

Pierwszym pytaniem jakie musimy sobie zadać to: Jaką funkcjonalność musi dostarczyć nasza klasa? Zakładam, że nikomu nie chce się ręcznie tworzyć płócien obrazów ani ręcznie ich wyświetlać dlatego klasa żółwia będzie to robić automatycznie. Żółw musi się jakoś poruszać do przodu oraz skręcać w lewo i prawo. Musimy także mieć możliwość wyłączenia zostawiania śladów.

Nie będę tu wklejał całej klasy i opisywał jej linijka po linijce ponieważ sądzę że mija się to z celem. Omówię tutaj tylko najważniejsze fragmenty klasy. Jej kod znajdziecie tutaj.

Początkowe linie nie charakteryzują się niczym szczególnym, inicjalizuje tam zmienne niezbędne do funkcjonowania klasy. Konstruktor tworzy nam nowe płótno obrazka oraz ustawia kolor tła i kolor, w którym będziemy rysować. Destruktor usuwa nam płótno obrazu – nudy.

Dalej przechodzimy do metod obracających żółwia w lewo (angleLeft) i w prawo (angleRight) o podaną ilość stopni. Kąt który przekazujemy to wartość odchylenia (w stopniach) od startowego kierunku. Wartość ta powinna znajdować się w przedziale od 0 do 359. Przyjmujemy że jeśli żółw porusza się pod kątem 0 to przemieszcza się z dołu do góry ekranu. Poniżej zamieszczam graficzny schemat obracania żółwia:
obrót żółwia

Na sam koniec została metoda przesuwająca żółwia o podaną długość. Rozszyfrowanie tajemniczych wzorów wyliczającego pozycję końcową żółwia pokażę na obrazku:
sinusy.gif

Pewnie zadajesz sobie pytanie: po co do kąta pod którym porusza się żółw dodajemy 180 stopni? W poprzednim odcinku mówiłem o różnicach między kartezjańskim układem współrzędnych a układem współrzędnych podczas generowania obrazka:
uklad.gif
Dodanie kąta 180 stopni symuluje odbicie osi y w naszym układzie na obrazku. Dzięki temu prostemu zabiegowi żółw porusza się zgodnie z przyjętymi zasadami.

Pozostawiam sytuację kiedy żółw wyjdzie poza obszar obrazka do rozwiązania. Ta część, podobnie jak poprzednia, była bardzo “rozgrzewkowa”. W kolejnej części skupię się na parserze rozkazów (to będzie to co tygryski lubią najbardziej). Postaram się przedstawić to zagadnienie tak aby późniejsze tworzenie innych projektów wymagających parsowania pseudokodu stało się sprawą zupełnie prostą.

W razie jakiś niejasności/pytań tudzież błędów znalezionych w klasie proszę o kontakt przez komentarze.

Komentarze

2 Comments Dodaj komentarz
scanner - 20.02.2009 1:32

Zaproponowałbym zamianę nazw metod sterujących żółwiem na te, zgodne z językiem, czyli “forward”, “left”, “right”.

luinnar - 20.02.2009 11:29

Dobry pomysł. Nigdy nie miałem zdolności do nazywania klas i metod ;)

Skomentuj





*

Klinkij na obrazek aby odsluchac zdjecie.


* pole wymagane
** adres email nie zostanie opublikowany

 

Ostatnie wpisy