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 6 for 반복문으로 사격형 그리기

그럼 오각형은 어떻게 그릴까요? 잠시 수학 시간에 배운 내용을 떠올려봅시다. 다각형에서 외각의 합은 항상 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 7 for 반복문으로 오각형 그리기

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

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 입력한 숫자에 해당하는 다각형 그리기
그림 ‎21 8 입력한 숫자에 해당하는 다각형 그리기

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

지금까지 검정색으로만 그림을 그렸습니다. 이번에는 다각형에 색을 칠해보겠습니다. 여기서는 숫자 입력 과정은 생략하고 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 빨간색 육각형 그리기
그림 ‎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을 참조하세요.