본문 바로가기

Manual

파이썬 turtle, 도형을 이용한 꽃 그리기

목차

     1. 사각형으로 그리는 꽃
         1) turtle 모듈 사용하기
         2) 사각형 그리기
         3) 사각형으로 꽃 그리기 
     2. 오각형으로 그리는 꽃
         1) 오각형 그리기
         2) 오각형으로 꽃 그리기
         3) 반복 횟수와 크기 변화
     3. 펜 색 바꾸기
         1) 도형을 그리는 펜의 색 설정
         2) 펜 색이 순차적으로 바뀌게 하기
 

1. 사각형으로 그리는 꽃

     1) turtle 모듈 사용하기

turtle 모듈은 그림 그리기를 통해 아이들이 프로그래밍하는 방법을 배울 수 있도록 1967년 Wally Feurzeig, Seymour Papert 및 Cynthia Solomon이 개발한 것이라고 한다. 간단한 명령어를 조합하여 도형을 그리고, 만들어진 도형을 일정한 각도 만큼씩 회전한 위치에 반복해 꽃 모양이 되게 하려는 것이다.
turtle 모듈은 import 명령으로 불러와 사용할 수 있는데, 프로그래밍 중간에 반복해서 많이 사용해야 하므로 'turtle'이라고 전부 쓰지 않고 't'로 간단히 줄여 쓰기 위해서 import as t. 명령어를 사용한다.

import turtle as t

     2) 사각형 그리기

 사각형은 종이에 사각형을 그리는 것처럼 90˚로 이어진 선을 차례대로 4번 그리면 된다. 

  •  직선을 그리는 명령어 't.forward(거리)' 형식의 명령어를 사용한다.
  •  오른쪽으로 100만큼 선을 그리자.
t.forward(100)
  • 처음 그린 선과 직각으로 방향을 돌려 선을 그리기 위해 펜의 방향을 변경해야 한다.
  • 오른쪽으로 회전하는 것은 t.right(각도), 왼쪽으로 회전하려면 t.left(각도) 형식의 명령어를 사용한다. 
  • 오른쪽으로 90˚ 회전하자.
t.right(90)
  • 다시 직선을 그리고, 90˚ 회전하는 작업을 3번 더 하면 사각형이 완성된다.
  • 같은 코드를 4번 작성하지 않고, for 변수 in range(시작값, 끝값): 구문을 이용해 반복시킨다.
for i in range(0, 4):
    t.forward(100)
    t.right(90)

 

     3) 사각형으로 꽃 그리기 

사각형을 조금씩 회전한 위치에 반복하여 그려서 꽃 모양이 되게 한다. 출발 방향을 조금씩 회전시키면 되므로 t.right(각도) 명령어를 다시 사용하고, 10˚씩 변화시킨다. 한 바퀴(360˚) 회전하기 위해서는 10˚씩 36회 반복시키면 된다. 

for i in range(0, 36):
    t.right(10)

    for i in range(0, 4):
        t.forward(100)
        t.right(90)

직선 4개를 반복해 사각형을 그리는 부분10˚씩 36번 회전하게 하는 반복문 속에 넣었다.
          《결과》 

< 36개의 사각형으로 그린 꽃 >
t_square.py
0.00MB

  2. 오각형으로 그리는 꽃

사각형으로 그리는 꽃과 같은 방법을 사용하되 오각형을 사용하면 좀 더 아름다운 꽃 모양이 만들어질 것 같다. 

     1) 오각형 그리기

  • 오각형은 다섯개의 직선이 72˚( = 360˚ ÷ 5 )의 각을 이루며 이어져 있다.
  • 사각형을 그리는 코드에서 반복횟수(=5)와 각도(=72)만 바꾸면 된다.
  • 직선을 그리고, 72˚ 회전하는 것을 다섯 번 반복하면 된다. 
for i in range(0, 5):
    t.forward(100)
    t.right(72)

    2) 오각형으로 꽃 그리기

이번에는 오각형을 20˚씩 18번( = 360˚ ÷ 20 ) 반복시켜 보자.

for i in range(0, 18):
    t.right(20)

    for i in range(0, 5):
        t.forward(100)
        t.right(72)

          《결과》    

< 18개의 오각형으로 그린 꽃 >
t_pentagon.py
0.00MB

