Grafika żółwia cz. 2 (Klasa żółwia)
Napisane: 19.02.2009 | Działy: PHP | 2 CommentsTagi: PHP
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:

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:
![]()
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:
![]()
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.
- Spis treści
- Grafika żółwia cz. 3 (Parser rozkazów)



Komentarze
2 Comments Dodaj komentarzZaproponowałbym zamianę nazw metod sterujących żółwiem na te, zgodne z językiem, czyli “forward”, “left”, “right”.
Dobry pomysł. Nigdy nie miałem zdolności do nazywania klas i metod ;)