Technologie Informacyjne Mechatronika 2012/2013 Turtle 1. Cel laboratorium Celem laboratorium jest zapoznanie się z modułem Turtle i wykonanie w nim prostej grafiki 2. Zadania do wykonania Napisać program rysujący poniższy rysunek (wskazówki w materiałach pomocniczych): A. B.
C. 3. Materiały pomocnicze 4.1 Turtle Moduł Turtle stanowi implementację języka Logo w programie Python. Język ten został stworzony w latach 60 jako prosty do język do nauki programowania. Wykorzystuje tak zwaną grafikę żółwia ( z ang. turtle graphics). *Najwygodniej napisać cokolwiek np. w notatniku. Następnie zapisać z rozszerzeniem nazwa.py i otworzyć zapisany plik za pomocą Edit with IDLE (Prawy przycisk myszy na pliku -> wybieramy z listy poleceń). Klawisz F5 służy do kompilowania. 4.2 Podstawowe operacje A. Aby zaimplementować moduł Turtle w Pythonie należy na początku pliku napisać lub from turtle import* -> nie musimy dodawać słowa turtle. przed komendami co umożliwi dopiero wykorzystanie funkcji graficznych. B. Struktura programu Poniżej przedstawiono podstawową wersję programu która włącza moduł turtle i oczekuje na zamknięcie okna przez użytkownika. Poza tym nie wykonuje żadnych funkcji def main ( ) : turtle.setup ( ) turtle.done ( ) main ( )
Program z funkcją rysującą trójkąt def triangle ( size ) : -> for i in range ( 3 ) : -> pętla wykonywana 3 razy turtle.forward ( size) turtle.left ( 120 ) def main ( ) : turtle.setup ( ) triangle ( 100 ) -> wywołanie funkcji rys. trójkąt z podaniem wartości argumentu turtle.done ( ) main ( ) Program z funkcją rysującą dowolny regularny wielokąt przy użyciu wybranego koloru def polygon ( size, sides ) : for i in range ( sides ) : turtle.forward ( size ) turtle.left ( 360.0 / sides ) def main ( ) : turtle.setup ( ) turtle.color ( blue ) polygon ( 100, 7 ) turtle.done ( ) main ( ) Program z funkcją rysującą 4 trójkąty o rozmiarach boku 10, 30, 50, 70. def triangle (size): for i in range (3): turtle.forward (size) turtle.left (120) definicja funkcji trójkąt, size jest podawanym argumentem funkcji, w tym wypadku długością boku def triangles (): for size in range (10, 71, 20): -> triangle (size) Pierwszy argument jest dolną granicą pętli, drugi jej górną granicą natomiast trzeci oznacza przyrost, domyślnie 1 def main ( ) : turtle.setup ( ) turtle.color("blue") triangles () turtle.done ( )
main ( ) C. Podstawowe komendy: - forward fd porusza żółwia na określoną odległość w stronę, w którą jest skierowany (0.00,0.00) >>> forward(25) (25.00,0.00) >>> forward(-75) (-50.00,0.00) * - position pozycja żółwia ( opisana przed i po komendzie forward) - back bk porusza żółwia w kierunku odwrotnym do tego w który jest skierowany, nie zmieniając przy tym jego orientacji (0.00,0.00) >>> backward(30) (-30.00,0.00) - right rt obraca żółwia w prawo o określony kąt podany w radianach lub stopniach (ustawiane poprzez komendy degrees()lub radians()) 22.0 >>> right(45) 67.0 *heading orientacja żółwia, początkowo żółw skierowany jest w prawą stronę. - left lt - obraca żółwia w lewo o określony kąt podany w radianach lub stopniach (ustawiane poprzez komendy degrees()lub radians() 22.0 >>> left(45) 337.0 - penup pu up podnosi pisak do góry, w trakcie jego ruchu nic nie jest rysowane - pendown pd opuszcza pisak na dół, w trakcie jego ruchu są rysowane linie - begin_fill wpisywane zaraz przed komendą rysowania kształtu który ma być wypełniony - end_fill zakończenie wypełniania kształtu >>> color("black", "red") >>> >>> circle(80) >>> - showturtle st pokazuje żółwia, poruszającego się na początku rysowanej linii >>> showturtle() - hideturtle ht ukrywa żółwia, co w przypadku skomplikowanych rysnków przyspiesza rysowanie >>> hideturtle() - pencolor zwraca aktualny kolor pisaka, albo ustala jego kolor pencolor() zwraca aktualny kolor pisaka pencolor(colorstring) - ustala kolor pisaka podany w formie ciągu znaków np. "red"
>>> colormode() 1.0 >>> pencolor() 'red' >>> pencolor("brown") >>> pencolor() 'brown' - fillcolor - zwraca aktualny kolor pisaka, albo ustala jego kolor fillcolor()-zwraca aktualny kolor pisaka fillcolor(colorstring)- ustala kolor pisaka podany w formie ciągu znaków np. "red" >>> fillcolor("violet") >>> fillcolor() 'violet' - color zwraca albo ustala wartość pencolor i fillcolor color()- zwraca aktualny pencolor i fillcolor tak jak w przypadku pencolor() i fillcolor(). color(colorstring) zmienia kolor pisaka na zadany zarówno dla fillcolor jak i pencolor color(colorstring1, colorstring2)- zmienia kolor pisaka na zadany dla fillcolor i pencolor >>> color("red", "green") >>> color() ('red', 'green') - pensize zwraca albo ustala szerokość linii rysowanej przez pisak >>> pensize() 1 >>> pensize(10) - circle rysuje koło o zadanym promieniu. Można określić czy ma być narysowane całe koło czy tylko jego część poprzez drugi parametr extent. Koło rysowane jest zgodnie z ruchem zegara jeśli promień jest dodatni i odwrotnie do ruchu wskazówek zegara jeśli jest ujemny. (0.00,0.00) 0.0 >>> circle(50) (-0.00,0.00) 0.0 >>> circle(120, 180) -> rysuje część koła (0.00,240.00) 180.0 D. Przykładowy program =) """ turtle-example-suite: tdemo_teddy.py A drawing sent in by a reader of "Python fuer Kids", just after she had read chapter 2, which introduces turtle graphics. """ from turtle import *
def main(): mode("logo") speed(10) shape("arrow") pensize(3) circle(66) circle(66) fd(33) fd(34) fillcolor("blue") circle(33) fd(15) fd(4) fillcolor("black") circle(11) fd(33) fd(34) fillcolor("blue") circle(33) bk(15) bk(4) fillcolor("black") circle(11) fd(70) fd(30) circle(30, 180) circle(-30, -180)
circle(-30, 180) circle(30, 90) fillcolor("red") circle(30, 180) fd(80) fd(100) fillcolor("brown") lt(50) circle(-70, 200) fd(80) fd(100) rt(50) circle(70, 200) fd(190) fd(40) circle(190, 180) fd(80) circle(50, 60) circle(-50, 60) circle(-60, 60) circle(60, 60) circle(-30, 60) bk(110) fd(20) fd(19) fd(60)
fd(19) fd(10) fd(10) fd(60) ht() return "DONE!" if name == " main ": msg = main() print(msg) mainloop()