티스토리 뷰

3.7 다양한 모양 그리기(Drawing Various Shapes)

- 파이썬의 터틀(turtle) 모듈은 펜의 움직임, 펜의 사이즈 지정, 펜을 들어올리기, 내리기 의 기능이 메소드(methods)로 구현되어 있다.

- 터틀 실제로 터틀 모듈을 임포드(import) 하였을 때 만들어지는 객체(objects)이다. 그리고 어떤 명령을 실행 하기위해 터틀 객체의 메소드를 호출 할 수 있다.

 

터틀(turtle)에 관한 기초 정리 포스팅을 보려면 *클릭*

 

터틀(turtle) 기본적 특징

- 터틀 객체가 만들어졌을 때, 터틀의 위치는 (0, 0)에 위치해 있다.

- 방향은 오른쪽을 향하고 있다.

- 터틀 모듈은 그림을 그리기 위한 펜(pen)을 이용한다고 생각하면 된다.

- 처음에는 펜이 내려가있는 상태로 시작한다.

- 펜이 내려가있는 상태에서 터틀을 움직이면, 원래있던 위치에서 이동할 위치까지 라인(line)을 그리며 이동한다.

 

* 터틀 펜 상태 메소드(Turtle Pen State Methods)

메소드(Methods) 

설명(Description) 

 turtle.penup()

 펜을 들어올린다. ~ 펜 이동 시 라인을 그리지 않는다.

 turtle.pendown()

 펜을 내린다. ~ 펜 이동 시 라인을 그리며 이동한다.

 turtle.pensize(펜 두께)

 펜의 두께를 지정한다.

 

* 터틀 모션 메소드(Turtle Motion Method)

메소드(Methods)

설명(Description)

 turtle.forward(d)

 터틀 머리가 가르키는 방향으로 d 만큼 이동

 turtle.backward(d)

 터틀 꼬리 방향으로 d 만큼 이동

 turtle.right(angle)

 터틀을 angle 만큼 오른쪽으로 방향 전환

 turtle.left(angle)

 터틀을 angle 만큼 왼쪽으로 방향 전환

 turtle.goto(x,y)

 터틀을 (x, y) 위치로 이동

 turtle.setx(p)

 터틀을 x축의 p 위치로 이동

 turtle.sety(p)

 터틀을 y축의 p 위치로 이동.

 turtle.setheading(angle)

 터틀이 바라보는 방향을 angle(각도) 만큼 변경 (0 - 오른쪽, 90 - 위, 180 - 왼쪽, 270 - 아래)

 turtle.home()

 터틀을 (0,0)으로 이동

 turtle.circle(r, ext, step)

 원(circle)을 그린다. (r = 반지름, ext = 이동할 길이, step = 원 반경내에 step 번 만큼의 다각형을 그린다.)

 * r은 필수 입력사항이며, ext와 step은 선택사항이다. step을 3으로 설정하면 삼각형이 그려진다.

 turtle.dot(diameter, color)

 터틀이 있는 위치에 반경 diameter 만큼의 원을 그린다.

 *cirlce()과 차이점은 circle은 터틀이 직접 그리고, dot은 터틀이 있는 위치에 원이 생성된다.

 turtle.undo()

 터틀이 이전에 했던 행동을 취한다.

 turtle.speed(s)

 터틀의 이동 속도를 지정한다.

* 빠른 이해를 위해 위의 코드들은 한번 씩 실습해보는 걸 권장해드립니다.

 

* 도형그리기 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import turtle as t
 
t.pensize(3)
 
#삼각형 만들기
t.penup()
t.goto(-200-50)
t.pendown()
t.circle(40, steps = 3)
 
#사각형 만들기
t.penup()
t.goto(-100,-50)
t.pendown()
t.circle(40, steps = 4)
 
#오각형 만들기
t.penup()
t.goto(0,-50)
t.pendown()
t.circle(40, steps = 5)
 
#육각형 만들기
t.penup()
t.goto(100,-50)
t.pendown()
t.circle(40, steps = 6)
 
#원 만들기
t.penup()
t.goto(200,-50)
t.pendown()
t.circle(40)
cs

 

 



3.8 색 및 폰트 지정하기(Drawing with Colors and Fonts)

-터틀 객체(turtle object)에는 색깔(colors) 폰트(fonts)지정할 수 있는 메소드를 가지고 있다.

 

* 터틀 펜의 색, 색채우기, 그리기 관련 메소드

메소드(Method) 

설명(Description) 

 turtle.color(c)

 펜의 색을 지정한다.

 turtle.fillcolor(c)

 펜에 채울 색을 지정한다.

 turtle.begin_fill()

 색채우기를 시작한다.

 turtle.end_fill()

 색채우기 완료 하고 끝낸다.

 turtle.filling()

 색채우기 상태를 반한한다. ~ 색이 채워져 있다면 true, 채워져 있지 않다면 false

 turtle.clear()

 창에 출력된 모든 것을 지운다. ~ 터틀의 상태와 위치는 바뀌지 않는다.

 turtle.reset()

 창에 출력된 모든 것을 지우고 상태와 위치를 모두 초기화 시킨다.

 turtle.screensize(w, h)

 배경의 넓이와 폭을 지정한다.

 turtle.hideturtle()

 터틀을 화면에 안보이게 한다.

 turtle.showturtle()

 터틀을 화면에 보이게 한다.

 turtle.isvisible()

 터틀이 화면에 보인다면 true를 반환한다.

 turtle.write(s, font=("Arial", 8, "normal"))

 터틀이 있는 위치에 문자열 s를 작성한다. font는 폰트이름, 폰트사이즈, 폰트 타입 순으로 구성한다.

 

* 도형 색칠하기 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import turtle as t
 
t.pensize(3)
 
#삼각형 만들기
t.penup()
t.goto(-200-50)
t.pendown()
t.begin_fill() # 색채우기 시작
t.color("red")
t.circle(40, steps = 3)
t.end_fill() # 색채우기 끝
 
#사각형 만들기
t.penup()
t.goto(-100,-50)
t.pendown()
t.begin_fill() 
t.color("blue")
t.circle(40, steps = 4)
t.end_fill()
 
#오각형 만들기
t.penup()
t.goto(0,-50)
t.pendown()
t.begin_fill() 
t.color("green")
t.circle(40, steps = 5)
t.end_fill()
 
#육각형 만들기
t.penup()
t.goto(100,-50)
t.pendown()
t.begin_fill() 
t.color("yellow")
t.circle(40, steps = 6)
t.end_fill()
 
#원 만들기
t.penup()
t.goto(200,-50)
t.pendown()
t.begin_fill() 
t.color("purple")
t.circle(40)
t.end_fill()
t.color("green")
t.penup()
t.goto(-100,50)
t.pendown()
t.write("도형 색칠하기",font = ("Times",18,"bold"))
 
t.done()
cs

 

 

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 

댓글