가운데 나타난 꽃잎 모양이 아름답다. 오각형 개수를 다르게 하면 다른 모양이 나와 재미있다.

< 12개의 오각형으로 그린 꽃 >
t_pentagon-2.py
0.00MB

    3) 반복 횟수와 크기 변화

도형 반복 횟수에 따라 다른 느낌의 꽃이 만들어지는 것이 재미있다. 도형 반복 횟수는 도형 간 각도 차이에 의해 정해진다.

  • 간격을 40˚로 지정하면 한 바퀴 회전하며 그리기 위해서는 9번(360˚ ÷ 40 = 9) 반복해야 한다.
  • 따라서 임의의 간격을 변수 gap이라 하면 반복횟수는 360/gap이 된다.
  • 이때, 반복 횟수는 반드시 정수가 나와야 하므로 int() 함수를 사용하여 나눈 값을 정수로 바꾼다.
for i in range(0, int(360/gap)):
    t.right(gap)

꼭짓점 수를 주고 지정한 꼭짓점 수를 가진 다각형을 그리게 하자.

  • 다각형에서 두 변 사이의 각은 (360˚ ÷ 꼭짓점 수)로  구할 수 있다.
  • 꼭짓점 수를 변수 apex에 저장하면, 두 변 사이의 각은 360/apex가 된다.
  • 한 변의 길이를 length라는 변수에 저장하여 꽃의 크기도 자유롭게 지정할 수 있게 한다. 
    for i in range(0, apex):
        t.forward(length)
        t.right(360/apex)

변수 gap, apex,length를 지정하는 부분을 제일 앞쪽에 두어, 다양한 숫자를 넣을 때 나타나는 모양 변화를 쉽게 비교할 수 있게 한다. 

gap = 40         # 도형 사이의 간격 
apex = 12        # 꼭짓점의 수(3~)
length = 50    # 한 변의 길이 

          《결과》   

< gap = 40, apex = 12, length = 50인 경우 >
polygonFlower.py
0.00MB

 

3. 펜 색 바꾸기

     1) 도형을 그리는 펜의 색 설절

  • turtle에서 그림을 그리는 펜의 색상은 t.pencolor("색상")로 지시한다. 
  • 색상은 '문자열(Red, Green, Blue, ...)'이나 숫자로 입력.
  • 예를 들어, 빨간색 펜으로 그리려면 t.pencolor("red")라는 명령어를 입력한다.

          《결과》 

< t.pencolor("red") >

         2) 펜 색이 순차적으로 바뀌게 하기

한 가지 색으로 반복해서 도형을 그리게 하는 것보다 도형을 그릴 때마다 색깔이 달라지게 하면 더 재미있겠다.

  • 순차적으로 그릴 색깔을 리스트 이름 = [ 쉼표로 구분된 리스트 요소 ] 형식을 써 리스트로 만든다.
  • 리스트 속에 있는 원소들은 리스트 이름[index] 함수로 하나씩 차례대로 꺼내어 쓸 수 있다.
  • 리스트의 index는 '0'부터 시작하므로, color_list 속의 첫 번째 원소는 color_list [0]이다. 
color_list = [ 'red','fuchsia', 'violet', 'orange', 'silver', 'aqua','teal', 'blue', 'olive', 'green', 'lime', 'maroon', 'purple', 'navy']

for i in range(0, int(360/gap)):
    t.right(gap)
    t.pencolor(color_list[i])

          《결과》 

< 도형의 색상이 순차적으로 변했다 >

  • 그런데, 도형 사이의 간격이 좁으면 그려야 하는 도형의 개수가 늘어난다.
  • 도형의 개수(= int(360/gap))가 리스트 속의 색깔 수보다 많게 되면 color_list[i]에 문제가 생긴다.
  • 도형의 개수와 상관없이 리스트의 index를 차례로 배정해야 한다.
  • 나머지를 구하는 연산자 '%'를 사용해 리스트의 원소 수로 나눈 나머지를 index에 배정하면 된다.
  • 리스트의 원소 수는 len(리스트 이름) 함수를 이용하여 구한다.
    t.pencolor(color_list[i % len(color_list)])

          《결과》 

< 36개의 도형에 14가지 색을 순차적으로 지정 >
polygonFlower_colpen.py
0.00MB

728x90