Napisz procedurę KWADRATY, która na środku ekranu tworzy poniższą figurę. Długość boku zewnętrznego kwadratu wynosi 400.
Całe zadanie zbiega się do rysowania kwadratów w odpowiednim miejscu. Z tego powodu warto napisać funkcję kwadrat, która narysuje kwadrat o środku tam gdzie znajduje się żółw. Procedura przyjmuje jeden argument :a, który określa bok rysowanego kwadratu.
Przyglądając się dalej nietrudno zauważyć, że fragmenty rysunku to kwadraty w kwadracie. Każdy kolejny obrócony o 45 stopni. Procedura zapetlonykwadrat pozwala na narysowanie :ile kwadratów z czego największy będzie miał bok :a z zauważoną prawidłowością.
Kolejną procedurą pomocniczą jest kwadratyodnogi. Jest to procedura, która ma za zadanie narysować ten sam wzór kwadratu w czterech kierunkach począwszy ze środka. Pozwala to narysować większą część rysunku. Procedura przyjmuje 3 argumenty: :a - odległość w lini prostej do najbliższej ściany kwadratu, :b - rozmiar rysowanego kwadratu oraz :ile - ile kwadratów w sobie ma zostać narysowanych.
Ostatnia procedura pomocnicza naokolokwadraty rysuje kwadraty, których się nie da narysować przy pomocy procedury kwadratyodnogi. Są to kwadraty na największym kwadracie i później w kwadracie w niego wpisanym występujące na wszystkich czterech bokach po dwa w równej odległości od siebie oraz ścian bocznych. Procedura przyjmuje 3 argumenty: :a - rozmiar ściany kwadratu na którym są rysowane małe kwadraty, :b - rozmiar rysowanego, małego kwadratu oraz :ile - ile kwadratów w sobie ma zostać narysowanych.
Teraz na koniec pozostaje powyliczać odpowiednie wielkości i wywołać odpowiednie procedury pomocnicze tak jak w poniższym rozwiązaniu:
Napisz procedurę RYBA:ile, która tworzy rysunki ryb składających się z głowy, ogona oraz :ile par ości. Szerokość rysunku wynosi 550. Parametr :ile może przyjmować wartości od 1 do 15. Środek ekranu leży w połowie wysokości i w połowie szerokości rysunku.
Na potrzeby rozwiązania opracowany został system zapisu kroków dla żółwia. Jak można zauważyć żółw rysując cały czas porusza się po linii prostej i czasem wykonuje skęt w prawo lub lewo. W zaproponowanym rozwiązaniu generowana jest lista kroków złożona z liter L, P oraz C. Dla każdego polecenia wykonywany jest ruch do przodu, ale dla litery L żółw na końcu narysowanej lini skręca w lewo, a dla P w prawo. Dla ostatniej litery (jak również każdej innej) program wykona tylko krok do przodu.
Przykładowo w celu narysowania oka ryby należy zapisać PPPP, albo LLLL. Gdybyśmy jednak chcieli narysować ość ryby dla wartości 1 to odpowiada temu kod LPLPLPCPLPLLC. Tego typu pozwoli na uproszczenie pisanego kodu i jego łatwiejszą modyfikację.
W pierwszej części należy wygenerować kod dla górnej części rysunku. Później program automatycznie dołączy kod dla dolnej części.
(2.) Ustal szerokość rysunku o (3.) narysuj górną część głowy. Potem (4. - 14.) dla każdej kolenej ości wygeneruj kod rysunku. (15.) Po zakończeniu generowania ości dorysuj ogon (górną część). Ważny moment jest w linijce (16.) kiedy dodanie wspak zapisanych poleceń generuje kod dla dolnej części kodu. Pomiędzy polecenia zostały wpisane polecenie "C" jako korekta łączenia obu części.
W drugiej części ryba zostaje narysowana. Początkowo jest to (17.) wyliczenie długości rysowanych odcinków, a potem (18. - 21.) przejście do głowy ryby. Następnie (22. - 31.) intepretowane są kolejne polecenia wygenerowanego przez pierwszą część procedury. Na koniec (32. - 39.) należy pamiętać o dorysowaniu brakującego oka rybie.
Napisz procedurę PIRAMIDA:n :bok, która tworzy piramidy takie, jak na rysunkach poniżej. Wartość parametru :n określa liczbę cegieł na najniższym poziomie oraz liczbę poziomów i może przyjmować wartości od 1 do 20. Parametr :bok określa długość boku trójkąta równobocznego i może przyjmować wartości od 100 do 500.
W trakcie rysowania pirmiady należy pamiętać, że cegiełka ma wysokość równą wysokości trójkąta równobocznego podzielonego przez :n + 1, a podstawa cegiełki ma długość równą bokowi trójkąta równobocznego podzielonego przez :n + 1. Ponadto wszystkie połówki białych trójkątów mają podstawę równą połowie podstawy cegiełek.
(2.) Wylicz wysokość trójkąta. Następnie (3. - 6.) przesuń żółwia i (7. - 10.) narysuj obramowanie piramidy. Potem wylicz (11.) podstawę oraz (12.) wysokość cegiełek. (13. - 15.) Przejdź do pierwsze cegiełki od lewej na dole piramidy. Narysuj (16.) :n poziomów (17.) za każdym razem zmniejszając ilość cegiełek o jeden. (18. - 30.) narysuj odpowiednią ilość cegiełek w wierszu i (31. - 33.) przejdź do wiersza wyżej.
Napisz procedurę DYWAN:n, która na środku ekranu tworzy kwadratowe dywany o boku długości 400, takie, jak na rysunkach poniżej. Parametr :n określa stopień złożoności wzoru dywanu i może przyjmować wartości od 1 do 30.
Podczas rozwiązywanie zadania najpierw narysować tło, a następnie kombinować jak narysować żółte elementy. Dodatkowo warto zauważyć, że najkrószy bok elementu ma wymiar równy szerokości całego rysunku podzielonego przez 3·:n + 1, gdzie :n to stopień złożoności wzoru dywanu. Jest to spowodowane faktem, że każdy kolejny element jest na zakładkę o 1 z poprzednim.
(2.) Ustal szerokość rysunku. Następnie (3. - 6.) przejdź do (7. - 13.) narysowania tła. Potem (14.) oblicz ile jest elementów i na tej podstawie (15.) jakiej długości jest najkrótszy odcinek. (16.) Przejdź do rysowania elementów. Narysuj (17.) :n poziomów po (18.) :n elementów.