티스토리 뷰

안녕하세요 탐구소년입니다.

오늘은 제가 재미삼아 작성한 파이썬 코드를 올려보려고 합니다(정확히는 필요한 데가 있어서 작성한 것이긴 하지만, 아무튼). 제가 작성한 것은 바로 파이썬 그래픽 모듈인 turtle을 사용해서 만든 그림 그리기 프로그램입니다. 위의 이미지를 보시면 조그만 창 안에 'Python'이라는 단어가 쓰여져 있는 게 보이시죠? 저것은 다름아닌 제가 직접 창을 띄우고 키보드를 조작해서 그린(?) 것인데요. 위에 떠있는 거북이 한 마리가 붓 노릇을 하고, 그 녀석이 지나간 자리에 색깔이 입혀지게 되는 식입니다. 위와 같은 동작을 구현한 코드를 개인적으로 기록도 하고 필요한 누군가에게 참고 자료로도 공유할 겸 여기에 올리도록 할 테니, 누군가에게는 도움이 되길 바라봅니다.

 

 

코드(draw_with_turtle.py)

 

'''
키보드 입력에 따라 거북이가 움직이며
그림도 그릴 수 있는 파이썬 프로그램입니다.
by 탐구소년
'''
import turtle


# 각종 설정
player = turtle.Turtle()

player.color("#FFBB00") #색깔 정하기 with RGB code
player.shape("turtle") #모양 정하기
player.speed(0) #속도는 숫자가 작을수록 빠름
screen = player.getscreen()

player.penup() # 펜 들기 == 그림 그리지 않는 상태

# left, right 는 각도 변경
def left() :

    player.left(30)
def right():
    player.right(30)

# forward, backward 는 거리 이동
def up() :

    player.forward(30)
def down() :
    player.backward(30)

# circle 은 원의 크기
def circle() :

    player.circle(30)

# 최근동작 취소 (ctrl+z와 같은 동작)
def undo() :

    player.undo()

# 그림 그리기 여부 변경
def space() :

    if player.isdown() :
        player.penup()
    else :
        player.pendown()

# 프로그램(창) 끈다
def endProgram() :

    screen.bye()

# onkeypress(함수명, 키보드버튼명) :
# 어떤 버튼을 눌렀을 때, 이 함수가 동작하도록 하겠다!
screen.onkeypress(left, "Left")

screen.onkeypress(right, "Right")
screen.onkeypress(up, "Up")
screen.onkeypress(down, "Down")
screen.onkeypress(circle, "o")
screen.onkeypress(undo, "z")
screen.onkeypress(space, "space")
screen.onkeypress(endProgram, "q")
screen.listen() # 프로그램 활성화
screen.mainloop() # 프로그램이 계속 동작하는 상태를 유지하겠다
!

 

코드 설명은 주석만으로도 충분할 것 같으니, 동작 설명만 간단히 남기겠습니다.

 

- 일단 실행을 하면 창이 하나 뜨고 그 가운데에 거북이가 위치하게 됩니다.

- 거북이는 방향키로 움직입니다. 위, 아래 키를 누르면 앞뒤로 이동하고, 좌, 우 키를 누르면 각도를 좌우로 틉니다.

- 스페이스를 누르면 그림 그리기 여부가 변경됩니다. 그림 그리기 가능 상태에서는 움직일 때마다 흔적(?)을 남기면서 이동합니다.

- c 키를 누르면 원을 그립니다.

- z 키를 누르면 이전 동작을 취소합니다.

- q 키를 누르면 프로그램이 꺼지고 종료됩니다. 

 

저는 완성한 프로그램을 실행시켜서, 아래와 같은 결과물을 만들어낼 수 있었습니다. 

 

거북이를 움직여서 글씨를 쓰는 게 생각보다 쉽진 않더군요. 귀찮기도 하고(ㅋㅋ). 그래도 가끔씩 이렇게 장난스런 코드를 작성하는 건 재미있는 일 같습니다. 그럼 모두들 즐코딩하시길 바라며 이만 줄이겠습니다. 감사합니다^^

 

 

 

댓글
공지사항