본문 바로가기

Language/Python

[Python] 거북이로 x표시, 원 그리기

파이썬의 turtle 모듈은 대학교에서 파이썬 교양 수업이나 혹은 기초 파이썬 강의에서 맛보기로 기초적인 그림을 그릴 때 사용되는 모듈입니다. 

거북이로 그리는 것이 목적일 경우, 스크립트 모드 보다는 한 번씩 명령을 내려 그에 맞는 반응을 즉각적으로 하는 shell모드로 하는 것이 간편합니다. 명령을 내리고 바로 결과를 보면서 계속해서 코드를 입력할 수 있기 때문입니다.

아래 코드를 토대로 간단한 함수를 만들어보고자 합니다.

 

 

1.import turtle

먼저 이번 포스팅의 목적은 거북이를 통해 간단한 도형과 그림을 그리는 것입니다. 그러므로 import turtle을 작성하는 이유는 거북이를 통해 그림을 그릴 수 있는 모듈을 불러와야 하기 때문입니다. 그 역할을 하는 모듈이 바로 turtle.py죠.  turtle.py는 파이썬 내에 내장된 모듈로, 별도의 설치 없이 'import turtle'을 입력한 뒤 사용할 수 있습니다.

2.t=turtle.Turtle()

t는 거북이 객체라고 생각하시면 됩니다. 해당 라인은 거북이 객제 t를 생성한 문장으로, 이제 t를 통해서 다양한 함수들을 통해 그림을 그리는 것이 가능해집니다.

2.t=turtle.Turtle()을 실행하면 갑자기 창이 하나 뜨면서 가운데 화살표가 보입니다. 이 화살표는 't', 즉 위에서 설명했던 객체라고 보시면 됩니다. 그러나 원했던 거북이 모양이 아니므로 거북이 모양으로 바꿔줍니다. 

 

 

3.t.shape('turtle');
t라는 객체의 모양을 'turtle'(거북이)로 바꿔주겠다는 명령어를 입력합니다. 그러면 위 사진처럼 가운데의 t라는 이름의 객체가 거북이 모양으로 변한 것을 아실 수 있습니다.

 

4.t.penup(), t.pendown();

penup()과 pendown()이라는 함수가 있습니다.
penup()함수는 말 그대로 '펜을 들어올리다'입니다. 펜을 들어올린 상태에서는 아무리 손을 움직여 그림을 그리려 해도 종이에 잉크가 묻지 않죠.
pendown()함수는 '펜을 아래로 내린 상태'입니다. 펜을 종이에 내린 상태에서는 손을 움직여 그림을 그릴 때 종이에 잉크가 묻습니다. 즉, 두 함수의 차이는 '내가 펜을 들어올렸는지, 아닌지의 상태'로 비유해서 입력하시면 훨씬 수월할 것입니다.

 

5.t.goto(a,b);
goto(a,b)함수는 숫자 a와 b를 입력해서 그 입력된 두 숫자의 좌표로 이동하는 함수입니다. 이렇게 직선으로 움직일 경우, penup()과 pendown()함수를 사용하는 데 유의해야 합니다. 자칫하다가 이상하게 그어질 수 있어서..

>>> t.penup();
>>> t.goto(45,-45);
>>> t.pendown();
>>> t.goto(-45,45);
>>> t.penup();
>>> t.goto(-45,-45);
>>> t.pendown();
>>> t.goto(45,45);

위에서 설명했던 penup()과 pendown()함수를 같이 사용하여 간단하게 x표시를 그려보았습니다. x표시는 좌표를 기준으로 움직였고, 그 과정에서 penup()과 pendown()만 조금 유의해서 입력하면 됩니다.
x는 좌우 대칭형이기 때문에 각 꼭짓점의 위치는 (45,45),(-45,45),(45,-45),(-45,-45)로 잡아주었습니다.

 

6.t.circle(a);
ex) t.circle(100);

t.circle(a)의 a는 반지름입니다. 즉 a가 들어갈 공간에는 숫자를 입력해야 합니다.

바로 위 사진은 간단하게 반지름을 100으로 하는 원을 그린 거북이입니다. 거북이로 원을 그릴 때는, 각도와 방향이 매우 중요하므로 원하는 원을 그리고 싶을 때 right()함수나 left()함수 사용에 유의해야 합니다.