제14장 turtle로 그림 그리기ivis.kr/images/a/a7/2017_cp_12장_turtle.pdf · 2018. 11....
TRANSCRIPT
14장.�turtle로�그림�그리기��turtle�객체�
14.1.�turtle�class
turtle�이란?
2
14.1.�turtle�class
▪ turtle이란�앞서�배웠던�python이�제공하는�클래스�중�하나이다.��▪거북이의�모양을�가진�객체를�생성하여�선을�그려�디자인을�만들어�내는�것이�가능한�시각적인�도구�
▪ ‘import�turtle’을�함으로써�turtle�모듈을�사용
turtle이�제공하는�메소드
3
14.1.�turtle�class
▪ 위의�표와�같이�작성하면�다음과�같은�화면이�생성된다.�이�화살표를�이동시키면서�선을�그려�도형을�만들�수�있다.
>>>�import�turtle�
>>>�turtlee�=�turtle.Turtle()
#�turtle모듈을�import함으로써�turtle이�제공하는�메소드를�사용할�수�있다.�#�새로�만들어지는�turtle�객체의�이름은�‘turtlee’로�지정한다.
4
기준�좌표
x축
y축
(0,0)�원점
5
turtle0.py�라고�저장하고�실행하면�atom�에디터에서�실행창이�뜨고나서��바로�사라진다�->�터틀�그래픽을�화면에�그린�후�실행을�마쳤으므로�곧바로�화면이�종료된다
turtle.done()�함수는�turtle�그래픽�화면을�붙잡아두는�역할을�한다�->�myturtle.done()�이�아니다!!!(�turtle.done()�으로�해야함�)�->�화면은�닫기�버턴을�클릭해서�닫는다�
14장.�turtle로�그림�그리기��turtle�객체�
14.2.�turtle�클래스가�제공하는�메소드
7
14.2.�turtle�클래스가�제공하는�메소드
▪ turtle이�제공하는�메소드를�써보기�위해�다음과�같이�‘myTurtle’라는�객체를�선언한다.�
▪ turtle에서는�turtle의�모양�및�크기,�색을�지정하고,�turtle의�움직이는�방향이나�거리를�정하여�선을�그리게�하는�등�여러�가지�메소드를�제공한다.
>>>�myTurtle�=�turtle.Turtle()
앞뒤로�움직이기
8
14.2.�turtle�클래스가�제공하는�메소드
9
turtle�객체의�모양�지정하기
10
14.2.�turtle�클래스가�제공하는�메소드
▪ turtle의�모양은�여러�가지로�지정할�수�있다.�
[예제]
turtle의�객체.shape(‘shape이름‘) turtle의�모양을�지정한�모양으로�변경�종류)�arrow,�turtle,�circle,�square,�triangle,�classic
11
turtle�객체의�색이나�크기�지정하기�(1/2)
12
14.2.�turtle�클래스가�제공하는�메소드
▪ 색이나�크기도�지정하는�대로�다음과�같은�메소드를�통해�바꿀�수�있다.�
[예제]
Turtle의�객체.shapesize(w,�h,�b) turtle의�크기를�원하는�세로�w,�가로�h,�윤곽선�b배로�변경
turtle�객체의�색이나�크기�지정하기�(2/2)
13
14.2.�turtle�클래스가�제공하는�메소드
▪ 색이나�크기도�지정하는�대로�다음과�같은�메소드를�통해�바꿀�수�있다.�
[예제]
Turtle의�객체.fillcolor(‘색�이름’)Turtle의�색을�지정한�색으로�변경�종류)�white,�red,�green,�blue…
turtle�그래픽�모듈의�Turtle()�객체를�만들어�myturtle�이라는�이름으로�부르자(참조라고�함)
[예제�14-2]�turtle�이동시키기�(1/2)
14
14.2.�turtle�클래스가�제공하는�메소드
[예제�14-2]�turtle�이동시키기�(2/2)
15
14.2.�turtle�클래스가�제공하는�메소드
각도�지정해서�움직이기
16
14.2.�turtle�클래스가�제공하는�메소드
▪ 앞서�turtle이�앞,�뒤로�움직이는데�각도를�지정해주어�모든�방향을�자유자재로�움직이도록�할�수�있다.��
▪ 각도를�지정하는�방식에는�여러�가지가�있는데,�이�중�대표적인�방법에는�2가지가�있다.��
[예제]
turtle의�객체.setheading(각도) 원점을�기준으로�지정한�각도만큼�방향을�바꿈
turtle의�객체.left(각도)�/�right(각도)
왼쪽�또는�오른쪽�방향으로�지정한�각도만큼�방향을�바꿈
17
18
[예제]
19
14.2.�turtle�클래스가�제공하는�메소드
[주의]�객체의�방향
20
14.2.�turtle�클래스가�제공하는�메소드
▪ 주의할�점은�객체의�방향을�정할�때�기준과�방향을�정확하게�알아야�한다는�것이다.��▪ setheading()�메소드를�사용하여�방향을�지정할�때는�turtle의�머리를�기준으로�왼쪽�방향으로�각도를�계산한다.�
▪ left()�혹은�right()�메소드를�사용할�때는�turtle의�머리�기준으로�왼쪽인지�오른쪽인지�잘�보고�각도를�지정하면�된다.�그래서�setheading(90)과�left(90)은�동일한�역할을�한다.�
21
22
23
import�~�as�구문�- “turtle이라는�모듈을�t라는�이름으로�import하라”�- turtle.shape()�대신에�t.shape()�으로�사용가능함
원�그리기
24
14.2.�turtle�클래스가�제공하는�메소드
▪ 원의�반지름을�지정하여�메소드를�호출하면�그에�해당하는�원을�그릴�수�있다.��▪ circle()은�turtle을�이용하여�더�심화되고�복잡한�그래픽적인�이미지를�만들어�낼�때�많이�쓰이는�메소드이다.��
[참고]�작업�도중�reset�하기�
▪ turtle�객체를�이용하다�보면�객체의�위치를�원위치인�중간으로�가져오거나�화면을�다시�초기�상태로�만들어야�할�때가�생긴다.��
▪ 또는�그림을�완성한�후�그림�본연의�모습을�보기�위해�객체를�숨기고자�하는�경우도�생기게�된다.�▪ 그럴�때�다음과�같은�메소드를�사용하여�진행한다.
turtle의�객체.circle(반지름�길이)
원점을�기준으로�지정한�반지름�길이에�해당하는�원을�그림
turtle의�객체.hideturtle() turtle을�숨김
turtle의�객체.home() turtle을�초기�위치로�되돌림
turtle의�객체.clear() 화면을�초기�상태로�되돌림
좌표로�움직이기
25
14.2.�turtle�클래스가�제공하는�메소드
▪ 좌표�기준으로�지정하는�turtle�객체�이동�방법이�있다.�▪ 원래�turtle�클래스의�객체는�지정된�x,�y�좌표�위에�나타나기�때문에�좌표를�활용하여�움직이면�된다.�
[예제]
Turtle의�객체.setposition(x좌표,�y좌표) Turtle의�위치를�지정한�좌표(x,y)로�바꿔줌
Turtle의�객체.position() Turtle의�현재�위치를�나타냄
[예제�14-4]�정사각형�만들기�(1/2)
26
14.2.�turtle�클래스가�제공하는�메소드
[예제�14-4]�정사각형�만들기�(1/2)
27
14.2.�turtle�클래스가�제공하는�메소드
펜�들고�내리기�(1/3)
28
14.2.�turtle�클래스가�제공하는�메소드
▪ turtle이�이동할�때�선이�그어지는�것에�대하�여부를�결정하고�싶을�때는�다음과�같은�메소드를�사용하면�된다.�
[예제]
turtle의�객체.penup() turtle의�pen이�놓여�짐.�이동할�때�선을�그리지�않음
펜�들고�내리기�(2/3)
29
14.2.�turtle�클래스가�제공하는�메소드
turtle의�객체.pendown() turtle의�pen이�들려짐.�이동할�때�선을�그림
▪ turtle�객체를�이동시키기�전,�선을�그리는�혹은�그리지�않는�상태의�여부를�알고�싶다면�다음과�같은�메소드를�사용하여�확인한다.
펜�들고�내리기�(3/3)
30
14.2.�turtle�클래스가�제공하는�메소드
turtle의�객체.isdown()turtle의�pen의�상태를�알려줌�펜이�놓여져�있으면�True,�놓여있지�않으면�False�반환
>>> turtlee.isdown() True
[실습�14-1]�penup�&�pendown�응용하여�심화된�그림�그리기
31
14.2.�turtle�클래스가�제공하는�메소드
[실습�14-1]�penup�&�pendown�응용하여�심화된�그림�그리기
32
14.2.�turtle�클래스가�제공하는�메소드
[실습�14-2]�눈사람�그리기
33
14.2.�turtle�클래스가�제공하는�메소드
[실습�14-2]�눈사람�그리기
34
14.2.�turtle�클래스가�제공하는�메소드
14장.�turtle로�그림�그리기��turtle�객체�
14.3.�조건문과�반복문�사용하여�동작�조절하기
조건문이나�반복문이�사용되는�이유
36
14.3.�조건문과�반복문�사용하여�동작�조절하기
▪ 앞서�배운�메소드들을�사용하여�별�모양을�그렸을�때,���������조건문이나�반복문이�없다면,�(a)와�같이�프로그램을�짜게�된다.�
�������하지만,�조건문이나�반복문이�들어간다면�(b)와�같은�짧은�프로그램으로�짤�수�있다.
[예제�14-5]�정오각형�그리기�(1/2)
37
14.3.�조건문과�반복문�사용하여�동작�조절하기
[예제�14-5]�정오각형�그리기�(2/2)
38
14.3.�조건문과�반복문�사용하여�동작�조절하기
14장.�turtle로�그림�그리기��turtle�객체�
14.4.�다른�클래스와�함께�turtle�사용하기
다른�클래스와�함께�사용하기
40
14.4.�다른�클래스와�함께�turtle�사용하기
▪ turtle�또한�클래스이므로�앞�장에서�배웠던�다른�클래스들도�함께�사용이�가능하다.�▪ 예를�들어,�random�클래스를�포함하여�turtle�객체의�이동�거리를�임의의�수를�주는�것이�가능하다.��
▪ 위와�같은�아이디어로�다양한�프로그램을�작성하는�것이�가능하다.��▪ 참고로�다른�클래스를�포함하여�프로그램을�작성할�때는�파일로�작성하는�것이�더욱�효율적이다.
[실습�14-3]�무작위로�움직이는�turtle
41
14.4.�다른�클래스와�함께�turtle�사용하기
[실습�14-3]�무작위로�움직이는�turtle
42
14.4.�다른�클래스와�함께�turtle�사용하기
43
[실습�14-4]�무작위로�움직이는��������������������여러�마리의�turtle
44
14.4.�다른�클래스와�함께�turtle�사용하기
[실습�14-4]�무작위로�움직이는��������������������여러�마리의�turtle
45
14.4.�다른�클래스와�함께�turtle�사용하기
[참고]�list를�이용하여�turtle�관리하기
46
14.4.�다른�클래스와�함께�turtle�사용하기
▪ turtle의�객체를�여러�개�생성하는�경우,�한꺼번에�관리하기�위해�list를�사용하는�것이�효율적이다.��
�����위의�[실습�14-4]�가�그�예이다.�
▪ 예를�들어,�4개의�turtle�객체를�생성하여�list인�turtles에�넣는다고�가정했을�때�프로그램은�다음과�같다.
47
48
49
다음과�같은�turtle�graphic을�그리시오�-�red,�green,�blue,�gray의�turtle�이�랜덤하게�움직임
50
[연습문제]
51
14.4.�다른�클래스와�함께�turtle�사용하기
2. 다음�프로그램의�잘못된�부분을�찾고,�고쳐�보아라.
[연습문제]
52
14.4.�다른�클래스와�함께�turtle�사용하기
3. 다음�요구사항에�맞추어�프로그램을�작성해보자.
▪ 참조
53
http://ivis.kr/index.php/2017_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%ED%84%B0%ED%8B%80%EA%B7%B8%EB%9E%98%ED%94%BD
54