Language/Python

[ Python ] 테세우스 터틀 미로 탈출 게임 프로그램

곽수진 2021. 9. 1. 23:32
반응형
테세우스 터틀이 화면에 그려진 미로의 벽에 닿지 않도록 ←, → 화살표 키로 조종하여 미로를 탈출하는 프로그램을 작성해보자.

 

import turtle
t=turtle.Turtle()
t.shape('turtle')
s=turtle.Screen()
t.speed(0)


def draw_maze(x,y):
    for i in range(2):
        t.penup()
        if i==1:
            t.goto(x+100, y+100)
        else:
            t.goto(x,y)
        t.pendown()
        t.forward(300)
        t.right(90)
        t.forward(300)
        t.left(90)
        t.forward(300)

def turn_left():
    t.left(10)
    t.forward(10)

def turn_right():
    t.right(10)
    t.forward(10)


draw_maze(-300,200)
s.onkey(turn_left,'Left')
s.onkey(turn_right,'Right')

t.penup()
t.goto(-300,250)
t.pendown()
s.listen()
s.mainloop()

▶️ draw_maze() 사용자 정의 함수를 생성해 두 번 반복하며 i값이 1일 경우, x와 y에 각각 100씩 더해준 좌표로 이동하고 그렇지 않은 경우에는 x,y로 이동함

→ 앞으로 300만큼 이동하고 오른쪽으로 90도 회전, 앞으로 300 이동하고 왼쪽으로 90도 회전, 다시 앞으로 300 이동해 미로를 그림

def draw_maze(x,y):
    for i in range(2):
        t.penup()
        if i==1:
            t.goto(x+100, y+100)
        else:
            t.goto(x,y)
        t.pendown()
        t.forward(300)
        t.right(90)
        t.forward(300)
        t.left(90)
        t.forward(300)

▶️ 사용자가 키보드를 이용해 왼쪽, 오른쪽으로 이동할 때는 각각 앞으로 10씩 이동하고 10도씩 회전

def turn_left():
    t.left(10)
    t.forward(10)

def turn_right():
    t.right(10)
    t.forward(10)

▶️ draw_maze 함수를 호출해 x와 y값에 -300, 200을 적용

→ 좌측 키를 누르면 왼쪽으로, 우측 키를 누르면 오른쪽으로 이동함

draw_maze(-300,200)
s.onkey(turn_left,'Left')
s.onkey(turn_right,'Right')

▶️ mainloop() : 사용자가 터틀 그래픽 창을 종료할 때까지 프로그램을 실행하면서 마우스나 키보드 입력을 계속 처리

 listen() : 키 입력모드가 실행되도록 하는 명령어

 

결과값 출력 모습

 

 

★ 오류 ★

화살표 키를 눌렀을 때 동작하는 함수를 정의하는 과정에서, "Left"와 "Right"를 소문자로 작성해 오류가 발생함

오류 발생 모습

반응형