Strona główna » Poradniki » Logomocja » Python i Żółw » Nagrywanie Kształtów
 

Nagrywanie Kształtów

Wstęp

Pythonowski żółw może nagrywać trasę jaką po kolei przebył. Tego typu lista punktów może zostać wykorzystana, aby narysować fragment rysunku jeszcze raz, albo do zmiany kształtu żółwia. W tym artykule zostanie wyjaśnione jak narysować wzór, który następnie można wykorzystać jako kształt dla żółwia.

Implementacja

Założenia

Przypuśćmy, że chcemy, aby żółw miał następującą postać:

Domyślnie żółw nie może przyjmować takiego kształtu, ale można taki zarejestrować. Wtedy będzie można ustawić strzałkę jako postać żółwia poleceniem shape(), a więc czas napisać pierwszy taki skrypt!

Strzałka

Kształt zostanie później poprawnie przeniesiony na postać żółwia pod warunkiem, że rysunek zostanie skierowany na północ tj. w górę ekranu. Narysowanie w dowolną inną stronę spowoduje, że postać będzie obracała się nienaturalnie. Cały kod rysowania strzałki musi zostać umieszczony pomiędzy poleceniami begin_poly(), a end_poly(). Tylko wtedy odwiedzone punkty zostaną "nagrane". Poniżej został zamieszczony kod rysowania strzałki:

  1. żółw.home()
  2. żółw.begin_poly()
  3. żółw.left(90)
  4. żółw.fd(50)
  5. żółw.left(45)
  6. żółw.bk(20)
  7. żółw.fd(20)
  8. żółw.right(90)
  9. żółw.bk(20)
  10. żółw.fd(20)
  11. żółw.end_poly()

Na początku ustawiamy żółwia tak, aby spoglądał do góry. Potem w celu narysowanie strzałki przesuwamy się do przodu, a potem dorysowywujemy dwie krótsze linie pod kątem 45 stopni. Należy pamiętać, aby wrócić na koniec strzałki, ponieważ inaczej strzałka może mieć zamalowany grot. Otóż narysowany kształt jest później traktowany jak zamalowana figura.

Zapis i zmiana postaci

Kolejny etap polega teraz na odczytaniu zapisu trasy żółwia poprzez polecenie get_poly(). Zwróconą wartość można zapisać tymczasowo do zmiennej, albo od razu zarejestrować dany kształt pod jakąś nazwą. Do rejestracji należy skorzystać z funkcji register_shape(), która jako pierwszego argumentu wymaga podania nazwy nowego kształtu, a jako drugi argument zapis wieloboku (tutaj trasy żółwia).

  1. slad = żółw.get_poly()
  2. turtle.register_shape("arrow", slad)

W tym momencie skrpyt zarejestrował nową postać żółwia. Można ją ustawić poprzez wywołanie na żółwiu polecenia shape() i podając jako argument nazwę nowo zarejestrowanego kształtu. W celu sprawdzenia czy nowa postać się prawidłowo obraca warto wywołać dalszą część skryptu:

  1. żółw.home()
  2. żółw.clear()
  3. żółw.shape("arrow")
  4. żółw.fd(100)
  5. żółw.left(90)
  6. żółw.fd(100)
  7. żółw.left(90)
  8. żółw.fd(100)
  9. żółw.left(90)
  10. żółw.fd(100)
  11. żółw.left(90)

Na zakończenie powinien zostać narysowany kwadrat. Podczas rysowania strzałka powinna wskazywać kierunek w jakim porusza się aktualnie żółw.

Podsumowanie

Tworzenie własnych kształtów pozwala na wygodne rysowanie wielu skomplikowanych figur, ponieważ dzięki temu możliwe jest powielanie sześciokąta na ekranie poprzez tworzenie stempli.

Zadania

Zadanie 1

Zarejestruj nową postać żółwia, a następnie narysuj kwadrat. Żółw na koniec powinien mieć następujący kształt:

Rozmiar boku kształtu jest dowolny, ale wszystkie boki muszą być równe!