21.2 다각형 그리기

forward, right 등을 일일이 입력해서 그림을 그리려고 하니 좀 귀찮습니다. 이번에는 반복문을 사용해서 사각형을 그려보겠습니다.

square.py

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

소스 코드를 실행해보면 이렇게 사각형이 그려집니다. 간단하죠?

그림 21-6 for 반복문으로 사각형 그리기

21.2.1  오각형 그리기

그럼 오각형은 어떻게 그릴까요? 잠시 수학 시간에 배운 내용을 떠올려봅시다. 다각형에서 외각의 합은 항상 360도입니다. 그래서 사각형은 90도가 4개 들어있습니다(90 * 4 = 360). 오각형은 360을 5로 나누면 외각을 구할 수 있습니다.

pentagon.py

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

소스 코드를 실행해보면 이렇게 오각형이 그려집니다.

그림 21-7 for 반복문으로 오각형 그리기

21.2.2  다각형 그리기

그럼 이 소스 코드를 응용해서 사용자가 숫자를 입력하면 해당 숫자에 해당하는 다각형을 그려보겠습니다.

polygon.py

import turtle as t
 
n = int(input())        # 사용자의 입력을 받음
t.shape('turtle')
for i in range(n):      # n번 반복
    t.forward(100)
    t.right(360 / n)    # 360을 n으로 나누어서 외각을 구함

소스 코드를 실행한 뒤 6을 입력하고 엔터 키를 누르세요.

6 (입력)

6을 입력했으므로 육각형이 그려졌습니다. 각자 다양한 숫자를 입력해서 다각형을 그려보세요(단, 일각형과 이각형은 도형이 아니므로 그릴 수 없습니다).

그림 21-8 입력한 숫자에 해당하는 다각형 그리기

프로그래밍은 이런 방식으로 소스 코드를 일반화해 나가는 과정입니다. 처음에는 for i in range(4):t.right(360 / 4)처럼 숫자 4를 지정해서 사각형을 그렸습니다. 이때는 사각형만 그릴 수 있었습니다. 그 다음에는 4를 5로 바꿔서 오각형을 그렸습니다. 마지막에는 숫자 대신 n을 사용하여 원하는 모양의 다각형을 그릴 수 있었습니다. 즉, 공통된 부분을 일반화해서 원하는 결과를 얻어내는 과정이 프로그래밍이며 컴퓨테이셔널 씽킹입니다.

21.2.3  다각형에 색칠하기

지금까지 검정색으로만 그림을 그렸습니다. 이번에는 다각형에 색을 칠해보겠습니다. 여기서는 숫자 입력 과정은 생략하고 n에 6을 지정하여 육각형으로 만들겠습니다.

red_hexagon.py

import turtle as t
 
n = 6    # 육각형
t.shape('turtle')
t.color('red')          # 펜의 색을 빨간색으로 설정
t.begin_fill()          # 색칠할 영역 시작
for i in range(n):      # n번 반복
    t.forward(100)
    t.right(360 / n)    # 360을 n으로 나누어서 외각을 구함
t.end_fill()            # 색칠할 영역 끝

소스 코드를 실행해보면 빨간색 육각형이 나옵니다. 먼저 color는 펜의 색을 설정합니다. 여기서는 'red'를 지정하여 빨간색으로 만들었습니다. 그리고 도형을 그리기 전에 t.begin_fill()로 색칠할 준비를 합니다. 그다음에 for 반복문으로 도형을 그린 뒤에 t.end_fill()을 사용하면 도형에 현재 펜 색이 칠해집니다.

그림 21-9 빨간색 육각형 그리기
참고 | color에 색깔 지정하기

color에 색깔을 지정할 때 'red', 'green', 'blue', 'yellow', 'purple', 'brown', 'gray' 등 영어로 색 이름을 지정합니다. 하지만 색 이름만으로는 다양한 색상을 표현하기가 힘듭니다. 이때는 웹 색상(web color)을 사용하면 됩니다.

웹 색상은 #으로 시작하며 빨강(R), 초록(G), 파랑(B)에 해당하는 두 자리 16진수 세 쌍으로 구성되어 있습니다.

#000000: 검정

#FF0000: 빨강

#00FF00: 초록

#0000FF: 파랑

색상의 범위는 00부터 FF까지 사용할 수 있으며 빨강, 초록, 파랑을 조합해서 색상을 만듭니다.

t.color('#FF69B4')    # 핫핑크(hotpink)

웹 색상에 대한 자세한 내용과 색상을 생성하는 방법은 다음 URL을 참조하세요.

웹 색상: https://ko.wikipedia.org/wiki/웹_색상

HTML Color Picker: https://www.w3schools.com/colors/colors_picker.asp