Rysowanie schodów

Czasami w zadaniu tworzone są rysunki zależne w sposób bardziej złożony od podanego parametru. Klasyczne zadanie tego typu polega na rysowaniu różnego typu trójkątnych wzorów. Przyjrzyjmy się dwóm wersjom zadania tworzącego schody:

Wersja 1

Napisz jednoparametrową funkcję schody(), po wywołaniu której zostaną narysowane schody złożone z prostokątów, takie jak poniżej. Wysokość prostokąta wynosi 30, a jego szerokość jest wielokrotnością 30. Parametr określa liczbę poziomów w schodach i może przyjmować wartości od 1 do 10.

d

Rozwiązując zadanie definiujemy pomocniczą funkcję pr(n, bok) rysującą prostokąt o bokach bok n*bok, a następnie wykorzystujemy ją w głównej funkcji rysowania schodów. Najtrudniejsze jest takie rysowanie kolejnych poziomów schodów, by każdy kolejny był dłuższy - jeśli zaczynamy rysowanie od góry, lub krótszy - gdy zaczynamy od podstawy schodów. Do rysowania schodów wykorzystamy pętlę for. Wystarczy w poleceniu rysującym poszczególne prostokąty uzależnić długość poziomego boku prostokąta od zmiennej sterującej wykoniem pętli. Na przykład poniższa linia spowoduje narysowanie 3 prostokątów o poziomych bokach odpowiednio 3*bok, 2*bok i bok:

for i in range(3):
  pr(4-i, bok)

By powstały schody wystarczy jeszcze przenieść żółwia po narysowaniu każdego prostokąta do punktu, w którym rozpocznie rysowanie kolejnego fragmentu schodów.

Testując działanie funkcji wywołuj ją dla parametru np. 4 w następujący sposób, by przyspieszyć tworzenie rysunku:

tracer(0); pasek(4); update()

Spróbuj rozwiązać to zadanie samodzielnie. Możesz także zobaczyć przykładowe rozwiązanie.

Wersja 2

Napisz jednoparametrową funkcję schody(), po wywołaniu której zostaną narysowane schody złożone z kwadratowych płytek, takie jak poniżej. 

Długość boku kwadratów na rysunku wynosi 30. Parametr określa liczbę poziomów w schodach i może przyjmować wartości od 1 do 10.

s

Rozwiązując zadanie definiujemy pomocniczą funkcję rysującą kwadrat o boku bok oraz funkcję rysującą pasek złożony z n kwadratów, a następnie wykorzystujemy ją w głównej funkcji rysowania schodów, podobnie jak przy rysowaniu chodów złożonych z prostokątów. Tym razem zamiast rysować prostokąty różnej wielkości, będziemy tworzyć schodki złożone z różnej liczby kwadratowych płytek.

Spróbuj rozwiązać to zadanie samodzielnie. Możesz także zobaczyć przykładowe rozwiązanie.

Zastanów się, co zmienić w funkcjach tworzących rozwiązanie, by powstały odwrócone schody, takie jak na rysunku poniżej:

s