본문 바로가기
Python 코딩도장

파이썬 코딩도장 Unit 21 정리 : 터틀 그래픽스

by chanfficial 2022. 1. 17.

Unit 21

터틀 그래픽스로 그림 그리기

 

1. 사각형 그리기

>>> import turtle as t
>>> t.shape('turtle')
  • 파이썬 셸에서 t.shape('turtle')까지 입력하면 파이썬 터틀 그래픽스 창이 표시된다.
  • t.shape는 거북이의 모양을 설정하며 초기 모양은 화살표 모양이다.

※ 이때 발생할 수 있는 에러들

1. ModuleNotFoundError: No module named ... : 모듈 이름을 잘못 입력했을 때 발생하는 에러이므로 turtle의 철자가 맞는지 확인해야 한다.

2. TurtleGraphicsError: There is no shape named ... : 거북이의 모양을 잘못 지정해서 발생하는 에러이므로 t.shape'turtle'로 입력했는지 확인해야 한다.

 

  • t.forward(100)나 t.backward(100)를 입력하여 거북이를 100픽셀만큼 앞이나 뒤로 이동시킬 수 있다.
    >>> t.forward(100)​

  • t.right(90)나 t.left(90)를 입력하여 방향을 왼쪽과 오른쪽으로 90도씩 회전시킬 수 있다.
    >>> t.right(90)​

  • 앞에서 사용한 방식들을 반복하여 사각형을 그릴 수 있다.
    >>> t.forward(100)
    >>> t.right(90)
    >>> t.forward(100)
    >>> t.right(90)
    >>> t.forward(100)
    >>> t.right(90)
    >>> t.forward(100)​


※ 이동 방법

  • 앞으로 이동 : forward, fd
  • 뒤로 이동 : backward, back, bk
  • 왼쪽으로 회전 : left, lt
  • 오른쪽으로 회전 : right, rt

 

2. 반복문을 이용하여 다각형 그리기

# 반복문으로 사각형 그리기
import turtle as t
 
t.shape('turtle')
for i in range(4): # 사각형이므로 4번 반복
    t.forward(100)
    t.right(90)

  • 다각형을 그리는 방법 : 다각형에서 외각의 합은 항상 360℃ 임을 기억한다.

  ex) 오각형을 그릴 때

  : 외각의 합은 항상 360℃이므로 사각형은 90℃가 4개 들어있는 것이다. 오각형도 이처럼 360을 5로 나누어 외각을 구      할 수 있다.

import turtle as t
 
t.shape('turtle')
for i in range(5):   # 오각형이므로 5번 반복
    t.forward(100)
    t.right(360 / 5) # 360을 5로 나누어서 외각을 구함

  • 위의 소스 코드를 응용하여 사용자가 입력한 숫자에 해당하는 다각형을 그릴 수 있다.
  • 단, 일각형과 이각형은 도형이 아니므로 숫자 1, 2를 입력하면 그릴 수 없다.
    import turtle as t
     
    n = int(input())     # 7 입력
    t.shape('turtle')
    for i in range(n):   # n번 반복
        t.forward(100)
        t.right(360 / n) # 360을 n으로 나누어서 외각을 구함​

입력한 숫자 7 -> 7각형이 그려짐

 

 

3. 다각형을 색칠하기

  • t.color()로 펜의 색을 설정할 수 있다.
  • 도형을 그리기 전 t.begin_fill()로 색칠할 준비를 하고 for 반복문으로 도형을 그린 뒤, t.end_fill()을 사용하면 도형에 현재 펜의 색이 칠해진다.
    import turtle as t
     
    n = 6    # 육각형
    t.shape('turtle')
    t.color('pink')       # 펜의 색을 분홍색으로 설정
    t.begin_fill()       # 색칠할 영역 시작
    for i in range(n):   # n번 반복
        t.forward(100)
        t.right(360 / n) # 360을 n으로 나누어서 외각을 구함
    t.end_fill()         # 색칠할 영역 끝​

 

4. 복잡한 도형 그리기

  • 터틀에서 원을 그릴 때는 circle을 사용한다.
    >>> import turtle as t
    >>> t.shape('turtle')
    >>> t.circle(120) # 반지름이 120인 원을 그림​

  • for문을 사용하여 원을 반복해서 그릴 수 있다.
    import turtle as t
     
    n = 30    # 원을 30번 그림
    t.shape('turtle')
    t.speed('fastest')      # 거북이 속도를 가장 빠르게 설정
    for i in range(n):
        t.circle(120)       # 반지름이 120인 원을 그림
        t.right(360 / n)    # 오른쪽으로 12도 회전​
    - 코드를 실행하면 그물망 모양이 나온다. 360 / 30 = 12 이므로 오른쪽으로 12도씩 회전하면서 원을 그리게 된다.

  • speed는 거북이의 속도를 설정하는데, 속도는 문자열 또는 숫자로 설정할 수 있다.(숫자는 0.5~10까지 가능)

   ex) 'fastest' : 0,  'fast' : 10,  'normal' : 6,  'slow' : 3

  • 선을 이용해서도 복잡한 무늬를 그릴 수 있다.
    import turtle as t
     
    t.shape('turtle')
    t.speed('fastest')    # 거북이 속도를 가장 빠르게 설정
    for i in range(300):  # 100번 반복
        t.forward(i)      # i만큼 앞으로 이동. 반복할 때마다 선이 길어짐
        t.right(91)       # 오른쪽으로 91도 회전​

※ 터틀의 shape에는 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic' 등을 지정하여 여러가지 터틀 모양을 사용할 수 있고, t.shape()와 같이 shape를 그래도 호출하면 현재 모양을 알아낼 수 있다.

>>> import turtle as t
>>> t.shape('arrow')  # 화살표 모양 사용
>>> t.shape()         # 현재 모양 알아내기
'arrow'