Python 기초

터틀 그래픽

개요

파이썬에서는 화면에 그림을 그릴 수 있는데 그 중 하나가 터틀 그래픽(turtle graphic)입니다.

터틀 그래픽은 커서(터틀)를 이용하여 그림을 그리는 기능입니다.

 

터틀은 3가지의 속성을 가집니다.

  • 위치(location)
  • 방향(orientation)
  • 펜(pen)

 

우리가 파이썬으로 거북이에게 이동 명령을 내리면 거북이가 지나가면서 펜으로 흔적을 남깁니다.

터틀 그래픽을 사용해보면 컴퓨터 그래픽의 기초를 학습하는데 도움을 줍니다.

또한 텍스트 위주의 실습보다 훨씬 재미있는 예제를 많이 실습해볼 수 있습니다.

 

파이썬 turtle 모듈 사용하기

우리가 터틀 그래픽을 사용하려면 이 기능을 제공하는 코드를 먼저 불러들여야 합니다.

파이썬에서는 이것을 모듈(module)이라고 하는데 모듈은 어떤 기능을 제공하는 코드의 묶음입니다.

 

파이썬에는 turtle이라는 모듈에서 점, 선, 곡선을 그릴 수 있는 벡터 그래픽 기능을 제공합니다.

 

 

위와 같은 빨간색 사각형을 그리기 위해서는 아래의 코드를 입력하면 됩니다.

 

import turtle

t = turtle.Pen()
t.shape("turtle")

t.pencolor("red")
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)

turtle.done()

 

위에 대한 코드 설명을 진행하겠습니다.

 

import turtle

turtle 모듈을 포함시키려면 위와 같은 명령어를 입력해야 합니다.

 

t = turtle.Pen()

터틀 그래픽을 사용하여 화면에 그림을 그리려면 캔버스가 필요한데, 캔버스는 다음과 같이 펜을 생성하여야 나타납니다.

 

t.shape("turtle")

화면에 거북이 대신 화살표가 있을텐데 귀여운 거북이를 커서로 사용하려면 위와 같은 코드를 작성합니다.

 

t.forward(100)

거북이를 움직이는 코드입니다. 여기서 100은 100 픽셀(pixel)을 의미합니다.

즉, 거북이가 앞으로 100 픽셀을 움직이며 직선을 그리게 됩니다.

 

t.right(90)

거북이의 방향을 바꾸려면 위와 같은 코드를 작성합니다. 오른쪽으로 90도만큼 회전하는 코드입니다.

 

t.forward(100)t.right(90)을 네 번씩 번갈아서 작성하면

 

 

위와 같은 사각형이 완성됩니다.

 

추가적으로 터틀 그래픽에서 알아두면 좋을 함수 몇 가지를 설명하겠습니다.

  • pencolor(colorstring)
    • 문자열로 펜의 색상을 설정합니다. colorstring 자리에 "red", "yellow", "#33cc8c"와 같은 문자열을 넣어 사용합니다.
  • pencolor((r, g, b))
    • RGB 컬러값으로 펜의 색상을 설정합니다. 색상은 (r, g, b)로 표현됩니다. r, g, b 값은 0 ~ 255 사이어야 합니다. 또는 0.0 ~ 1.0 도 가능합니다.
  • reset()
    • 터틀 그래픽에서 화면을 지우기 위해 사용합니다.
  • clear()
    • 화살표는 현재 위치에 그대로 두면서 화면을 지우기 위해 사용합니다.

 

간단한 반복문

프로그래밍에서는 반복을 해주는 구조도 필요합니다.

어떤 상황에서는 동일한 코드를 여러 번 실행하여야 하는 경우가 있는데 이것을 반복문이라고 합니다.

 

반복문은 뒤에서 자세히 다룰 예정이므로 여기에서는 간단하게만 알아두겠습니다.

 

while 조건 :
    명령어 (true)

 

어떠한 조건이 참일 때 반복을 진행하며 "조건이 참일 동안 명령어를 실행한다." 라는 의미를 지닙니다.

예제를 보도록 하겠습니다.

sign = "stop"

while sign == "stop":
	sign = input("현재 신호를 입력하시오: ") # 반복되는 부분은 들여쓰기

print("OK! 진행합니다.")

 

<실행 결과>

현재 신호를 입력하시오: stop # stop 을 입력함
현재 신호를 입력하시오: stop # stop 을 입력함
현재 신호를 입력하시오: stop # stop 을 입력함
현재 신호를 입력하시오: go!  # go! 를 입력함
OK! 진행합니다.

 

어떠한 값을 저장할 수 있는 공간을 변수라고 합니다. 여기서는 sign이 변수에 해당합니다.

sign이라는 변수를 "stop" 이라는 텍스트로 초기화하고 반복하며 사용자에게 현재 신호를 입력하게 합니다.

 

파이썬에서는 input()을 이용하면 사용자의 입력을 받을 수 있는데 위의 예제에서는 사용자가 입력한 신호가 sign 변수에 저장됩니다.

반복문을 사용하여 sign 변수가 "stop" 이면 계속 반복하면서 기다립니다. sign 변수가 "stop"이 아니면 반복을 벗어납니다.

 

파이썬에서 값이 같은지 비교할 때는 이중 등호(==)를 사용합니다. 단일 등호(=)는 변수에 값을 저장할 때 사용합니다.

 

반복문을 사용하는 터틀 그래픽

위에서 배운 터틀 그래픽을 반복문을 사용하여 그려보도록 하겠습니다. 아직 내용을 완벽하게 이해하지 않아도 되니 부담은 갖지 맙시다. :)

import turtle

t = turtle.Pen()
t.shape("turtle")

t.pencolor("red")

for i in [ 0, 1, 2, 3 ]:
	t.forward(100)
	t.right(90)

turtle.done()

 

100 픽셀 앞으로 가는 코드와 오른쪽으로 90도 회전하는 코드를 4번 반복하였습니다.

 

<실행 결과>

 

페이지 초반부에서 보았던 사각형과 같은 모양이 나왔지만 코드는 지금 작성한 내용이 훨씬 간단하죠?

이렇듯 같은 실행 결과일지라도 여러 가지 방법의 코드 작성이 가능합니다.

 

다음은 반복문을 사용하여 별을 그려보는 예제입니다.

import turtle

t = turtle.Pen()
t.shape("turtle")

t.pencolor("red")

for i in [ 0, 1, 2, 3, 4 ]:
	t.forward(100)
	t.right(144)

turtle.done()

 

100 픽셀 앞으로 가는 코드와 오른쪽으로 144도 회전하는 코드를 5번 반복하였습니다.

 

<실행 결과>

 

도전과제

터틀 그래픽으로 아래의 그림들을 그려보세요.

 

1. 초록색 펜으로 삼각형 그리기


2. 파란색 펜으로 오각형 그리기