Napisz procedurę bez parametrów o nazwie PARKIET, która narysuje na ekranie możliwie duży rysunek parkietu przedstawiony niżej:
Zadanie można podzielić na dwa mniejsze podzadania. Pierwsze z nich to napisanie procedury, która będzie rysowała jeden element. Za element można tu przyjąć jeden z 16 identycznych fragmentów. Ze względu na fakt, że szare, obrócone kwadraty łączą elementy dopuszcza się rysowanie go dwa razy w celu uproszczenia kodu. Procedura PARKIET_el rozpoczyna rysowanie elementu od jego środka i do tego punktu żółw wraca co ułatwia napisanie procedury nadrzędnej. Kod wykonuje kolejno:
(1.) Parametr :a określa rozmiar krótszego boku najmniejszego prostokątu w elemencie. (2.) Obrót w kierunku rysowania (3.) pierwszego z czterech identycznych fragmentów. (4. - 6.) Przesunięcie żółwia do najbliższego rogu kwadratu podzielonego na prostokąty.
(7.) Ustawienie żółwia do rysowania, a następnie (8.) narysowanie czterech prostokątów. (9. - 15.) Prostokąty są rysowane jako prostokąty o stałej wysokości i zwiększające się szerokości.
(17.) Po narysowaniu prostokątów żółw zostaje obrócony, aby narysował wzór koło prostokątów. (18. - 20.) Korekcja ustawienia i (21. - 35.) narysowanie szarej figury leżącej nabliżej środka elementu.
(36. - 38.) Następnie rysowany jest kwadrat na końcu wzoru. Biały element jest pomijany jako, że wszystkie jego boki są narysowane w trakcie rysowania innych figur i nie wymaga on kolorowania. (39. - 45.) narsysowanie kwadratu na końcu wzoru. (46. - 48.) Powrót do środka figury i (49.) zakończenie iteracji. (49.) Ustawienie żółwia do pozycji z której rozpoczął procedure.
Kod głównej procedury PARKIET:
(2.) Ustalenie maksymalnej wysokości rysunku i (3.) wyliczenie szerokości pojedynczego, najmniejszego prostokąta na rysunku. (4. - 9.) przesunięcie żółwia w lewy dolny róg rysunku. (10. - 13.) Narysowanie obwódki dookoła rysunku.
(14. - 18.) Przesunięcie żółwia na środek elementu w lewym dolnym rogu, a następnie (19. - 35.) narysowanie 16 identycznych elementów w odpowiedniej odległości od siebie.
Napisz procedurę KLEPKA :n, która utworzy na środku ekranu możliwie duży rysunek mozaiki klepek. Parametr :n mówi o ilości elementów w środkowym rzędzie mozaiki. Może on przyjmować wartości od 1 do 10. Oto przykładowe wyniki wywołania procedury KLEPKA dla różnych wartości parametru :n równych 1, 4 oraz 5.
Przykładowe rozwiązanie przewiduje podzielenie zadania na trzy procedury: KLEPKA_el narysuje pojedynczy element o zadanej wielkości, KLEPKA_linia narysuje wyśrodkowaną pośrodku ekranu linię złożoną z pojedynczych elementów, a procedura KLEPKA narysuje odpowiednią ilość linii i przekaże jaką wielkość powinien mieć pojedynczy element.
Pojedynczy element składa się z czterech, szarych oraz identycznych podelementów:
Podczas rysowania linii elementów należy pamiętać o prawidłowym wyśrodkowaniu:
(1.) Procedura przyjmuje: :a - rozmiar najkrótszego odcinka elementu oraz :n - ile ma być elementów w jednej linii. (2. - 5.) Przesunięcie żółwia na środek pierwszego elementu w linii. (6. - 11.) Narysowanie :n elementów. (12. - 15.) Powrót do miejsca rozpoczęcia procedury z uwzględnieniem, że żółw znajduje się jeden element dalej, ponieważ przesunięcie nastąpiło jeszcze po narysowaniu ostatniego elementu.
Kod źródłowy głównej funkcji KLEPKA:
(2.) Ustalenie maksymalnej wysokości rysunku. (3.) Wyliczenie ile linii będzie trzeba narysować po jednej i drugiej stronie lini środkowej. (4.) Wyliczenie rozmiaru na podstawie złożoności najszerszej lini. (5.) Narysowania lini środkowej z elementami, a następnie (6. - 15.) Narysowanie pozostałych lini po obu stronach.
Napisz procedurę z parametrem STOSIK :ileKart, która utworzy możliwie duży rysunek pliku kartek. Parametr :ileKart mówi ile kartek ma zostać narysowanych, może on się zmieniać w granicach od 1 do 30. Odległość między skrajnymi kartkami jest stała i równa długości boku kartki. Druga krawędź kartki jest rysowana kreską tej samej długości co krawędź przednia oraz jako nachylona do linii poziomej pod kątem 450. Rysunki przedstawiają wyniki wywołania: STOSIK 1, STOSIK 2 i STOSIK 20.
Istnieją dwa możliwe rozwiązania tego zadania. Pierwsze z nich, które jest podane jako przykładow korzysta z funkcji wielokąt, która rysując kolejną kartkę zamalowywuje kartkę niżej. Drugie rozwiązanie trudniejsze w wykonaniu polega na narysowaniu kartki na wierzchu, a następnie narysowaniu tylko krawędzi pozostałych kartek.
Jedna kartka to romb o kącie przy podstwie 45 stopni:
Ustalenie maksymalnej (2.) wysokości i (3.) szerokości. (4.) Następnie należy wyliczyć bok kartki. (5.) Domyślnie odległość pomiędzy kolejnymi kartkami to 0. (6.) Właściwą odległość pomiędzy nimi należy obliczyć tylko wtedy, gdy leży więcej niż jedna kartka. Inaczej dojdzie do próby dzielenia przez 0. (7.) Podczas wyliczania odległości pomiędzy kartkami należy pamiętać o odjęciu od :h wysokości rombu o boku :a. (9. - 14.) Ustawienie żółwia w lewym dolnym rogu rysunku i (15. - 22.) narysowanie wszystkich kart.
Napisz procedurę WINDA :ilePięter :naKtórymJest :naKtórymMy, która da w wyniku jeden z czterech rysunków przedstawiających drzwi od windy:
Parametry oznaczają:
Zakładamy, że jeśli winda jest na ostatnim piętrze, to przeciwwaga znajduje się na parterze i jest ona połączona z windą liną o stałej długości. Oto schematyczne rysunki, ich wygląd może zostać zmieniony, ważne aby nie pozostawiały wątpliwości, z którym z przypadków mamy do czynienia.
W trakcie rozwiązywania należy opierać się na fakcie, że odważnik znajduje się na piętrze wyliczonym ze wzoru :ilePięter - :naKtórymJest.
(2.) Ustalenie wysokości rysunku. Wszystko inne będzie ustalane względem tej wielkości. (3. - 9.) Przesunięcie żółwia w lewy dolny róg. (10. - 14.) Narysowanie obramówki drzwi.
(15.) Powrót na środek rysunku i (16. - 18.) przesunięcie, aby (19.) narysować klamke. (20.) Ponowny powrót, aby (22. - 26.) przesunąć ponownie żółwia i (27. - 36.) dorysować okienko w drzwiach, które domyślnie będzie szare. (37.) Powrót na środek.
(38.) Jeśli jesteśmy na tym samym piętrze to widzimy winde. Wtedy (39. - 51.) Rysujemy odpowiednie wypełnienie okna. Uprzednio należy pamiętać o zamalowaniu okna na biało (domyślnie jest szare). (52.) Kończymy wykonywanie, aby nie rozpatrywać innych przypadków.
(53.) Jeśli widzimy odważnik to: (54. - 69.) należy narysować odpowiedni rysunek w oknie i (70.) zatrzymać wykonywania procedury.
(71.) Jeśli nie widzimy, ani windy, ani odważnika, a znajdujemy się powyżej chociaż jednego z nich to zobaczymy linkę windy. (72. - 74.) Wtedy należy ją narysować i (75.) zatrzymać sprawdzanie dalszych warunków.
W przypadku, gdy w procedure warunek nie zostanie spełniony oznacza to, że przez okno nic nie widać. Nie wymaga to dodatkowego przypadku, ponieważ okno jest już domyślnie zamalowane na szaro.