안녕하세요! 김코딩입니다
파이썬의 turtle
모듈은 간단한 그래픽을 구현하는 데 유용한 도구입니다. 마우스를 직접 사용하지 않고도 코드만으로 그림을 그릴 수 있으며, 초보자들도 쉽게 사용할 수 있습니다. 특히, turtle
을 이용하면 간단한 미니 게임도 만들 수 있습니다. 이번 글에서는 Turtle로 그림을 그리는 방법과 간단한 벽돌 깨기 미니 게임을 만들어보겠습니다.
2. Turtle로 그림 그리기
Turtle을 이용하면 t.forward()
, t.right()
같은 명령어로 다양한 도형을 쉽게 그릴 수 있습니다. 아래 예제에서는 사각형을 그리는 방법을 보여줍니다.
import turtle
t = turtle.Turtle()
t.pensize(3)
t.speed(5)
# 사각형 그리기
for _ in range(4):
t.forward(100)
t.right(90)
turtle.done()

위 코드에서 t.forward(100)
은 거북이를 앞으로 100만큼 이동시키고, t.right(90)
은 90도 회전시키는 역할을 합니다. 이러한 기본적인 개념을 응용하면 더 다양한 그림을 만들 수 있습니다.
2.1 원형 패턴 그리기
다음은 turtle
을 사용하여 원형 패턴을 반복해서 그리는 예제입니다.
import turtle
t = turtle.Turtle()
t.speed(10)
for _ in range(36):
t.circle(50)
t.right(10)
turtle.done()
위 코드는 50 반지름의 원을 10도씩 회전하며 총 36번 반복하여 원형 패턴을 만듭니다.
3. Turtle로 간단한 미니 게임 만들기
Turtle을 활용하면 간단한 게임을 만들 수도 있습니다. 여기서는 벽돌 깨기 게임을 간단한 코드로 구현해보겠습니다.
3.1 벽돌 깨기 게임 코드 예제
# 1. 준비: 모듈과 기본 설정
import turtle
import time
# 화면 설정
screen = turtle.Screen()
screen.title("벽돌깨기 게임 - 김코딩")
screen.bgcolor("black")
screen.setup(width=800, height=600)
screen.tracer(0) # 수동 업데이트로 깔끔하게
# 2. 패들 만들기
paddle = turtle.Turtle()
paddle.speed(0) # 애니메이션 속도 (최대)
paddle.shape("square")
paddle.color("white")
paddle.shapesize(stretch_wid=1, stretch_len=5) # 크기 조절
paddle.penup()
paddle.goto(0, -250)
# 3. 공 만들기
ball = turtle.Turtle()
ball.speed(0)
ball.shape("circle")
ball.color("red")
ball.penup()
ball.goto(0, -230)
ball.dx = 1 # 공의 x 이동 속도
ball.dy = -1 # 공의 y 이동 속도
# 4. 벽돌 만들기
bricks = []
for i in range(5): # 5줄 벽돌
for j in range(8): # 한 줄에 8개
brick = turtle.Turtle()
brick.speed(0)
brick.shape("square")
brick.color("yellow")
brick.shapesize(stretch_wid=1, stretch_len=3)
brick.penup()
brick.goto(-350 + j * 100, 250 - i * 30)
bricks.append(brick)
# 5. 패들 움직이기 함수
def move_left():
x = paddle.xcor()
if x > -350: # 화면 경계 체크
paddle.setx(x - 20)
def move_right():
x = paddle.xcor()
if x < 350:
paddle.setx(x + 20)
# 6. 키보드 입력 연결
screen.listen()
screen.onkeypress(move_left, "Left")
screen.onkeypress(move_right, "Right")
# 7메인 루프
while True:
screen.update() # 화면 갱신
# 공 움직이기
ball.setx(ball.xcor() + ball.dx)
ball.sety(ball.ycor() + ball.dy)
# 벽에 부딪히면 튕기기
if ball.xcor() > 390: # 오른쪽 벽
ball.setx(390)
ball.dx *= -1
if ball.xcor() < -390: # 왼쪽 벽
ball.setx(-390)
ball.dx *= -1
if ball.ycor() > 290: # 위쪽 벽
ball.sety(290)
ball.dy *= -1
if ball.ycor() < -290: # 바닥
ball.goto(0, -230) # 다시 시작 위치로
ball.dy *= -1
# 패들과 충돌
if (ball.ycor() < -240 and ball.ycor() > -250 and
ball.xcor() > paddle.xcor() - 50 and ball.xcor() < paddle.xcor() + 50):
ball.sety(-240)
ball.dy *= -1
# 벽돌과 충돌
for brick in bricks[:]: # 리스트 복사본으로 반복
if (ball.distance(brick) < 40): # 거리가 가까우면
brick.hideturtle() # 벽돌 숨기기
bricks.remove(brick) # 리스트에서 제거
ball.dy *= -1 # 공 튕기기
# 모든 벽돌을 깼는지 확인
if not bricks:
ball.goto(0, 0)
ball.write("승리! 축하합니다!", align="center", font=("Arial", 24, "bold"))
break
# 게임 오버 체크 (바닥에 닿으면)
if ball.ycor() < -290:
ball.goto(0, 0)
ball.write("게임 오버!", align="center", font=("Arial", 24, "bold"))
break
time.sleep(0.01) # 속도 조절

이 코드는 화면 안에서 공이 튕기는 기본적인 게임 로직을 구현한 것입니다. 실제 벽돌 깨기 게임을 만들려면 패들(바)와 벽돌을 추가하면 됩니다.
4. 마무리
이번 글에서는 turtle
을 이용해 그림을 그리는 방법과 간단한 게임을 만드는 방법을 알아보았습니다. Turtle은 초보자에게 매우 유용한 그래픽 라이브러리이며, 이를 활용하면 창의적인 프로젝트를 많이 만들 수 있습니다. 다음 글에서는 turtle
을 활용한 좀 더 복잡한 게임을 만들어 보겠습니다.
다음 강좌에서 만나요! 😊
[…] 이번 시간에는 Turtle 모듈을 활용하여 재미있는 미니 게임 4가지를 만들어보겠습니다. Turtle은 기본적으로 그림을 그리는 용도로 많이 사용되지만, 이를 활용하면 간단한 게임도 쉽게 만들 수 있습니다. 이번 글에서는 다음과 같은 프로젝트를 다뤄볼 거예요. […]